Eine meiner Rollen hat zwei verschiedene Variablentypen. Man ist öffentlich (Dinge wie Paketversionen und andere gutartige Informationen). Diese können ohne Bedenken an SCM übergeben werden. Es erfordert auch einige private Informationen (wie API-Schlüssel und andere geheime Informationen). Ich verwende ansible-vault
, um geheime Informationen zu verschlüsseln. Meine Lösung war vars/main.yaml
für pulic und vars/vault.yml
für die verschlüsselten privaten Informationen.
Ich bin auf ein Problem gestoßen und bin nicht sicher, was hier die beste Methode oder die beste Lösung ist. Es scheint, dass ansible nur die Datei vars/main.yml
lädt. Natürlich möchte ich die öffentlichen Informationen nicht verschlüsseln, also suchte ich nach einer Lösung. Bisher war die einzige Lösung (die ich im IRC vorgeschlagen habe), group_vars/all/vault.yml
zu erstellen und alle Variablen mit dem Rollennamen zu versehen. Das funktioniert, weil ansible scheinbar alles unter group_vars
rekursiv lädt. Dies funktioniert, scheint aber organisatorisch falsch zu sein, da die Variablen für eine spezifische Rolle und nicht "global universell wahr" sind. Ich habe auch versucht, include: vars/vault.yml
in vars/main.yml
zu setzen, aber das hat nicht funktioniert.
Gibt es einen richtigen Weg, dies zu tun?
Als allererste Aufgabe in Ihrer Rolle könnten Sie eine include_vars
Aufgabe haben.
Ich habe es noch nie probiert, aber laut den Dokumenten verschlüsselte Dateien können mit dem include_vars
Modul verwendet werden.
Die Tresor-Funktion kann alle von Ansible verwendeten strukturierten Datendateien verschlüsseln. Dies kann Inventarvariablen "group_vars /" oder "host_vars /", Variablen, die von "include_vars" geladen werden, oder "vars_files" [...]
sein
Die Verwendung von Vault ist eine gute Idee. Aber du solltest das nicht in einer Rolle machen.
Der Grund ist, dass Ihre Rolle nur eine Variable und ihren Standardwert deklariert. Ein Playbook verwendet dies oder legt einen Wert fest. Wenn eine Variable privat ist, sollten Sie die Variable wie erforderlich deklarieren, jedoch ohne einen Standardwert. Wenn also jemand Ihre Rolle benutzt, muss er die Variable deklarieren, damit sie ausgeführt wird.
Eine Lösung, nach einer erforderlichen Variable zu fragen, ist eine einfache Bedingung:
%Vor%Die Handhabung der verschlüsselten Vault-Variablen erfolgt also auf Playbook-Ebene. Es ist ein Implementierungsdetail, das keine Rolle spielen sollte.
Tags und Links ansible ansible-vault