ec21
,ec22
和ec23
。ec22
失败时ec21
运行,ec23
失败时ec22
运行。现在,我还有另一个任务在它下面的任务是:
那么,如何在此处设置
ec2x
?原因,我的3个任务中的任何一个都可以运行。因此,它可以是ec2x
或ec21
或ec22
。那么,如何在它们之后的添加任务中动态地写出来呢?#1 楼
它听起来很脏,但我想类似的方法会起作用:- name: ec21
[...]
register: ec21_result
- set_fact: end_result= "{{ ec21_result }}"
when: ec21_result|succeeded
- name: ec22
[...]
register: ec22_result
when: ec21_result|failed
- set_fact: end_result= "{{ ec22_result }}"
when: ec22_result|succeeded
- name: ec23
[...]
register: ec23_result
when: ec22_result|failed
- set_fact: end_result= "{{ ec23_result }}"
when: ec23_result|succeeded
- name: Add new instance to host group
add_host:
hostname: "{{ item.private_ip }}"
groupname: launched
with_items: "{{ end_result.instances }}"
成功完成播放后,基本设置
end_result
。
评论
似乎可以工作。但是,这个小问题阻碍了整个工作:D。可能知道如何阻止失败的set_facts任务设置空值吗?
– Dawny33♦
17年5月8日在12:20
您的意思是,如果ec22正常,然后ec23失败,那么事实将被设置为空值?您的Ansible版本是什么?
– ArbustRe
17年5月9日在13:41