是否可以在剧本中获得参数--become
的值?
例如,如果标志--become
存在,我希望得到true
,否则得到false
。
我曾经认为有一个become
变量,但实际上它是不存在的。
理想情况下,我想使用如下格式:
- name
become: {{ become }}
你可以这样写:
- hosts: localhost
gather_facts: false
tasks:
- name: get UID
become: "{{ myvar|default(false)|bool }}"
command: id
register: uid
- debug:
var: uid.stdout
如果我们像这样运行:
ansible-playbook playbook.yml
我们得到:
TASK [debug] *******************************************************************
ok: [localhost] => {
"uid.stdout": "uid=1000(lars) gid=1000(lars) ..."
}
而如果我们设置myvar=true
:
ansible-playbook playbook.yml -e myvar=true
我们得到:
TASK [debug] *******************************************************************
ok: [localhost] => {
"uid.stdout": "uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023"
}
我们使用myvar|default(false)|bool
,所以如果myvar
没有设置,我们得到布尔值false
,如果myvar
被设置为字符串值&;false&;,bool
过滤器将其转换为false
,因为否则在布尔上下文中非空字符串的计算结果为true
。