ansible playbook角色变量

Hel*_*hka 5 ansible ansible-playbook

相当新的ansible.具有以下角色,例如:my-role- 我无法覆盖剧本中的默认变量

以下文件:

my-role/tasks/main.yml
my-role/defaults/main.yml
sample-playbook.yml
Run Code Online (Sandbox Code Playgroud)

我的角色/任务/ main.yml

- name: "Add Test User"
  user: name={{ my_config_test_user }} comment="{{ my_config_test_user }}" group={{ my_config_test_user }}
Run Code Online (Sandbox Code Playgroud)

我的角色/默认/ main.yml

my_config_test_user: "test"
Run Code Online (Sandbox Code Playgroud)

剧本:

- name: TestCase
  hosts: all
  remote_user: root
  vars:
    my_config_test_user: "override"
  roles:
    - my-role
Run Code Online (Sandbox Code Playgroud)

在任务中my_config_test_user停留的价值test而不是我预期的结果override

任何提示?

问候

jar*_*arv 15

在当前版本的Ansible优先顺序中,my_config_test_user应该覆盖不应该测试的值,所以我认为你可能在某个地方有一个错字.也许变量拼写不正确?

我建议暂时删除defaults/main.yml以确保您没有得到未定义的变量错误.我还建议使用调试模块来检查tasks/main.yml中变量的值

- debug: var={{ my_config_test_user }}
Run Code Online (Sandbox Code Playgroud)

这里的参考是当前版本的Ansible中的优先顺序(从最大的开始):

  1. 在命令行上设置的变量-e foo = set_on_cmd_line
  2. 在vars_files中设置的Vars:在游戏中阻止
  3. 在vars中设置的Vars:在游戏中阻止
  4. 在host_vars /中设置的变量
  5. 在group_vars /中设置的变量
  6. 角色默认变量角色/.../defaults/main.yml