Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| info:cursos:udemy:ansible:playbooks [12/09/2018 02:52] – [2.20 Condiciones] mate | info:cursos:udemy:ansible:playbooks [19/09/2018 00:54] (actual) – [2.11 introducción Playbooks] mate | ||
|---|---|---|---|
| Línia 16: | Línia 16: | ||
| * cada guión es un playbook, puede haber varios en un fichero | * cada guión es un playbook, puede haber varios en un fichero | ||
| * **name** es opcional, pero recomendado | * **name** es opcional, pero recomendado | ||
| - | * '' | + | * '' |
| == 2.12 Esenciales | == 2.12 Esenciales | ||
| * hosts: lista de servidores a administrar (grupos o servidores) | * hosts: lista de servidores a administrar (grupos o servidores) | ||
| - | * si se quieren separar, usar **:** | + | * si se quieren separar, usar **%%:%%** |
| * se puede usar **&** para que estén en 2 grupos a la vez | * se puede usar **&** para que estén en 2 grupos a la vez | ||
| * se puede usar **!** | * se puede usar **!** | ||
| + | |||
| <code yaml> | <code yaml> | ||
| hosts: serweb # un grupo, afecta a todas las máquinas | hosts: serweb # un grupo, afecta a todas las máquinas | ||
| Línia 53: | Línia 54: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| Línia 260: | Línia 261: | ||
| <code yaml> | <code yaml> | ||
| - | -name: instalar apache2 | + | - name: instalar apache2 |
| apt: name=apache2 state=latest | apt: name=apache2 state=latest | ||
| when: ansible_distribution == " | when: ansible_distribution == " | ||
| Línia 266: | Línia 267: | ||
| <code yaml> | <code yaml> | ||
| - | -name: instalar apache2 | + | - name: instalar apache2 |
| apt: name=apache2 state=latest | apt: name=apache2 state=latest | ||
| when: ansible_distribution == " | when: ansible_distribution == " | ||
| + | </ | ||
| + | |||
| + | <code yaml; | ||
| + | - name: Instalar apache2 | ||
| + | include: instalar-apache2.yml | ||
| + | when: ansible_distribution == " | ||
| + | | ||
| + | - name: Instalar httpd | ||
| + | include: instalar-httpd.yml | ||
| + | when: ansible_distribution == " | ||
| + | </ | ||
| + | |||
| + | <code yaml; filtrado a través de rol> | ||
| + | - { role: apache2, when: ansible_distribution == " | ||
| + | - { role: apache2, when: ansible_distribution == " | ||
| </ | </ | ||
| == 2.21 Bucles | == 2.21 Bucles | ||
| + | ya vimos como usarlo en las plantillas () | ||
| + | ahora en tareas (palabra clave): '' | ||
| + | |||
| + | <code yaml; listas> | ||
| + | - name: Instalar soft necesario | ||
| + | apt: name={{ item }} state=latest | ||
| + | with_items: | ||
| + | - mariadb | ||
| + | - php5 | ||
| + | - phpmyadmin | ||
| + | </ | ||
| + | |||
| + | <code yaml; diccionarios> | ||
| + | - name: Crear usuarios | ||
| + | user: name={{ item.nombre }} state=present groups={{ item.grupo }} | ||
| + | with_items: | ||
| + | - {nombre: usuario1, grupo: www-data} | ||
| + | - {nombre: usuario2, grupo: www-data} | ||
| + | </ | ||
| + | |||
| + | <code yaml; con variables (en roles/< | ||
| + | - name: Instalar paquetes | ||
| + | apt: {{ item }} | ||
| + | with_items: "{{ lista_paquetes }}" | ||
| + | - name: Crar usuarios | ||
| + | user: {{ item }} | ||
| + | with_items: "{{ dic_usuarios }}" | ||
| + | </ | ||
| + | <code yaml; variables en main.yml> | ||
| + | lista_paquetes: | ||
| + | dic_usuarios: | ||
| + | - {nombre: " | ||
| + | - {nombre: " | ||
| + | </ | ||
| == 2.22 Register | == 2.22 Register | ||
| + | '' | ||
| + | |||
| + | <code yaml> | ||
| + | - name: ejecutar comando | ||
| + | command: uptime | ||
| + | register: salida_uptime | ||
| + | | ||
| + | - name: mostrar uptime | ||
| + | debug: var=salida[.stdout] | ||
| + | </ | ||
| + | |||
| + | los valores devueltos son: | ||
| + | * changed | ||
| + | * failed | ||
| + | * skipped | ||
| + | * rc | ||
| + | * == 0 -> OK | ||
| + | * != 0 -> KO | ||
| + | * stdout / stderr / stdout_lines / stderr_lines | ||
| + | * en lines se podría rehusar como bucle | ||
| + | y se pueden usar esos estados para filtrar la ejecución de otras tareas | ||
| + | |||
| + | <code yaml; solo ejecutará la segunda tarea si ha habído un changed en la primera> | ||
| + | - name: copiar fichero index.html | ||
| + | template: src=index.html.j2 dest=/ | ||
| + | register: out_copia | ||
| + | | ||
| + | - name: mostrar contenido | ||
| + | command: cat / | ||
| + | register: out_salida | ||
| + | when: out_copia|changed | ||
| + | | ||
| + | - debug: var=out_copia.stdout | ||
| + | when: out_copia|changed | ||
| + | | ||
| + | </ | ||
| == 2.23 Ignore Errors | == 2.23 Ignore Errors | ||
| + | las tareas erróneas paran el playbook, usando '' | ||
| + | |||
| + | <code yaml> | ||
| + | - name: comprobar si fichero existe | ||
| + | command: ls / | ||
| + | registar: existe | ||
| + | ignore_errors = true | ||
| + | | ||
| + | - name: mostrar errores | ||
| + | debug: var=existe.stderr_lines | ||
| + | | ||
| + | </ | ||
| + | |||
| + | se puede usar a nivel de tarea o de playbook <- CUIDADO! todos los errores serán ignorados | ||
| + | |||
| + | se pueden usar condicionales '' | ||
| + | <code yaml> | ||
| + | - name: mostrar salida | ||
| + | debug: var=existe.stdout_lines | ||
| + | when: not salida|failed | ||
| + | [ when: salida|failed != False ] # expresión equivalente | ||
| + | | ||
| + | - name: mostrar errores | ||
| + | debug: var=existe.stderr_lines | ||
| + | when: salida|failed | ||
| + | </ | ||
| == 2.24 Failed When | == 2.24 Failed When | ||
| + | '' | ||
| + | |||
| + | un comando es marcado como erróneo si su **rc** (return code) es != 0 -> '' | ||
| + | |||
| + | <code yaml; siempre retornará changed> | ||
| + | - name: ejecutar comando | ||
| + | command: ip a | ||
| + | </ | ||
| + | |||
| + | <code yaml; da error si no existe la interfaz eth2> | ||
| + | - name: ejecutar comando | ||
| + | command: ip a | ||
| + | register: salida | ||
| + | failed_when: | ||
| + | </ | ||
| + | |||
| + | <code yaml; no la marca como cambiada> | ||
| + | - name: no marcar nunca como cambiado | ||
| + | command: uptime | ||
| + | changed_when: | ||
| + | </ | ||
| + | se pueden combinar en la misma tarea juntas | ||