ansible
Geheime Verschlüsselung
Suche…
Bemerkungen
Ansible bietet Vault (nicht zu verwechseln mit HashiCorp Vault !), Um sensible Datenverschlüsselung zu handhaben. Vault dient hauptsächlich dazu, strukturierte Daten wie Variablen, Aufgaben und Handler zu verschlüsseln.
Verschlüsselte vertrauliche strukturierte Daten
Erstellen Sie zunächst eine Schlüsseldatei, z. B. vault_pass_file
, die idealerweise eine lange Folge von zufälligen Zeichen enthält. In Linux-Systemen können Sie pwgen
, um eine zufällige Kennwortdatei zu erstellen:
pwgen 256 1 > vault_pass_file
Verwenden Sie dann diese Datei, um vertrauliche Daten zu verschlüsseln, z. B. groups_vars/group.yml
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml
Um ein Playbook zu starten, benötigen Sie ab vault_pass_file
die vault_pass_file
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml
Beachten Sie, dass Sie anstelle der Umgebungsvariablen ANSIBLE_VAULT_PASSWORD_FILE
auch das Flag - --vault-password-file vault_pass_file
verwenden können.
Um das Geheimnis auf dem Datenträger zu bearbeiten oder zu entschlüsseln, können Sie das ansible-vault edit
mit ansible-vault decrypt
verwenden.
Verwenden von Lookup-Pipes zum Entschlüsseln nicht strukturierter, mit einem Tresor verschlüsselter Daten
Mit Vault können Sie auch nicht strukturierte Daten, z. B. private Schlüsseldateien, verschlüsseln und sie dennoch mit dem lookup
Modul im Spiel entschlüsseln.
---
- name: Copy private key to destination
copy:
dest=/home/user/.ssh/id_rsa
mode=0600
content=lookup('pipe', 'ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault view keys/private_key.enc')
Verwenden von local_action zum Entschlüsseln von mit Vault verschlüsselten Vorlagen
Mit dem local_action
Modul können Sie ein Spiel ausführen, das mit Tresor-verschlüsselten Vorlagen local_action
.
---
- name: Decrypt template
local_action: "shell {{ view_encrypted_file_cmd }} {{ role_path }}/templates/template.enc > {{ role_path }}/templates/template"
changed_when: False
- name: Deploy template
template:
src=templates/template
dest=/home/user/file
- name: Remove decrypted template
local_action: "file path={{ role_path }}/templates/template state=absent"
changed_when: False
Bitte beachten Sie das changed_when: False
. Dies ist wichtig, wenn Sie Idempotenztests mit Ihren Rollen ausführen, ansonsten wird jedes Mal, wenn Sie das Playbook ausführen, eine Änderung angezeigt. In group_vars/all.yml
Sie einen globalen Entschlüsselungsbefehl zur Wiederverwendung view_encrypted_file_cmd
, z. B. als view_encrypted_file_cmd
.
group_vars / all.yml
---
view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"
Wenn Sie nun ein Spiel ANSIBLE_VAULT_PASSWORD_FILE
müssen Sie die Umgebungsvariable ANSIBLE_VAULT_PASSWORD_FILE
, dass sie auf Ihre ANSIBLE_VAULT_PASSWORD_FILE
(idealerweise mit einem absoluten Pfad).