Was ist Ansibles Konfigurationsäquivalent zu "--vault-password-file"?


12

Entsprechend der Hilfe von ansible-playbook könnte --user=REMOTE_USERman den ssh-Benutzer definieren, aber man könnte auch ansible_ssh_user: REMOTE_USERentweder in den host- oder group_vars definieren.

Frage

Welche Variable muss entweder im Verzeichnis group- oder host_vars --vault-password-filedefiniert werden , um zu verhindern, dass diese während der Ausführung definiert werden muss ansible-playbook?

Versuche

  • Wenn ansible_vault_password_file: ~/.vault_pass.txtin der Konfiguration definiert, schlägt die Entschlüsselung fehl:

    ERROR! Decryption failed on /path/to/vault
    
  • In dieser Dokumentation wurden keine zugeordneten Tresorvariablen gefunden


Übrigens ist es jetzt hier (ab Version 1.7) dokumentiert: docs.ansible.com/ansible/…
Tensibai

Antworten:


13

Hier ist die Definition:

DEFAULT_VAULT_PASSWORD_FILE = get_config(p, DEFAULTS, 'vault_password_file', \
'ANSIBLE_VAULT_PASSWORD_FILE', None, value_type='path')

Dies bedeutet, dass Sie entweder ansible.cfg oder Playbook eingeben:

vault_password_file: ~/.vault_pass.txt

Oder in Ihrer Shell diese Variable definiert:

export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt

Ich habe den Text der URL absichtlich dort gelassen, um den Leuten zu zeigen, wie das Betrachten des Codes helfen kann, wenn Dokumentation fehlt und der Code leicht zu finden ist. Aber ich denke, ein Hyperlink sollte ausreichen.
Jiri Klouda

Wenn etwas anderes fehlschlägt, lesen Sie die Dokumentation ... und wenn es keine Dokumentation gibt, lesen Sie die Quelle ... wenn Sie Zugriff darauf haben ... und wenn Sie dies tun, stellen Sie sicher, dass Sie die richtige Version suchen. Das einzige, was dann noch übrig bleibt, ist, alles verstehen zu können. PS: Links können eines Tages aufhören zu arbeiten ...
Pierre.Vriens

@JiriKlouda es scheint nicht zu funktionieren, obwohl es in definiert wurde group_vars/all/vars. export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txtmusste gelaufen werden.
030

Dies ist eine Konfigurationsvariable. Es muss in ansible.cfg oder einem gleichwertigen oder im Playbook sein.
Jiri Klouda

Außerdem habe ich speziell die 2.2-Version überprüft, die Sie ausführen, und sie ist dort: github.com/ansible/ansible/blob/stable-2.2/lib/ansible/…
Jiri Klouda

2

Sie können eine Umgebungsvariable festlegen, in der ANSIBLE_VAULT_PASSWORD_FILEder Pfad der Tresorkennwortdatei gespeichert wird. Auf diese Weise müssen Sie den --vault-password-fileSchalter nicht immer verwenden , wenn Sie ein Playbook ausführen.

Dies wird in der Vault-Dokumentation von Ansible beschrieben, die hier verfügbar ist .

Fügen Sie also export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txtIhre ~/.bash_profileQuelle hinzu und Sie können loslegen.

Wenn Sie unterschiedliche Tresorkennwörter für verschiedene Hostgruppen benötigen, sollten Sie folgende Schritte ausführen:

Erstellen Sie in diesem Unterverzeichnis zwei Dateien mit dem Namen vars und vault. Definieren Sie in der vars-Datei alle benötigten Variablen, einschließlich aller vertraulichen. Kopieren Sie als Nächstes alle vertraulichen Variablen in die Tresordatei und stellen Sie diesen Variablen vault_ voran. Sie sollten die Variablen in der vars-Datei so anpassen, dass sie auf die übereinstimmenden vault_-Variablen verweisen, und sicherstellen, dass die vault-Datei vault-verschlüsselt ist.

Dies ist ein Beispiel für einen Best-Practice-Ansatz zum Verwalten vertraulicher Informationen auf Gruppenbasis. Weitere Informationen finden Sie in der Dokumentation von Ansible hier (Der obige Text wird von dort kopiert).


1
Dies erlaubt kein anderes Passwort pro Host
Tensibai

Beziehen Sie sich auf das Verbindungskennwort? Denn wenn ja, was hat es mit Ansible Vault gemeinsam?
13dimitar

Ich bezog mich auf das Tresorkennwort. Die Bereitschaft, für verschiedene Gruppen ein anderes Tresorkennwort zu verwenden, ist sinnvoll (und ist meines Wissens die Wurzel der Frage).
Tensibai

Ich habe es nicht so verstanden. Ich habe meine Antwort so bearbeitet, dass sie dieses Szenario enthält.
13dimitar

scheint besser. Übrigens ist Downvote nicht meins
Tensibai
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.