ansible - 不能在剧本任务中使用 ansible 额外的变量值
问题描述
在运行 ansible 剧本时,我提供了额外的变量,特别是对于我传递多个值的模块变量。
ansible-playbook abc.yml --extra-vars "status=enable modules='redis apache zookeeper'"
当额外变量中的模块具有“redis”时,我想运行以下任务
- name: fetch ports
shell: ll | grep -i "ports"
when: modules == "redis"
但是,即使额外变量中的模块具有“redis”,上述任务也会被跳过。任何帮助,将不胜感激。
解决方案
您提供的modules
变量是一个字符串,您有 2 个选项:
- 尝试在提供的字符串中搜索“redis”,这不是理想的选择,因为如果您提供了类似
redisv2 apache zookeeper
. - 使用空格作为分隔符将字符串拆分为列表,然后如果“redis”在列表元素之一中,则验证为 true。
对于第二个选项,这里是如何做到这一点:
- name: fetch ports
shell: ll | grep -i "ports"
when: '"redis" in modules.split(" ")'
希望能帮助到你。
推荐阅读
- javascript - 反应:按钮 onClick 功能在页面加载时运行,但不是您单击它
- azure-cosmosdb - 如何为 CosmosDB id 字段选择一个好的值集?
- reactjs - 获取 GET 请求在 200 响应之外的任何内容上命中 .catch()
- websphere-8 - com.ibm.ws.webcontainer.exception.WebAppNotLoadedException:部署应用程序时 WAS 8.5.5.13 抛出此错误
- grails - grails g:select 增加多选框的大小
- json - 如何在 HTTP Post 请求的 URLSession 中访问 JSON 响应?
- c++ - 由于 Compressed_pair 导致纯虚拟结构和 unique_ptr 的 DLL 导入无法编译
- excel - IEWebBrowser 2" 失败/对象已与其客户端断开连接
- mysql - 在 MYSQL 数据库中清理注入的 javascript 引用
- d3.js - d3 多个不同的格线