ansible条件句;什么时候;不适用于角色
在我的playbook中,我有一个根据playbook命令中的版本执行角色的条件,但当我添加version=8时,它会执行这两个角色ansible条件句;什么时候;不适用于角色,ansible,ubuntu-14.04,yaml,ansible-playbook,Ansible,Ubuntu 14.04,Yaml,Ansible Playbook,在我的playbook中,我有一个根据playbook命令中的版本执行角色的条件,但当我添加version=8时,它会执行这两个角色 - hosts: tomcat-servers remote_user: root become: yes become_method: sudo pre_tasks: - debug: var=version roles: - { role: tomcat7, when: version == '7' } - { r
- 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的样本输出)
从上面的任务可以看出,有两种类型:
version=8
时,您只执行tomcat8角色,但tomcat7任务显示为跳过的
如果启用颜色,则可以看到任务的不同颜色(跳过=蓝色,更改=黄色)
这太奇怪了,我在当地试过,没问题。你能添加一个
pre\u tasks
来调试打印版本值吗?我是ansible的初学者,你能告诉我怎么做吗请在页面中搜索pre\u tasks
,以获取示例。您需要执行类似于-debug:var=version
()的操作。谢谢,我用输出控制台更新了我的问题。您还可以粘贴示例输出吗?(如果角色步骤太多,则截断它们)要禁用显示跳过的任务,请参阅
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