【问题标题】:ansible playbook role variableansible剧本角色变量
【发布时间】:2015-07-31 08:56:40
【问题描述】:

对 ansible 来说相当陌生。 具有以下角色,例如:my-role - 我无法覆盖剧本中的默认变量

以下文件:

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

我的角色/tasks/main.yml

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

我的角色/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 ansible-playbook


    【解决方案1】:

    在当前版本的 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_files 中设置的变量:在播放中阻止
    3. 在 vars 中设置的 vars:在剧中阻止
    4. 在 host_vars/ 中设置的变量
    5. 在 group_vars/ 中设置的变量
    6. 角色默认变量角色/.../defaults/main.yml

    【讨论】:

    • 非常感谢!!!这是一个错字,并且移开默认文件显示了它:) 很多很多谢谢-它吓坏了我-我阅读了整个文档等等,还为您的变量优先级列表+1!
    猜你喜欢
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 2017-01-06
    相关资源
    最近更新 更多