ansible - hash_vault 将变量/参数传递到查找查询中
问题描述
你知道我是否能够将变量传递到查找查询中吗?
password: "{{ lookup('hashi_vault', 'secret=secret/data/my_secret:data')['{{ myvar }}']}}"
其中 myvar 设置为 mypass
vault kv put secret/my_secret mypass=abcd123
我收到以下错误。
{"msg": "该任务包含一个带有未定义变量的选项。错误是:'dict object' 没有属性 '{{myvar}}'\n\n错误似乎在 '.../ansible/ roles/joetests/tasks/main.yml':第 23 行,第 7 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n\n - 调试:\n ^ 这里\n"}
我尝试了不同的报价,但似乎不起作用
password: "{{ lookup('hashi_vault', 'secret=secret/data/my_secret:data')['"{{ myvar }}"']}}"
password: "{{ lookup('hashi_vault', 'secret=secret/data/my_secret:data')["'{{ myvar }}'"]}}"
如果我使用以下内容,它将成功返回密码。
password: "{{ lookup('hashi_vault', 'secret=secret/data/my_secret:data')['mypass']}}"
我目前正在测试一个非常简单的剧本
---
- debug:
msg:
- "{{ item }} => {{ password }}"
with_items:
- "{{ myvar }}"
在哪里
myvar:
- user1
- user2
- user3
解决方案
花括号 ( {{ }}
) 中的每个变量都将被插值,因此这里的技巧是实际上完全删除引号。试试这个:
password: "{{ lookup('hashi_vault', 'secret=secret/data/my_secret:data')[myvar] }}"
推荐阅读
- javascript - 为什么 snapToInterval 不适用于平面列表中较长的数组?
- docker - 是否可以在 k8s 1.21 中的容器内运行容器
- c# - DevExpress Xtra Grid 仅在复选框为真时启用查找编辑
- c# - 如何阅读 Microsoft.AspNetCore.Mvc.OkObjectResult 值非公共成员的内容
- logging - 如何将虚拟机上的 MiNifi 连接到远程 Nifi 实例并摄取日志数据?
- python - 获取数字列表,然后返回列表中增加的数字
- javascript - 无法从使用 python 的 nodejs 应用程序中的函数返回 json?
- r - 导入多个包含垒球统计数据的 CSV 文件并绘制进度
- android - 改造注册 gson 和 jackson 转换器工厂
- javascript - 为什么在尝试显示两个状态值的平均值时会得到 NaN?