ubuntu-14.04 - ansible 条件 "when"不适用于角色

标签 ubuntu-14.04 yaml ansible

在我的剧本中,我有一个根据剧本命令中的版本执行角色的条件,但当我添加 version=8 时,它会执行两个角色

- hosts: tomcat-servers
  remote_user: root
  become: yes
  become_method: sudo

  pre_tasks:
    - debug: var=version
  roles:
    - { role: tomcat7, when: version == '7' }
    - { role: tomcat8, when: version == '8' }

命令:

ansible-playbook -i hosts site.yml --extra-vars "version=8"

用于调试输出:

TASK [debug] *******************************************************************
ok: [192.168.139.129] => {
    "version": "8"
}

有什么帮助吗?

ansible 2.1.0.0

最佳答案

(上面的 Pastebin 的示例输出)

ubuntu# ansible-playbook -i hosts site.yml --extra-vars "version=8"

PLAY [tomcat-servers] **********************************************************

TASK [setup] *******************************************************************
ok: [192.168.139.129]

TASK [debug] *******************************************************************
ok: [192.168.139.129] => {
    "version": "8"
}

TASK [tomcat7 : Install Java 1.8] **********************************************
skipping: [192.168.139.129]

[..]
TASK [tomcat8 : Install Java 1.8] **********************************************
ok: [192.168.139.129]

TASK [tomcat8 : add group "tomcat"] ********************************************
ok: [192.168.139.129]

[...]
PLAY RECAP *********************************************************************
192.168.139.129            : ok=14   changed=0    unreachable=0    failed=0

从上面的任务可以看出,有两种类型:

  1. 跳过:[192.168.139.129]
  2. 好的:[192.168.139.129]

这是 ansibles 通知您任务是否执行的方式。

因此,当您指定version=8时,您仅执行tomcat8角色,但tomcat7任务将显示为skipped

如果启用颜色,您可以看到任务的不同颜色(已跳过 = 蓝色,已更改 = 黄色)

enter image description here

关于ubuntu-14.04 - ansible 条件 "when"不适用于角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783208/

相关文章:

Ubuntu 14.04 上的 PYTHONPATH 命令

arrays - 来自用户输入的 Bash 数组键

ansible - 使用ansible和if语句创建逻辑卷

amazon-web-services - 使用具有主从配置的 Ansible-Pull 自动扩展 AWS 实例

ansible - 如何在Jinja2中选择正则表达式匹配?

linux - Ubuntu - 无法纠正问题,你持有损坏的软件包

linux - 在 apt-get upgrade 或 apt-get dist-upgrade 中强制不提示

azure - 如何在 Azure DevOps YAML 的条件中使用数组

kubernetes - Helm Chart - 处理多行文件结果

php - Symfony 1.4 导入资源 yml