überschreibende Optionen in der Ansible-Konfiguration

477
hymie

In meiner vorherigen Frage habe ich festgestellt, dass ich Optionen in eine lokale ansible.cfgDatei einfügen kann. Aber kann ich sie außer Kraft setzen?

Ich habe eine ansible.cfgDatei, die enthält

[defaults] vault_password_file = /home/hymie/ansible/foo 

Und ich kann diese Datei automatisch verwenden:

$ echo "hi there" | ansible-vault encrypt_string Reading plaintext input from stdin. (ctrl-d to end input) !vault | $ANSIBLE_VAULT;1.1;AES256 64386133613865366565336365333166623538613239636464303931646330323061376239363639 3136376163613132613130306630626365643133366664310a353030303434346336396233616363 62323464313737663135303636646264373737393930326132386231363561653865646436313439 3231353132643364340a316431626332626633646135613064353133633038356434323537326633 3035 Encryption successful 

Jetzt kann ich kein anderes Passwort verwenden / auswählen:

$ echo "hi there" | ansible-vault encrypt_string --ask-vault-pass New Vault password: Confirm New Vault password: ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli.  $ echo "hi there" | ansible-vault encrypt_string --vault-password-file=/tmp/foo ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli.  $ echo "hi there" | ansible-vault encrypt_string --vault-id=@prompt New vault password (default): Confirm vew vault password (default): ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli. 

Dies scheint das falsche Verhalten zu sein.

Warum überschreibt meine Befehlszeilenoption (entweder zur Eingabe eines Kennworts oder zum Auswählen einer anderen Kennwortdatei) nicht die Konfigurationsdateioption, um eine bestimmte vordefinierte Kennwortdatei zu verwenden? Mache ich etwas falsch? Oder ist ansible einfach so, ohne Konfigurationsvariablen zu überschreiben?

3
Der Fehler scheint mir klar zu sein. Sie können nur eine einzige gültige ID für die Verschlüsselung zuweisen. Wo hast du sonst die Tresor-ID vergeben? Ramhound vor 6 Jahren 0
Der Fehler weist eindeutig darauf hin, dass dies beabsichtigt war. Sie fordern eine neue Funktion / Änderung an, Sie sollten dies auf GitHub tun, nicht auf SuperUser. techraf vor 6 Jahren 0
@techraf Ist dies eine standardmäßige Sache, die nach der Definition einer Einstellung in ansible.cfg nicht durch eine Befehlszeilenoption überschrieben werden kann? hymie vor 6 Jahren 0
Dieser Fehler wird ausgelöst, da `/ tmp / foo` kein ausführbares Bash-Skript ist, das $ ` echo sein sollte Mincă Daniel Andrei vor 5 Jahren 0
@ MincăDanielAndrei Du irrst dich. https://docs.ansible.com/ansible/2.5/user_guide/vault.html#providing-vault-passwords sagt eindeutig "Um ein Tresorpasswort in einer Textdatei anzugeben, verwenden Sie die Option --vault-password-file", ebenso wie der Hilfetext von ansible-vault --help. hymie vor 5 Jahren 0

1 Antwort auf die Frage

0
Mincă Daniel Andrei

Ich hatte gestern ein ähnliches Problem mit dem gleichen Fehler und Ihrer Konfiguration.

Anscheinend wurde dieser Fehler ausgelöst, weil mein ansible.cfgCWD-Benutzer auf a vault_password_fileund eine Übergabe --vault-password-filein der CLI als Argument übergeben hat. Daher führt der zweimalige Verweis auf die Vault-Kennwortdatei diesen Fehler aus:ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli.

Genau das sagt der Fehler, die Tatsache, dass Sie diesen Parameter zweimal übergeben, aber auf andere Weise.

Um dies zu beheben, können Sie entweder den vault_password_file=Verweis aus ansible.cfgdem CLI entfernen --vault-password-fileoder ihn nur durch das CLI leiten oder ihn einfach im CLI lassen und ansible.cfgso vermeiden, --vault-password-filedas CLI erneut einzugeben. Es liegt an Ihnen.