本文共 1636 字,大约阅读时间需要 5 分钟。
ansible-vault
您可能已经确定了DevOps的工作流程,但是您应该不断努力提高此类实现的操作成熟度。 我使用的一种工具是Red Hat的 ,它非常适合编排和配置管理。 Ansible的入门门槛低且简单,这就是为什么这么多开始使用Ansible的人学会爱上它的原因。
Ansible中的一个功能是开发人员应该更经常使用的功能是 。
根据其文档,Ansible Vault(1.5)的最新版本允许将“敏感数据(例如密码或密钥)保留在加密文件中,而不是在剧本或角色中保留为纯文本。然后可以分发或存储这些保管库文件。置于源代码管理中。”
通常,私有SSL证书,API密钥和其他敏感数据会在GitHub上或通过其他一些意外方式公开发布。 Ansible Vault通过AES256加密您的机密,以便您可以将其安全地存储在Ansible Playbook和清单中。
创建文件库很简单:
ansible-vault create vault.yml
系统将提示您输入密码,该密码将与需要访问Vault的其他用户共享。 您输入变量,秘密等,并在完成后保存文件。 如果您尝试在文本编辑器中编辑vault.yml
,您将看到类似以下内容:
编辑库文件就像创建一个库文件一样简单:
ansible-vault edit vault.yml
您可以将Ansible的配置( ansible.cfg
)指向存储库外部的Vault密码文件。 该文件中只有Ansible Vault密码。 此步骤使您无需在每次编辑Ansible Vault时都输入密码:
vault_password_file = ~/.ansible_vault
当使用多个库文件(例如host_vars
和group_vars
时,它还可以提供host_vars
group_vars
。 如果您有一个包含文件库文件的目录,则可以将所有文件grep到可能已放错位置的变量中:
ls -1 | while read N ; do echo -n $N: ; ansible-vault --vault-password-file ~/.ansible_vault view $N | grep STRING ; done
另一个不错的技巧是使用Ansible Vault加密SSL / TLS密钥。 这样,您可以将它们及其配置保留在版本控制中。 您可以使用简单的命令对密钥进行加密:
ansible-vault encrypt private.pem
然后,您可以通过查找将键作为变量调用,并将其部署到远程系统上的文件中:
--- - hosts: host.domain.tld vars: - private_key: "{ { lookup('file', 'files/private.pem') }}" tasks: - name: Place certs on systems copy: content={ { item.content }} dest=/etc/pki/tls/certs/{ { item.dest }} owner=root group=root mode={ { item.mode }} with_items: - { content: "{ { private_key }}", dest: 'private.pem', mode: '0600' }
您解密的私钥将落在系统上,可以立即使用。
如您所见,Ansible Vault的可能性是无限的,您的开发和运营可以从其使用中受益匪浅。
翻译自:
ansible-vault
转载地址:http://pdjzd.baihongyu.com/