使用ansible动态地将数据发送到hashicorp金库

问题描述 投票:0回答:1

我想使用 Ansible 在

Hasicorp
库中写入/存储数据。我有相关的工作代码。但问题是我必须以动态方式将信用存储在
Hasicorp
金库中。 根据服务的不同,有时我们必须使用相同的 ansible 脚本存储 1 个秘密,有时 2 个秘密,有时 3 个。

例如: 对于 Cassandra 3 的秘密: 键空间 密码 用户名

对于 RdsPostgreSql 的 2 个秘密: 主持人 港口

对于 SSHConfig 1 机密: ssh 密钥

我的ansible代码:

- name: Get secrets from Vault
  hosts: localhost
  tasks:
  - name: Write a value to the cubbyhole via the remote host with userpass auth
    community.hashi_vault.vault_kv2_write:
      url: http://127.0.0.1:8200
      path: "{{ path_to_secret }}"
      data:
        "{{ secret_key_1 }}": "{{ secret_val_1 }}"
        "{{ secret_key_2 }}":  "{{ secret_val_2 }}"
      auth_method: token
      token:  "{{ auth_token }}"
    register: result

  - name: Echo the secret_data
    ansible.builtin.debug:
      msg: "{{ result }}"

那么在这段代码中,如何使我在

data
下发送的键/值对动态化?就像根据服务发送一本或多本字典一样。 我必须使用
--extra-vars

在运行时发送键/值对
ansible yaml jinja2 hashicorp-vault
1个回答
0
投票

为什么不直接将完整的字典作为 var 发送?

  - name: Write a value to the cubbyhole via the remote host with userpass auth
    community.hashi_vault.vault_kv2_write:
      url: http://127.0.0.1:8200
      path: "{{ path_to_secret }}"
      data: "{{ my_data_dict }}"
      auth_method: token
      token:  "{{ auth_token }}"
    register: result

然后您可以从命令行使用额外的 var 来调用它:

ansible-playbook -e '{"my_data_dict": {"key1": "value1", "key2": "value2"}}' \
  my_playbook.yml

为了让你的生活稍微轻松一点(因为像上面这样内联编写 json 有点容易出错),你可以在单独的 yaml 文件中设置给定的字典,例如

my_data_dict.yml

---
my_data_dict:
  toto: earth
  pipo: wind
  bingo: fire

并将文件中的变量直接发送到命令行:

ansible-playbook -e @my_data_dict.yml my_playbook.yml
© www.soinside.com 2019 - 2024. All rights reserved.