User Tools

Site Tools


informatica:linux:ansible

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
informatica:linux:ansible [2019/09/10 12:19] joseinformatica:linux:ansible [2020/01/20 09:08] – [Almacenar información sensible (vaults)] javi
Line 68: Line 68:
       variable_comun: valor2       variable_comun: valor2
 </code> </code>
 +
 +====== Precedencia varaibles ======
 +
 +Este es el orden, de mayor precedencia a menor precedencia, de las variables:
 +
 +1. extra vars
 +
 +2. playbook
 +
 +3. role vars/main.yml
 +
 +4. groups/test.yml
 +
 +5. role defaults/main.yml
 +
 +**TODO**: poner un ejemplo complejo para que se vean las buenas prácticas de hacer roles reusables
 +
 +====== Almacenar información sensible (vaults) ======
 +
 +===== Crear archivo con y sin cifrar =====
 +
 +1. Crear un archivo con las variables, y llamarlo "vars.yml" con el siguiente contenido:
 +
 +  var1 = "pepe"
 +  
 +2. Copiar el archivo y llamarlo "vault.yml":
 +
 +  cp vars.yml vault.yml
 +  
 +3. Editar "vault.yml" y añadir (es pura convención) "vault_" delante de cada variable:
 +
 +  vault_var1 = "pepe"
 +
 +4. Cifrar "vault.yml", le añadiremos la etiqueta (es pura convención) "prod":
 +
 +  ansible-vault encrypt vault.yml --vault-id prod@prompt
 +
 +5. Teclear dos veces la contraseña (y anotarla en algún lugar)
 +
 +6. Editar "vars.yml" para que cada variable apunte a su correspondiente "vault_":
 +
 +  vim vault.yml
 +  
 +Y dejarlo tal que así:
 +
 +  var1 = "{{ vault_var1 }}"
 +  
 +7. Incluir los archivos "vars.yml" y "vault.yml". En este ejemplo lo hacemos en las tasks:
 +
 +<code>
 +- name: Include vars.yml
 +  include_vars: vars.yml
 +
 +- name: Include vault.yml
 +  include_vars: vault.yml
 +</code>
 +
 +===== Cifrar un archivo =====
 +
 +En este ejemplo:
 +
 +* Ciframos un archivo entero
 +* El módulo de ansible se encarga de descrifrarlo, descomprimirlo y dejarlo en destino
 +
 +Tenemos el siguiente diseño de archivos:
 +
 +<code>
 +.
 +├── hosts
 +├── roles
 +│   ├── example
 +│   │   ├── files
 +│   │   │   └── files.tar.bz2
 +│   │   ├── tasks
 +│   │   │   ├── main.yml
 +</code>
 +
 +1. Cifrar el archivo, en este caso "files.tar.bz2"
 +
 +    ansible-vault encrypt roles/example/files/files.tar.bz2 --vault-id prod@prompt
 +
 +2. Escribir la contraseña
 +
 +3. Añadir una tarea:
 +
 +<code>
 +- name: Uncompress the wordrepss files in docker host volume
 +  unarchive:
 +    src: files.tar.bz2
 +    dest: /tmp
 +  become: true
 +</code>
 +
 +Nótese que dado que usamos roles no hay que especificar el path absoluto de "files.tar.bz2".
 +
 +4. Ejecutar el playbook.
 +
 +El resultado esperado es que descifrará "files.tar.bz2" y lo dejará en "/tmp" en el servidor remoto
 +===== Comandos útiles =====
 +
 +* Editar archivo encriptado
 +
 +  ansible-vault edit vault.yml --ask-vault-pass
 +
 +* Editar y proporcionar archivo (con la contraseña en plano) para no tener que teclearla cada vez
 +
 +  ansible-vault edit vault.yml --vault-id prod@examples/password
 +  
 +* Editar y proporcionar archivo (con la contraseña en plano) para no tener que teclearla cada vez
 +
 +  ansible-vault view vault.yml --vault-id prod@examples/password
 +  
 +
 +  
 +  
 +
 +
 +
informatica/linux/ansible.txt · Last modified: 2020/01/21 08:00 by javi