如何在Ansible中通过vars_prompt传递变量值至roles
Ansible vars_prompt传递变量到roles的问题解决
需求可行性
完全可行,通过vars_prompt获取的输入变量可以直接用来动态指定要执行的Ansible role。
错误原因及解决方法
你遇到的Error! environment is undefined错误是变量名拼写错误导致的:在roles字段中你写的是{{ environmet }},但实际定义的变量名是environment(少了一个字母n)。
修正后的完整playbook如下:
- name: Topic creation hosts: all vars_prompt: - name: environment prompt: "Enter the environment" private: no roles: - "{{ environment }}"
额外注意事项
- 确保输入的
environment值与你本地roles目录下的role名称完全匹配,否则会出现找不到role的错误。 - 如果需要对输入值做校验,可以在
vars_prompt中添加validate参数,比如限制输入只能是合法环境值:vars_prompt: - name: environment prompt: "Enter the environment (dev/test/prod)" private: no validate: "{% if not (value in ['dev', 'test', 'prod']) %}fail{% endif %}"
内容的提问来源于stack exchange,提问作者Srikanth Venugopalan
相关产品推荐
相关产品推荐

