informatica:linux:ansible
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
informatica:linux:ansible [2017/12/04 10:13] – created jose | informatica:linux:ansible [2020/01/20 09:08] – [Almacenar información sensible (vaults)] javi | ||
---|---|---|---|
Line 28: | Line 28: | ||
Ejecutamos: | Ejecutamos: | ||
ansible-playbook sudo.yml | ansible-playbook sudo.yml | ||
+ | | ||
+ | | ||
+ | ====== Bucles ====== | ||
+ | Por defecto la variable del bucle es item | ||
+ | < | ||
+ | tasks: | ||
+ | - name: list variables | ||
+ | debug: | ||
+ | msg=" | ||
+ | with_items: | ||
+ | - { soft: ' | ||
+ | - { soft: ' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Cambiando la variable del bucle | ||
+ | < | ||
+ | tasks: | ||
+ | - name: list variables | ||
+ | debug: | ||
+ | msg=" | ||
+ | with_items: | ||
+ | - { soft: ' | ||
+ | - { soft: ' | ||
+ | loop_control: | ||
+ | loop_var: mi_variable | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ====== Variables para cada servidor ====== | ||
+ | Dentro de vars/< | ||
+ | < | ||
+ | --- | ||
+ | vars: | ||
+ | hosts: | ||
+ | server1: | ||
+ | variable_comun: | ||
+ | server2: | ||
+ | variable_comun: | ||
+ | </ | ||
+ | |||
+ | ====== Precedencia varaibles ====== | ||
+ | |||
+ | Este es el orden, de mayor precedencia a menor precedencia, | ||
+ | |||
+ | 1. extra vars | ||
+ | |||
+ | 2. playbook | ||
+ | |||
+ | 3. role vars/ | ||
+ | |||
+ | 4. groups/ | ||
+ | |||
+ | 5. role defaults/ | ||
+ | |||
+ | **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 " | ||
+ | |||
+ | var1 = " | ||
+ | | ||
+ | 2. Copiar el archivo y llamarlo " | ||
+ | |||
+ | cp vars.yml vault.yml | ||
+ | | ||
+ | 3. Editar " | ||
+ | |||
+ | vault_var1 = " | ||
+ | |||
+ | 4. Cifrar " | ||
+ | |||
+ | ansible-vault encrypt vault.yml --vault-id prod@prompt | ||
+ | |||
+ | 5. Teclear dos veces la contraseña (y anotarla en algún lugar) | ||
+ | |||
+ | 6. Editar " | ||
+ | |||
+ | vim vault.yml | ||
+ | | ||
+ | Y dejarlo tal que así: | ||
+ | |||
+ | var1 = "{{ vault_var1 }}" | ||
+ | | ||
+ | 7. Incluir los archivos " | ||
+ | |||
+ | < | ||
+ | - name: Include vars.yml | ||
+ | include_vars: | ||
+ | |||
+ | - name: Include vault.yml | ||
+ | include_vars: | ||
+ | </ | ||
+ | |||
+ | ===== Cifrar un archivo ===== | ||
+ | |||
+ | En este ejemplo: | ||
+ | |||
+ | * Ciframos un archivo entero | ||
+ | * El módulo de ansible se encarga de descrifrarlo, | ||
+ | |||
+ | Tenemos el siguiente diseño de archivos: | ||
+ | |||
+ | < | ||
+ | . | ||
+ | ├── hosts | ||
+ | ├── roles | ||
+ | │ ├── example | ||
+ | │ │ ├── files | ||
+ | │ │ │ └── files.tar.bz2 | ||
+ | │ │ ├── tasks | ||
+ | │ │ │ ├── main.yml | ||
+ | </ | ||
+ | |||
+ | 1. Cifrar el archivo, en este caso " | ||
+ | |||
+ | ansible-vault encrypt roles/ | ||
+ | |||
+ | 2. Escribir la contraseña | ||
+ | |||
+ | 3. Añadir una tarea: | ||
+ | |||
+ | < | ||
+ | - name: Uncompress the wordrepss files in docker host volume | ||
+ | unarchive: | ||
+ | src: files.tar.bz2 | ||
+ | dest: /tmp | ||
+ | become: true | ||
+ | </ | ||
+ | |||
+ | Nótese que dado que usamos roles no hay que especificar el path absoluto de " | ||
+ | |||
+ | 4. Ejecutar el playbook. | ||
+ | |||
+ | El resultado esperado es que descifrará " | ||
+ | ===== 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/ | ||
+ | | ||
+ | * 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/ | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | |||
informatica/linux/ansible.txt · Last modified: 2020/01/21 08:00 by javi