【问题标题】:How can I use a condition to set a variable value in Ansible?如何使用条件在 Ansible 中设置变量值?
【发布时间】:2017-07-28 09:22:18
【问题描述】:

我有两个变量:ab

我想为变量c 分配一个值,基于该值:ab 包含更大的数值。

这是我试过的:

- set_fact:
    c: "test1"
  when: a <= b

- set_fact:
    c: "test2"
  when: b <= a

看起来它总是将c 设置为test1 而不是test2

【问题讨论】:

    标签: ansible


    【解决方案1】:
    • 使用if-else 表达式:

      - set_fact:
          c: "{{ 'test1' if (a >= b) else 'test2' }}"
      
    • 使用三元运算符:

      - set_fact:
          c: "{{ (a >= b) | ternary ('test1', 'test2') }}"
      
    • 使用您自己的正确代码(请参阅下面的通知)


    上述任何一种方法都要求用于比较的两个变量的类型相同,才能给出合理的结果。对于数值比较,它们要求两个值都是整数。

    问题中的代码:

    - set_fact:
        c: "test1"
      when: a <= b
    
    - set_fact:
        c: "test2"
      when: b <= a
    

    在两种情况下正常工作:

    • ab 都是整数
    • 两者:ab 都是包含相同位数的数值的字符串

    但它会产生意想不到的结果是:

    • 其中一个值是字符串,另一个是整数
    • 字符串值包含不同位数的数值

    【讨论】:

    • 我已经编辑了这个问题,有点混乱。你能编辑一下答案吗
    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多