在ansible中如何在同一语句中使用if-elif和else-jinja条件

在ansible中如何在同一语句中使用if-elif和else-jinja条件,ansible,jinja2,Ansible,Jinja2,下面是我在ansible中的元文件部分 --- dependencies: - { role: nomad-agent, nomad_agent_type: client, client_dc: "{{ 'jira' if 'jira-app' in host_name else host_env }}", nomad_servers: ["{{ nomad1_ip }}","{{ nomad2_ip }}","{{ nomad3_ip }}"],

下面是我在ansible中的元文件部分

---
dependencies:
- { role: nomad-agent,
      nomad_agent_type: client,
      client_dc: "{{ 'jira' if 'jira-app' in host_name else host_env }}",
      nomad_servers: ["{{ nomad1_ip }}","{{ nomad2_ip }}","{{ nomad3_ip }}"],
      tags: "nomad-agent"
  }
在client_dc选项中,我需要添加elif,以便在主机名中找到“jira next”时,client_dc将被分配到“jira next”。 所以,如果在主机名中找到“jira app”,那么client_dc:jira 如果在主机名中找到“jira next app”,则客户端:jira next 否则,客户端\u dc:主机\u名称(变量文件中预先分配的变量)

我怎样才能做到这一点呢?

试试这个:

  client_dc: "{% if 'jira-app' in hostname %}jira{% elif 'jira-next' in hostname %}jira-next{% else %}{{ hostenv }}{% endif %}"

在Ansible Jinja中使用else if的另一个示例

- name: Set Service status
   set_fact:
     service_status: "{{ 'Not Installed' if status is not defined else ( 'Running' if status == 200 else 'Not Running' ) }}"

如果愿意,还可以添加换行符以提高可读性。