mnd*_*dhr 42 linux conditional ansible ansible-playbook ansible-2.x
我有多个任务取决于variable1的值.我想检查值是否在{{variable1}}但我收到错误:
- name: do something when the value in variable1
command: <command>
when: "'value' in {{variable1}}"
Run Code Online (Sandbox Code Playgroud)
我正在使用ansible 2.0.2
gui*_*ido 40
如果variable1是一个字符串,并且您正在其中搜索子字符串,这应该工作:
when: '"value" in variable1'
Run Code Online (Sandbox Code Playgroud)
如果variable1是数组或字典,in则将搜索确切的字符串作为其中一个项目.
Den*_*din 37
在ansible 2.3.0.0中,上述答案都不适用于我,但以下内容如下:
when: variable1 | search("value")
Run Code Online (Sandbox Code Playgroud)
在ansible 2.9中,不赞成使用〜concatenation进行变量替换:
when: "variable1.find('v=' ~ value) == -1"
Run Code Online (Sandbox Code Playgroud)
http://jinja.pocoo.org/docs/dev/templates/#other-operators
imj*_*gel 10
来自Ansible 2.5
when: variable1 is search("value")
Run Code Online (Sandbox Code Playgroud)
此示例使用 regex_search 执行子字符串搜索。
- name: make conditional variable
command: "file -s /dev/xvdf"
register: fsm_out
- name: makefs
command: touch "/tmp/condition_satisfied"
when: fsm_out.stdout | regex_search(' data')
Run Code Online (Sandbox Code Playgroud)
ansible 版本:2.4.3.0
用这个
当:“{{变量1中的'值'}}”
代替
时间:“{{variable1}} 中的‘值’”
也可以用于字符串比较
当:“{{ variable1 == 'value' }}”
某些答案不再按说明工作。
目前,这在ansible 2.6.x中对我有用
when: register_var.stdout is search('some_string')
Run Code Online (Sandbox Code Playgroud)
小智 5
在 Ansible 2.9.2 版中:
如果声明了变量 variable1:
when: "'value' in variable1"
如果您注册了 variable1,则:
when: "'value' in variable1.stdout"
小智 5
这在 Ansible 2.9 中对我有用:
variable1 = www.example.com.
variable2 = www.example.org.
when: ".com" in variable1
Run Code Online (Sandbox Code Playgroud)
而不是:
when: not ".com" in variable2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94155 次 |
| 最近记录: |