ansible if else 构造

ansible if else construct

这是我的 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

这段代码归结为:

IF certs exist

renew certs

ELSE

create certs

END IF

这是正确的方法还是有更好的方法来处理 ansible 中的 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' }}"

但是,这更多是个人喜好问题,而且您的方式更具可读性,所以我会坚持使用恕我直言。

下面的呢

condition_arg: >-
  {%- if ansible_distribution == 'Ubuntu' -%}
  'param for ubuntu'
  {%- elif ansible_distribution == "Debian" -%}
  'params for debian'
  {%- else -%}
  'what else'
  {%- end %-}

一种 if-else 语句.. ?它们已在一些带有ansible的项目中使用。 此表格无法从官方文档中获得,但可以从 stackexchange

上的一个活跃线程中获得

如果要查找一个寄存器是否为空,可以使用下面的方法。如果 php -version 信息不是 found.If,则打印 msg Unavailable,它打印命令的输出。