Ansible读取Jenkins布尔参数
我有来自Jenkins的布尔参数输入。然后,我的Ansible将此布尔值读取为执行任务的“何时”条件。但是,此布尔参数似乎无法正常工作。我的剧本是这样的:Ansible读取Jenkins布尔参数,jenkins,ansible,Jenkins,Ansible,我有来自Jenkins的布尔参数输入。然后,我的Ansible将此布尔值读取为执行任务的“何时”条件。但是,此布尔参数似乎无法正常工作。我的剧本是这样的: - hosts: localhost var: my_boolean: {{lookup('env','boolean_parameter1')}} - name: print msg1 debug: msg: "msg1 is {{lookup('env','boolean_parameter1')}}
- hosts: localhost
var:
my_boolean: {{lookup('env','boolean_parameter1')}}
- name: print msg1
debug:
msg: "msg1 is {{lookup('env','boolean_parameter1')}}."
- name: print msg2
debug:
msg: "msg2 is {{my_boolean}}."
- name: execute tasks if my_boolean is 'true'
shell: ls -l
when:
- "{{my_boolean}}"=="true"
输出:
msg1为真。
msg2是。
为什么msg2将my_boolean输出为空?这也应该是“真的”吗?在您的游戏中,当:与字符串
匹配时,中的比较是“真的”
。而变量my_boolean
是一个布尔值,因此它不匹配并跳过任务。在调试:
任务中,情况正好相反-消息试图显示布尔值true
,因此为空
以下任务应完成此工作:
#这里我们需要布尔值的字符串等价物,即文本“true”
-名称:打印msg2
调试:
msg:“msg2是{{my_boolean}字符串}。”
#但是这里我们需要比较布尔值
-名称:如果我的布尔值为“true”,则执行任务
外壳:ls-l
何时:我的妈妈
值得注意的是,从Ansible 2.10开始,当:
条件句将被弃用时,在中引用条件句。最好使用:when:my_boolean | bool
尝试在初始化期间将my_boolean
强制转换为bool。这只允许检查my_boolean
的值是否为真
使用您的代码时,以下内容对我有效:
- name: Test
hosts: all
vars:
my_boolean: "{{lookup('env','boolean_parameter1')|bool}}"
tasks:
- name: print msg1
debug:
msg: "msg1 is {{lookup('env','boolean_parameter1')}}."
- name: print msg2
debug:
msg: "msg2 is {{my_boolean}}."
- name: execute tasks if my_boolean is 'true'
shell: ls -l
when:
- my_boolean
库存:
[hosts]
localhost ansible_connection=local
[hosts]
localhost ansible_connection=local