ansible 剧本角色变量
ansible playbook role variable
ansible 的新手。
具有以下作用,例如:my-role
- 我无法覆盖剧本中的默认变量
以下文件:
my-role/tasks/main.yml
my-role/defaults/main.yml
sample-playbook.yml
my-role/tasks/main.yml
- name: "Add Test User"
user: name={{ my_config_test_user }} comment="{{ my_config_test_user }}" group={{ my_config_test_user }}
my-role/defaults/main.yml
my_config_test_user: "test"
剧本:
- name: TestCase
hosts: all
remote_user: root
vars:
my_config_test_user: "override"
roles:
- my-role
在任务中 my_config_test_user
的值保持 test
而不是我预期的结果 override
有什么提示吗?
问候
在当前版本的 Ansible 优先顺序中说 my_config_test_user
的值应该是 override 而不是 test 所以我想你可能在某处打错了字。也许变量拼写不正确?
我建议暂时删除 defaults/main.yml 以确保您不会收到未定义变量错误。我还建议使用调试模块来检查 tasks/main.yml
中变量的值
- debug: var={{ my_config_test_user }}
此处供参考的是当前版本的 Ansible 中的优先顺序(从最大的开始):
- 在命令行上设置的变量 -e foo=set_on_cmd_line
- Vars set in the vars_files: block in the play
- 剧中vars:块中设置的变量
- 在 host_vars/
中设置的变量
- 在 group_vars/
中设置的变量
- 角色默认变量角色/.../defaults/main.yml
ansible 的新手。
具有以下作用,例如:my-role
- 我无法覆盖剧本中的默认变量
以下文件:
my-role/tasks/main.yml
my-role/defaults/main.yml
sample-playbook.yml
my-role/tasks/main.yml
- name: "Add Test User"
user: name={{ my_config_test_user }} comment="{{ my_config_test_user }}" group={{ my_config_test_user }}
my-role/defaults/main.yml
my_config_test_user: "test"
剧本:
- name: TestCase
hosts: all
remote_user: root
vars:
my_config_test_user: "override"
roles:
- my-role
在任务中 my_config_test_user
的值保持 test
而不是我预期的结果 override
有什么提示吗?
问候
在当前版本的 Ansible 优先顺序中说 my_config_test_user
的值应该是 override 而不是 test 所以我想你可能在某处打错了字。也许变量拼写不正确?
我建议暂时删除 defaults/main.yml 以确保您不会收到未定义变量错误。我还建议使用调试模块来检查 tasks/main.yml
中变量的值- debug: var={{ my_config_test_user }}
此处供参考的是当前版本的 Ansible 中的优先顺序(从最大的开始):
- 在命令行上设置的变量 -e foo=set_on_cmd_line
- Vars set in the vars_files: block in the play
- 剧中vars:块中设置的变量
- 在 host_vars/ 中设置的变量
- 在 group_vars/ 中设置的变量
- 角色默认变量角色/.../defaults/main.yml