【问题标题】:hashi_vault pass variable/argument into the lookup queryhash_vault 将变量/参数传递到查找查询中
【发布时间】:2020-03-15 13:12:41
【问题描述】:

你知道我是否能够将变量传递到查找查询中吗?

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

【问题讨论】:

    标签: ansible hashicorp-vault


    【解决方案1】:

    花括号 ({{ }}) 内的每个变量都将被插值,因此这里的技巧是实际上完全删除引号。试试这个:

    password: "{{ lookup('hashi_vault', 'secret=secret/data/my_secret:data')[myvar] }}"
    

    【讨论】:

    • 谢谢@Matt,这成功了。我想我需要一些引号,就好像我正在阅读单个保管库机密一样,语法是 ['mypass']
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多