我是 ansible 的新手,我正在使用一个非常简单的剧本来发布sudo apt-get update
and sudo apt-get upgrade
在几台服务器上。
这是我正在使用的剧本:
---
- name: Update Servers
hosts: my-servers
become: yes
become_user: root
tasks:
- name: update packages
apt: update_cache=yes
- name: upgrade packages
apt: upgrade=dist
这是我的摘录~/.ansible/inventory/hosts
file:
[my-servers]
san-francisco ansible_host=san-francisco ansible_ssh_user=user ansible_become_pass=<my_sudo_password_for_user_on_san-francisco>
san-diego ansible_host=san-diego ansible_ssh_user=user ansible_become_pass=<my_sudo_password_for_user_on_san-diego>
如果我启动剧本,我会得到以下结果:
$ ansible-playbook update-servers-playbook.yml
PLAY [Update Servers] **********************************************************
TASK [setup] *******************************************************************
ok: [san-francisco]
ok: [san-diego]
TASK [update packages] *********************************************************
ok: [san-francisco]
ok: [san-diego]
TASK [upgrade packages] ********************************************************
ok: [san-francisco]
ok: [san-diego]
PLAY RECAP *********************************************************************
san-francisco : ok=3 changed=0 unreachable=0 failed=0
san-diego : ok=3 changed=0 unreachable=0 failed=0
令我困扰的是我有我的用户的密码user
以明文形式存储在我的~/.ansible/inventory/hosts
file.
我读过关于vaults https://docs.ansible.com/ansible/playbooks_vault.html#what-can-be-encrypted-with-vault,我还读过有关变量和保管库的最佳实践 https://docs.ansible.com/ansible/playbooks_best_practices.html#best-practices-for-variables-and-vaults但我不明白如何将其应用于我的最小用例。
我也尝试使用lookups https://docs.ansible.com/playbooks_lookups.html。虽然一般来说它们也在库存文件中工作,我可以做这样的事情:
[my-servers]
san-francisco ansible_host=san-francisco ansible_ssh_user=user ansible_become_pass="{{ lookup('env', 'ANSIBLE_BECOME_PASSWORD_SAN_FRANCISCO') }}"
在这种情况下,密码将存储在名为的环境变量中ANSIBLE_BECOME_PASSWORD_SAN_FRANCISCO
;据我所知,没有办法在保险库中查找变量。
那么,我如何组织我的文件,以便我能够从某个地方查找我的密码并安全地存储它们?