我想使用 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
在运行时发送键/值对
为什么不直接将完整的字典作为 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