ansible - 根据ansible中的项目属性在循环中运行不同的命令
问题描述
在这里,我遇到了一个问题,我需要根据项目列表运行命令,例如以下代码:
- name: Task command
command: "command1 keyword1 --param1 {{ item.attribute1 }}"
with_items:
- "{{ list_of_items }}"
但是现在,我需要更新 playbook 以添加更多功能,例如 when item.attribute1 == 'a'
,仍然运行上面的命令,否则,命令应该是这样的
command: "command1 keyword2 --param2 {{ item.attribute1 }}" # completely different from the above command!
有没有一种方法可以支持这种在使用循环时支持运行不同命令的语法?
感谢任何形式的帮助。
解决方案
这是你要找的吗?
- hosts: localhost
vars:
commands:
a: 'command1 keyword1 --param1'
b: 'command1 keyword2 --param2'
c: 'command1 keyword3 --param3'
tasks:
- debug:
msg: "{{ commands[item.attribute1] + ' ' + item.attribute1 }}"
loop:
- {attribute1: 'a'}
- {attribute1: 'b'}
- {attribute1: 'c'}
给
"msg": "command1 keyword1 --param1 a"
"msg": "command1 keyword2 --param2 b"
"msg": "command1 keyword3 --param3 c"
推荐阅读
- telegram - 问题如何获取 Telegram 发送的消息的信息
- c# - 传递表达式而不是 lambda
- gitlab - Gitlab Runner artifacts-downloader 在下载工件时返回 Forbidden
- kubernetes - 使用 generateName 字段在 Kubernetes 中创建自定义资源
- flutter - 路由错误显示缺少一个参数?
- php - ldap_bind 失败并显示警告,但继续执行 if 语句
- python - 在尝试确定网络是否无标度时,Kolmogorov-Smirnov 返回的 p-val 为 0.0
- json - 如何在 azure 逻辑应用程序中使用 replace() 表达式从 json 输入消息中删除一个属性?
- shell - awk 将变量添加到列字符串的一部分
- typescript - 如何在 Visual Studio CE 2019 中使用 #region / #endregion for TypeScript 进行区域折叠/扩展?