当前位置:  开发笔记 > 编程语言 > 正文

Ansible变量覆盖默认为另一个角色

如何解决《Ansible变量覆盖默认为另一个角色》经验,为你挑选了0个好方法。

我不确定如何在Ansible中的角色之间覆盖变量.

为了简化设置,我将两个角色应用于同一主机.第一个角色在其中定义一个变量default/main.yml:

do_some_task: yes

并在其任务中查找该变量:

- name: Some Task
  when: do_some_task

第二个角色覆盖其中的vars/main.yml,它应该优先于默认值:

do_some_task: no

但是,该任务仍在运行,表明该变量未被覆盖.似乎覆盖范围限定为第二个角色的任务.我通过向两个角色添加调试任务来测试它:

- name: Test some task
  debug: "msg='do_some_task = {{ do_some_task }}'"

这证实了第一个角色看到的变量值与第二个角色不同.

TASK: [role1 | Test some task]
ok: [myhost] => {
    "msg": "do_some_task = True" 
}

...

TASK: [role2 | Test some task]
ok: [myhost] => {
    "msg": "do_some_task = False" 
}

对此的常见答案似乎是在库存或主机变量中设置变量.然而,这不是特别干:如果你有不同库存的许多主机,你必须在很多地方设置相同的变量.

那么是否有某种方法可以覆盖另一个角色的变量?

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有