例如,我有3个任务,分别注册为ec21ec22ec23

ec22失败时ec21运行,ec23失败时ec22运行。

现在,我还有另一个任务在它下面的任务是:

那么,如何在此处设置ec2x?原因,我的3个任务中的任何一个都可以运行。因此,它可以是ec2xec21ec22。那么,如何在它们之后的添加任务中动态地写出来呢?

#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