ansible 条件 "when" 不适用于角色
ansible conditional "when" not works with role
在我的剧本中,我有条件根据剧本命令中的版本执行角色,但当我添加版本=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
从上面的任务可以看出有两种类型:
- 跳过:[192.168.139.129]
- 确定:[192.168.139.129]
这是通知您任务是否执行的可靠方式。
所以当你指定version=8
时,你只执行tomcat8角色,但是tomcat7任务显示为skipped
。
如果启用颜色,您可以看到任务的不同颜色(跳过 = 蓝色,更改 = 黄色)
在我的剧本中,我有条件根据剧本命令中的版本执行角色,但当我添加版本=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
从上面的任务可以看出有两种类型:
- 跳过:[192.168.139.129]
- 确定:[192.168.139.129]
这是通知您任务是否执行的可靠方式。
所以当你指定version=8
时,你只执行tomcat8角色,但是tomcat7任务显示为skipped
。
如果启用颜色,您可以看到任务的不同颜色(跳过 = 蓝色,更改 = 黄色)