ansible set_fact if-else 失败

Dhi*_*esh 1 if-statement ansible

我正在尝试使用 if-else 根据条件设置 set_fact 值,以下是我用于 if-else 条件的语法。

- name: set the server details
  set_fact:
    ad_server: "{{ '{{ server.westeurope }}' if ('{{ ansible_local.vdc.location }}' == 'westeurope') else '{{ server.eastus2 }}' }}"
    ad_server_ip: "{% if'{{ ansible_local.vdc.location }}'=='westeurope' %}{{ server_ip.westeurope }}{% else %}{{ server_ip.eastus2 }}{% endif %}"

- debug:
    msg: "{{ ansible_local.vdc.location }},{{ ansible_local.vdc.binaryrepo_url }},{{ ad_server }},{{ ad_server_ip }}"
Run Code Online (Sandbox Code Playgroud)

我已经用下面提到的细节声明了我的变量部分:

server:
  westeurope: WIN030123
  eastus2: WIN100270
server_ip:
  westeurope: 10.x.x.x
  eastus2: 10.x.x.x
Run Code Online (Sandbox Code Playgroud)

我的 if-else 条件无法获取 if 语句的值,并且始终获取 else 条件的值..有人可以为我提供这种情况的正确语法吗?

Bat*_*thz 5

使用 Jinja2 有不同类型的标记来定义逻辑和变量扩展,更多信息请参见 Jinja2 Ansible 页面

因此,如果您想在同一行上进行逻辑(分支)和变量扩展,就像在您的第一个事实设置中一样:

    ad_server: "{% if ansible_local.vdc.location == 'westeurope' %}{{ server.westeurope }}{% else %}{{ server.eastus2 }}{% endif %}"
Run Code Online (Sandbox Code Playgroud)

请尝试一下。