ansible if else构造

dan*_*y74 17 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
Run Code Online (Sandbox Code Playgroud)

此代码归结为:

IF证书存在

续签证书

其他

创建证书

万一

这是正确的方法还是有更好的方法来处理ans ELSE的IF ELSE?

Wil*_*ich 16

你有什么应该工作,是一种方法.

或者,您可以使用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' }}"
Run Code Online (Sandbox Code Playgroud)

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

  • 如果该值是变量怎么办?假设: else './_common/{{ file }}' (2认同)

TRi*_*s43 10

那么以下情况呢:

condition_arg: >-
  {%- if ansible_distribution == 'Ubuntu' -%}
  'param for ubuntu'
  {%- elif ansible_distribution == 'Debian' -%}
  'params for debian'
  {%- else -%}
  'what else'
  {%- end -%}
Run Code Online (Sandbox Code Playgroud)

某种if-else声明..?它们已与 Ansible 一起用于一些项目中。此表单无法从官方文档中获得,但可以从stackexchange上的活动线程中获得。

  • 这听起来更像是评论而不是答案。你能重写这个以使其不那么含糊吗?谢谢! (4认同)