User Tools

Site Tools


informatica:linux:ansible

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
informatica:linux:ansible [2017/12/04 10:13] – created joseinformatica:linux:ansible [2019/12/17 19:35] – [Variables para cada servidor] javi
Line 28: Line 28:
 Ejecutamos: Ejecutamos:
   ansible-playbook sudo.yml   ansible-playbook sudo.yml
 +  
 +  
 +====== Bucles ======
 +Por defecto la variable del bucle es item
 +<code>
 +  tasks:
 +  - name: list variables
 +    debug:
 +      msg="reading from {{item.soft}} and {{item.directori}}"
 +    with_items:
 +      - { soft: 'apache.zip', directori: '/opt/pogramas/webserver' }
 +      - { soft: 'java7.zip', directori: '/opt/pogramas/java' }
 +
 +</code>
 +
 +Cambiando la variable del bucle
 +<code>
 +  tasks:
 +  - name: list variables
 +    debug:
 +      msg="reading from {{mi_variable.soft}} and {{mi_variable.directori}}"
 +    with_items:
 +      - { soft: 'apache.zip', directori: '/opt/pogramas/webserver' }
 +      - { soft: 'java7.zip', directori: '/opt/pogramas/java' }
 +    loop_control:
 +        loop_var: mi_variable
 +        
 +</code>
 +
 +====== Variables para cada servidor ======
 +Dentro de vars/<fichero>.yml El nombre del fichero da igual, pero mejor poner algo representativo
 +<code>
 +---
 +vars:
 +  hosts:
 +    server1:
 +      variable_comun: valor1
 +    server2:
 +      variable_comun: valor2
 +</code>
 +
 +====== 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>
 +
 +===== 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
 +  
 +
 +  
 +  
 +
 +===== BB =====
 +
 +BB
  
informatica/linux/ansible.txt · Last modified: 2020/01/21 08:00 by javi