Ricerca…


Osservazioni

Ansible offre Vault (da non confondere con HashiCorp Vault !) Per gestire la crittografia dei dati sensibili. Vault si prefigge principalmente di crittografare tutti i dati strutturati come variabili, attività, gestori.

Crittografia di dati strutturati sensibili

Innanzitutto, crea un file chiave, ad esempio vault_pass_file , che idealmente contiene una lunga sequenza di caratteri casuali. Nei sistemi Linux è possibile utilizzare pwgen per creare un file password casuale:

pwgen 256 1 > vault_pass_file

Quindi, utilizza questo file per crittografare i dati sensibili, ad es. groups_vars/group.yml :

ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml

D'ora in poi, per eseguire un playbook hai bisogno di vault_pass_file :

ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml 

Nota, potresti anche usare il flag --vault-password-file vault_pass_file invece di impostare la variabile d'ambiente ANSIBLE_VAULT_PASSWORD_FILE .

Per modificare o decifrare il segreto su disco è possibile utilizzare rispettivamente la ansible-vault edit ansible-vault decrypt .

Utilizzo di pipe di ricerca per decifrare i dati crittografati con vault non strutturati

Con Vault puoi anche crittografare i dati non strutturati, come i file delle chiavi private, ed essere ancora in grado di decifrarli nel tuo gioco con il modulo di lookup .

---

- 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')

Utilizzo di local_action per decrittografare i modelli crittografati con Vault

Puoi eseguire un'opera che si basa su modelli crittografati con local_action utilizzando il modulo 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

Si prega di notare il changed_when: False . Questo è importante nel caso si eseguano test di idempotenza con i propri ruoli ansibili, altrimenti ogni volta che si esegue il playbook viene segnalato un cambiamento. In group_vars/all.yml è possibile impostare un comando di decrittografia globale per il riutilizzo, ad es. Come view_encrypted_file_cmd .

group_vars / all.yml

---

view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"

Ora, durante l'esecuzione di una riproduzione è necessario impostare la variabile d'ambiente ANSIBLE_VAULT_PASSWORD_FILE in modo che punti al proprio file di password del vault (idealmente con un percorso assoluto).



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow