ansible - ansible如何根据条件检查列表中的值
问题描述
我尝试查找变量是否具有存储在列表中的有效值。
列表的名称也存储在一个变量中。如果变量无效,则测试应该失败。
如果我使用列表的名称,这将有效:
- fail: msg="unsupported version requested"
when: requestedversion not in windowsversionlist
但是名称versionlist
也是一个变量,因为像linux和windows这样的列表更多。
这不起作用:
- fail: msg="unsupported version requested"
when: requesterversion not in versionlist
变量的versionlist
值为windowsversionlist
我尝试{{ versionlist }}
,等等,但这不起作用。
解决方案
您应该使用vars
查找:
- fail:
msg: "unsupported version requested"
when: "requestedversion not in lookup('vars', versionlist)"
鉴于剧本:
- hosts: localhost
gather_facts: no
tasks:
- fail:
msg: "unsupported version requested"
when: "requestedversion not in lookup('vars', versionlist)"
vars:
requestedversion: a.a.a
versionlist: windowsversionlist
windowsversionlist:
- x.x.x
- y.y.y
- z.z.z
这给出了:
PLAY [localhost] *************************************************************************************************
TASK [fail] ******************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "unsupported version requested"}
PLAY RECAP *******************************************************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
推荐阅读
- javascript - 导入js库vue cli + webpack
- httpresponse - 如何在 Jfree 图表的响应标头中设置 Content-Length?
- vuejs2 - 我可以对 Vue2 中的某个属性进行“特殊订阅”吗?
- python - 如何获取 Python 中两个相同元素之间不同元素的计数?
- c# - wpf更改列表视图中标签的前景导致错误
- firebase - 为 Nuxt VueJs Firestore App 自动生成动态 Sitemap.xml
- html - 新窗口中的mathjax
- python-3.x - 导入多个python脚本时在哪里做包导入?
- excel - Webquery vba仅选择第二行
- django - Django 休息框架:发布多对多项目