ansible playbook角色变量

时间:2015-05-19 13:33:16

标签: ansible ansible-playbook

对安塞斯来说相当新鲜。 具有以下作用,例如:my-role - 我无法覆盖剧本中的默认变量

以下文件:

my-role/tasks/main.yml
my-role/defaults/main.yml
sample-playbook.yml

我的角色/任务/ main.yml

- name: "Add Test User"
  user: name={{ my_config_test_user }} comment="{{ my_config_test_user }}" group={{ my_config_test_user }}

我的角色/默认/ 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

任何提示?

问候

1 个答案:

答案 0 :(得分:15)

在当前版本的Ansible优先顺序中,my_config_test_user的值应该覆盖而不是 test 所以我认为你可能在某处有拼写错误。也许变量拼写不正确?

我建议暂时删除defaults / main.yml,以确保不会出现未定义的变量错误。我还建议使用调试模块来检查tasks / main.yml

中变量的值
- debug: var={{ my_config_test_user }}

此处的参考是当前版本的Ansible中的优先顺序(以最大值开头):

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