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 条件的值..有人可以为我提供这种情况的正确语法吗?
使用 Jinja2 有不同类型的标记来定义逻辑和变量扩展,更多信息请参见 Jinja2 Ansible 页面。
因此,如果您想在同一行上进行逻辑(分支)和变量扩展,就像在您的第一个事实设置中一样:
ad_server: "{% if ansible_local.vdc.location == 'westeurope' %}{{ server.westeurope }}{% else %}{{ server.eastus2 }}{% endif %}"
Run Code Online (Sandbox Code Playgroud)
请尝试一下。