Einführung
Auf privaten CIs und Versionsverwaltungs-Repositorys wie Gitlab-ce ist es möglich, eine ~ / .vault_pass.txt auf den Server zu kopieren und vom CI zum Entschlüsseln von Dateien mit Ansible verwenden zu lassen.
Problem
In öffentlichen CIs und Quellcodeverwaltungs-Repositorys wie Bitbucket ist es nicht möglich, eine ~ / .vault_pass.txt selbst auf den CI-Server zu kopieren.
Diskussion
In Bitbucket ist es möglich, verschlüsselte Variablen zu definieren. Wenn diese Datei aktiviert ist, sind die einzigen VAULT-bezogenen Variablen:
ANSIBLE_ASK_VAULT_PASS
ANSIBLE_VAULT_PASSWORD_FILE
Diese Variablen sind keine Option, um das Problem zu lösen, da bei der ANSIBLE_ASK_VAULT_PASS
Einstellung ansible-vault
immer noch folgende Eingabeaufforderungen angezeigt werden:
user@host $
Vault password:
Wenn dasselbe Kennwort eingegeben wird, kann die verschlüsselte Datei geöffnet werden. Ziel ist es jedoch, die Datei zu öffnen, ohne eine Datei zu benötigen oder ein Kennwort in eine Eingabeaufforderung einzugeben.
Ein weiterer Versuch, das Problem zu lösen, wurde ausgeführt export ANSIBLE_ASK_VAULT_PASS=<ansible-vault-password>
, der interaktive Modus bleibt jedoch bestehen.
Eine andere Option ist export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt
, dass diese Datei dann in das Repository verschoben werden muss, die Quellcodeverwaltungs-Repositorys jedoch keine Kennwörter enthalten sollten.
Antworten:
--vault-password-file
kann stattdessen auf ein ausführbares Skript verweisen, das in stdout schreibt. Diese wenig bekannte Funktion sollte Ihr Problem lösen.Schreiben Sie zunächst ein einfaches, ausführbares Skript, das eine Systemumgebungsvariable druckt, und checken Sie dies in Ihre Quellcodeverwaltung ein. Verwenden Sie dann die Funktion für verschlüsselte Variablen von Bitbucket, um diese Umgebungsvariable auf Ihr Ansible-Vault-Geheimnis festzulegen. Führen Sie zum Schluss Folgendes aus:
ansible-playbook site.yml --vault-password-file ./mypass.sh
.Verweise:
http://docs.ansible.com/ansible/playbooks_vault.html#running-a-playbook-with-vault
https://groups.google.com/forum/#!topic/ansible-devel/1vFc3y6Ogto
quelle
echo $VAR
zum Beispiel enthalten und diese Variable wird in der BitBucket-Benutzeroberfläche festgelegt?([Errno 8] Exec format error). If this is not a script, remove the executable bit from the file.
Verwenden von
führte zu:
Basierend auf diesem Beitrag wurde Folgendes in Bitbucket-Pipelines definiert:
quelle
Sie könnten einen Test einrichten, der keine Produktion ausführt, und verschiedene Dateien für diese laden.
Erstellen Sie ein host_vars / localhost / vault, das nur für die lokale Testinstallation funktioniert.
Auf diese Weise können Sie ein offenes Tresorkennwort verwenden, das nur für diesen lokalen Host-Tresor funktioniert.
quelle