如何避免 Ansible 上的 ask-vault-pass 参数
How to avoid ask-vault-pass parameter on Ansible
我想做类似的事情
ansible-playbook myPlaybook.yml -i myHostFile
而不是
ansible-playbook myPlaybook.yml -i myHostFile --ask-vault-pass
您的要求不明确。根据我的评论,这个答案是一个具体的例子,说明如何使用 vault-keyring-client.py
script provided by ansible community contribs 在你的 gnome linux 会话密钥环中保护你的保管库密码(希望它会给你一些关于如何解决你的问题的想法具体案例)。
- 确保您具有 运行 脚本所需的依赖项
pip install keyring
- 将 contrib 脚本安装在您路径中的某个位置(给定的路径只是一个示例,请使用适合您情况的路径)
cd $HOME/bin
curl -o vault-keyring-client https://raw.githubusercontent.com/ansible-community/contrib-scripts/main/vault/vault-keyring-client.py
chmod 0700 vault-keyring-client
- 使用脚本在您的会话密钥库中创建您的保管库 ID 密码。密码以交互方式询问并存储。您可以看到他们在启动
seahorse
后浏览 login
密钥环(即“密码和密钥”)。
vault-keyring-client --set --vault-id yourid1
vault-keyring-client --set --vault-id yourid2
- 配置 ansible 以便为这些 ID 使用该脚本。如果发现没有 id 的加密内容,将按顺序进行尝试。您可能想要定义一个默认 ID 来加密内容。将以下行添加到您的
.bashrc
(或您使用的任何 shell...)
export ANSIBLE_VAULT_IDENTITY_LIST=yourid1@$HOME/bin/vault-keyring-client,yourid2@$HOME/bin/vault-keyring-client
export ANSIBLE_VAULT_ENCRYPT_IDENTITY=yourid1
- 加密一些内容
# using the default encrypt vault-id
ansible-vault encrypt somefile
ansible-vault encrypt_string "somestring"
# using an other vault-id than default
ansible-vault encrypt --encrypt-vault-id yourid2 somefile
ansible-vault encrypt_string --encrypt-vault-id yourid2 "somestring"
- 您现在可以使用任何需要从打开的会话中配置保管库密码的剧本或临时命令,而无需以交互方式提供
ansible-playbook -i your_inventory your_playbook
ansible-playbook -i your inventory somehost -m debug -a "msg={{ some_encrypted_var }}"
我想做类似的事情
ansible-playbook myPlaybook.yml -i myHostFile
而不是
ansible-playbook myPlaybook.yml -i myHostFile --ask-vault-pass
您的要求不明确。根据我的评论,这个答案是一个具体的例子,说明如何使用 vault-keyring-client.py
script provided by ansible community contribs 在你的 gnome linux 会话密钥环中保护你的保管库密码(希望它会给你一些关于如何解决你的问题的想法具体案例)。
- 确保您具有 运行 脚本所需的依赖项
pip install keyring
- 将 contrib 脚本安装在您路径中的某个位置(给定的路径只是一个示例,请使用适合您情况的路径)
cd $HOME/bin curl -o vault-keyring-client https://raw.githubusercontent.com/ansible-community/contrib-scripts/main/vault/vault-keyring-client.py chmod 0700 vault-keyring-client
- 使用脚本在您的会话密钥库中创建您的保管库 ID 密码。密码以交互方式询问并存储。您可以看到他们在启动
seahorse
后浏览login
密钥环(即“密码和密钥”)。vault-keyring-client --set --vault-id yourid1 vault-keyring-client --set --vault-id yourid2
- 配置 ansible 以便为这些 ID 使用该脚本。如果发现没有 id 的加密内容,将按顺序进行尝试。您可能想要定义一个默认 ID 来加密内容。将以下行添加到您的
.bashrc
(或您使用的任何 shell...)export ANSIBLE_VAULT_IDENTITY_LIST=yourid1@$HOME/bin/vault-keyring-client,yourid2@$HOME/bin/vault-keyring-client export ANSIBLE_VAULT_ENCRYPT_IDENTITY=yourid1
- 加密一些内容
# using the default encrypt vault-id ansible-vault encrypt somefile ansible-vault encrypt_string "somestring" # using an other vault-id than default ansible-vault encrypt --encrypt-vault-id yourid2 somefile ansible-vault encrypt_string --encrypt-vault-id yourid2 "somestring"
- 您现在可以使用任何需要从打开的会话中配置保管库密码的剧本或临时命令,而无需以交互方式提供
ansible-playbook -i your_inventory your_playbook ansible-playbook -i your inventory somehost -m debug -a "msg={{ some_encrypted_var }}"