根据其他变量设置ansible变量。其他语言中的if / else等效项

时间:2019-05-16 18:21:40

标签: ansible

如何在ansible中完成类似下面的操作?

if prod == true,
then var1 = 1
     var2 = 2
     var3 = 3
else
     var1 = 4
     var2 = 5
     var3 = 6

1 个答案:

答案 0 :(得分:1)

一种选择是使用 set_fact 。例如下面的剧本

- hosts: localhost
  vars:
    prod: true
  tasks:
    - set_fact:
        var1: 1
        var2: 2
        var3: 3
      when: prod|bool
    - set_fact:
        var1: 4
        var2: 5
        var3: 6
      when: not prod|bool
    - debug:
        msg: "{{ var1 }}-{{ var2 }}-{{ var3 }}"

给予:

PLAY [localhost] ******************************************************************************

TASK [set_fact] *******************************************************************************
ok: [localhost]

TASK [set_fact] *******************************************************************************
skipping: [localhost]

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": "1-2-3"
}

PLAY RECAP ************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0

注意。如果要从命令行prod|bool设置prod,请在任务中显式转换--extra-vars "prod=false"。这样的变量被声明为文本。