ansible - 如何在ansible中定义提供成为密码的脚本
问题描述
我已经成功设置了一个vault_password_file
包含从 Bitwarden 读取密码的脚本。
我想对“成为密码”做同样的事情,但不知道在哪里以及如何实现。
ansible.cfg 是:
[defaults]
inventory=./inventory.yml
vault_password_file=./ansible-vault-pass.sh
[privilege_escalation]
become=True
Ansible-vault-pass 如下,虽然细节无关紧要,但这有效:
#!/bin/bash
_BW_ENTRY_ID="my-ansible-vault-pass"
_bw_session="$(bw unlock --raw)"
echo "$(bw get password ${_BW_ENTRY_ID} --session ${_bw_session} --raw)"
我有一个类似的脚本来查找并返回成为密码,但找不到如何将其挂钩到要使用的配置中,而不是提示用户。
我知道将其设置为group_vars/all/clear.yml
,例如如下:
ansible_become_password: "{{ vault_enabled_ansible_become_password }}"
然后将密码存储在保险库中。这种方法的问题在于,保管库在可以在服务器队列上运行 ansible 的系统管理员之间共享。但我不希望任何这样的 syadmin 能够读取他们同事的 sudo 密码。因此使用 Bitwarden/script 的方法。
解决方案
这类问题的问题在于有几个答案,而“正确”的答案取决于您的工作流程和对定制的容忍度。也就是说,这里有一些我知道的:
- 使用动态清单脚本
ansible_become_pass
根据您希望的任何逻辑填充 var - 将bitwarden 查找插件复制到
lookup_plugins
然后设置ansible_become_pass: '{{ lookup("bitwarden", "whatever", field="password") }}'
- 将成为插件复制到
become_plugins
并修改它以使用您选择的机制返回通行证get_option("become_pass")
- 使用将在启动前
ansible-playbook-with-bitwarden
填充的自定义 shell 脚本$ANSIBLE_BECOME_PASS
ansible-playbook
推荐阅读
- node.js - 如何获取nodejs readline的进度或任何其他逐行读取大文件的方式?
- zsh - macOS:iTerm2:重复:“npx:--shell-auto-fallback 已删除”
- c# - 如何在 Azure VM 服务器的后端运行 VB.NET exe?
- css - MaterialUI 按钮无法覆盖样式
- wordpress - Woocommerce 在多供应商订单中获取子订单号
- angular - 如何将 HighChart 添加到 Angular?
- python - 通过 OpenCV 应用分割掩码
- mysql - Clickhouse 按顺序时间和特定类型查找事件对
- lightningchart - 为散点图设置单个大小的大小
- javascript - 等待调用后,它不会执行下一行