Ich bin ein Neuling auf ansible und ich bin mit einem sehr einfachen Textbuch sudo apt-get update
und sudo apt-get upgrade
auf ein paar Servern zu erteilen.Wie man ansible_become_pass in einem Tresor speichert und wie man es benutzt?
Dies ist das Textbuch ich verwende:
---
- 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
und dies ist ein Auszug aus meiner ~/.ansible/inventory/hosts
Datei:
[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>
Dies ist, was ich, wenn ich das Textbuch zu starten:
$ 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
Was mich stört, ist die Tatsache, dass ich das Passwort für meine Benutzer user
im Klartext in meiner ~/.ansible/inventory/hosts
Datei gespeichert.
Ich habe über vaults gelesen, ich habe auch über die best practices for variables and vaults gelesen, aber ich verstehe nicht, wie man dies auf meinen sehr minimalen Anwendungsfall anwendet.
Ich habe auch versucht lookups zu verwenden. Während sie in der Regel arbeitet auch in der Inventardatei, und ich bin in der Lage, so etwas zu tun:
[my-servers]
san-francisco ansible_host=san-francisco ansible_ssh_user=user ansible_become_pass="{{ lookup('env', 'ANSIBLE_BECOME_PASSWORD_SAN_FRANCISCO') }}"
wo dieser Fall das Passwort in einer Umgebungsvariablen ANSIBLE_BECOME_PASSWORD_SAN_FRANCISCO
genannt gespeichert werden würde; Es gibt keine Möglichkeit, Variablen in Tresoren nachzuschlagen, soweit ich weiß.
Also, wie kann ich meine Datei so organisieren, dass ich irgendwo meine Passwörter zum Nachschlagen der Lage wäre und sie sicher gelagert?
Dank! Ich habe die erste Lösung getestet (Angabe der Vault-Datei über die Befehlszeile als Option) und es funktioniert! Ich habe für andere darauf hin, die Aufmerksamkeit auf die '@' Zeichen zu zahlen, in der Tat der Dokumentation von 'ansible-playbook' sagt für die' -e' Option: «Um Variablen aus einer Datei zu laden, um die Datei voraus angeben, indem Sie @ (zB @ vars.yml). » – CristianCantoro