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 中的优先顺序(从最大的开始):

  1. 在命令行上设置的变量 -e foo=set_on_cmd_line
  2. Vars set in the vars_files: block in the play
  3. 剧中vars:块中设置的变量
  4. 在 host_vars/
  5. 中设置的变量
  6. 在 group_vars/
  7. 中设置的变量
  8. 角色默认变量角色/.../defaults/main.yml