Buscar..


Observaciones

Ansible ofrece Vault (¡no debe confundirse con HashiCorp Vault !) Para manejar el cifrado de datos confidenciales. Vault se dirige principalmente a cifrar cualquier dato estructurado, como variables, tareas, manejadores.

Encriptación de datos estructurados sensibles.

Primero, cree un archivo clave, por ejemplo, vault_pass_file , que idealmente contiene una larga secuencia de caracteres aleatorios. En los sistemas linux, puede usar pwgen para crear un archivo de contraseña aleatorio:

pwgen 256 1 > vault_pass_file

Luego, use este archivo para cifrar datos confidenciales, por ejemplo, groups_vars/group.yml :

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

A partir de ahora, para ejecutar un libro de jugadas, necesita el vault_pass_file :

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

Tenga en cuenta que también puede usar el indicador --vault-password-file vault_pass_file lugar de configurar la variable de entorno ANSIBLE_VAULT_PASSWORD_FILE .

Para editar o descifrar el secreto en el disco, puede utilizar la ansible-vault edit ansible-vault decrypt respectivamente.

Uso de tuberías de búsqueda para descifrar datos encriptados no almacenados en bóveda

Con Vault también puede cifrar datos no estructurados, como archivos de clave privada y aún así poder descifrarlos en su juego con el módulo de 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')

Usando local_action para descifrar plantillas encriptadas en bóveda

Puede ejecutar una local_action que se basa en plantillas encriptadas en bóveda utilizando el módulo 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

Tenga en cuenta el changed_when: False . Esto es importante en caso de que ejecute pruebas de idempotencia con sus roles de disponibilidad, de lo contrario, cada vez que ejecute el libro de jugadas se notificará un cambio. En group_vars/all.yml puede establecer un comando de descifrado global para reutilizarlo, por ejemplo, como view_encrypted_file_cmd .

group_vars / all.yml

---

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

Ahora, al ejecutar una reproducción, debe configurar la variable de entorno ANSIBLE_VAULT_PASSWORD_FILE para que apunte a su archivo de contraseña de bóveda (idealmente con una ruta absoluta).



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow