如何在ansible中完成类似下面的操作?
if prod == true,
then var1 = 1
var2 = 2
var3 = 3
else
var1 = 4
var2 = 5
var3 = 6
答案 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"
。这样的变量被声明为文本。