Я новичок в возможности, и я использую очень простой учебник для выпуска sudo apt-get update
и 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
:
[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>
Это то, что я получаю, если я запустил playbook:
$ 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
.
Я читал о хранилищах, я также прочитал о best практики для переменных и хранилищ, но я не понимаю, как применить это к моему очень минимальному варианту использования.
Я также попытался использовать lookups. Хотя в целом они также работают в файле инвентаризации, и я могу сделать что-то вроде этого:
[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
; насколько я знаю, нет способа искать переменные в хранилищах.
Итак, как я могу организовать свой файл таким образом, чтобы я мог где-то искать мои пароли и безопасно их хранить?