ansible if else构造

时间:2017-02-04 07:37:29

标签: ansible ansible-2.x

继承我的if else 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

此代码归结为:

  

如果存在证书

     

续订证书

     

ELSE

     

创建证书

     

END IF

这是正确的方法还是有更好的方法来处理ansible中的IF ELSE结构?

3 个答案:

答案 0 :(得分:13)

你在那里应该工作,并且是这样做的一种方式。

或者,您可以使用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' }}"

然而,这更多的是个人偏好而不是其他任何事情,而且你的方式更具可读性,所以我会坚持使用那个恕我直言。

答案 1 :(得分:2)

如果要搜索寄存器是否为空,可以使用以下方法。如果找不到 php -version 信息,则打印 msg Unavailable。如果找到,则打印命令的输出。

enter image description here

答案 2 :(得分:1)

{%-if ansible_distribution =='ubuntu'-%}文本或变量{%-else-%}其他文本{%-end%-}类似于if else语句怎么样?它们已在ansible的某些项目中使用。