If statement 如果else失败,则ansible set_事实
我试图使用if-else根据条件设置_事实值,下面是我用于if-else条件的语法If statement 如果else失败,则ansible set_事实,if-statement,ansible,If Statement,Ansible,我试图使用if-else根据条件设置_事实值,下面是我用于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'{{ ansi
- 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 }}"
我已经声明了我的变量部分,详细信息如下所述:
server:
westeurope: WIN030123
eastus2: WIN100270
server_ip:
westeurope: 10.x.x.x
eastus2: 10.x.x.x
我的if-else条件无法获取if语句的值,并且总是获取else条件的值。有人能为我提供这种情况的正确语法吗。使用Jinja2:
使用Jinja2:
使用Jinja2,可以使用不同类型的标记来定义逻辑和变量扩展 因此,如果您想在同一行上执行逻辑(分支)和变量扩展,就像您的第一个事实设置一样,它将是:
ad_server: "{% if ansible_local.vdc.location == 'westeurope' %}{{ server.westeurope }}{% else %}{{ server.eastus2 }}{% endif %}"
请试一试 使用Jinja2有不同类型的标记来定义逻辑和变量扩展,并且: 因此,如果您想在同一行上执行逻辑(分支)和变量扩展,就像您的第一个事实设置一样,它将是:
ad_server: "{% if ansible_local.vdc.location == 'westeurope' %}{{ server.westeurope }}{% else %}{{ server.eastus2 }}{% endif %}"
请试一试 请正确设置问题格式我更新了正确的格式请正确设置问题格式我更新了正确的格式谢谢@konstantin..真的很有效..我把问题弄复杂了.太好了!。这对我也很有用。这和巴斯提供的答案有什么区别?首选哪种方法?谢谢@konstantin。真的很有效。我把它弄复杂了。太好了!。这对我也很有用。这和巴斯提供的答案有什么区别?首选哪种方法?太好了!。我们如何在多行中完成这项工作?太好了!。我们如何在多行中执行此操作?