这是我的,如果其他的话Ansible逻辑..

- name: Check certs exist
  stat: path=/etc/letsencrypt/live/{{ rootDomain }}/fullchain.pem
  register: st

- include: ./_common/check-certs-renewable.yaml
  when: st.stat.exists

- include: ./_common/create-certs.yaml
  when: not st.stat.exists
这段代码可以归结为:

这是否是正确的方法,或者是否有更好的方法处理IF ELSE构造?

最佳答案

您在那里所拥有的应该起作用,并且是实现它的一种方式。

或者,您可以使用Jinja查询将其减少为2个任务,例如:

 - name: Check certs exist
   stat: path=/etc/letsencrypt/live/{{ rootDomain }}/fullchain.pem
   register: st

- include: "{{ './_common/check-certs-renewable.yaml' if st.stat.exists else './_common/create-certs.yaml' }}"

但是,与其他任何事情相比,这更多的是个人喜好问题,而且您的方式更具可读性,因此我只会坚持使用恕我直言。

关于ansible - ansible if else构造,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42037814/

10-12 18:00