Herramientas de usuario

Herramientas del sitio


informatica:ciberseguridad:cursos:curso_ansible_automatizacion_it:conceptos_avanzados

¡Esta es una revisión vieja del documento!


Ansible: Conceptos avanzados

Sección perteneciente al curso Ansible Automatización IT

¿Qué es YAML y por qué es importante conocerlo?

YAML es un formato de serialización de datos , legible por humanos, que está inspirado en lenguajes como XML.

YAML es un superconjunto del formato JSON, que permite añadir estructuras más complejas e incluso comentarios.

En el mundo Ansible, todos los playbooks están escritos en YAML.

Reglas generales:

  • Extensión .yaml (recomendada) o .yml
  • Las tabulaciones no están permitidas, solo los espacios.
  • Es necesario identar (sangrar) el código uno o más espacios.
  • Todas las claves/propiedades son case-sensitive (se distingue mayúsculas de minúsculas).
  • Los comentarios empiezan con un símbolo #.

Ejemplo de un playbook en YAML:

hosts: webservers

sudo: yes

vars:
  app_name: PleaseDeployMe
  repo_url: https://github.com/username/reponame.git
  repo_remote: origin
  repo_version: master
  webapps_dir: /deployed
  virtualenv_root: /deployed/PleaseDeployMe/mac
  
  tasks:
    - name: git pull project
      git: repo={{repo_url}} dest={{webapps_dir}}/{{app_name}} version=master

Tipos de datos

Cadenas de texto

---
foo: Esta es una cadena de texto

Los tres guiones indican el inicio del fichero.

Para meter caracteres especiales, hay que meterlos entre comillas:

---
foo: Esta es una cadena de texto "\n" estoy en una línea nueva.

Booleanos

True es lo mismo que On; False es lo mismo que Off.

---
foo: True
bar: False
light: On
TV: Off

Números

Soporta números decimales, hexadecimales…

---
foo: 12345
bar: 0x12d4
plop: 023332

Array / listas

---
items: [1, 2, 3, 4, 5]
names: ["one", "two", "three", "four", "five"]

También se podría escribir en el siguiente formato:

items:
  - 1
  - 2
  - 3
  - 4
  - 5

Diccionarios

---
foo: {thing1: huey, thing2: louie, thing3: dewey}

Los diccionarios se pueden anidar con otros elementos:

---
foo: 
  bar:
    - bar
    - rgb
    - plob

El diccionario bar tiene dentro una lista de 3 elementos.

Variables

Permiten almacenar y reusar información. Las variables se procesan en orden, de mayor a menor preferencia:

  1. Variables por línea de comandos
  2. Variables en tareas
  3. Variables en roles y secciones include
  4. Variables creadas con la directiva register
  5. Variables en los inventarios
  6. Variables en las plays
  7. Host facts
  8. Variables por defecto en los roles

En la documentación oficial de Ansible se habla hasta de 15 niveles de prioridad.

Reglas a la hora de definir variables en Ansible:

  • Deben comenzar con letra
  • Pueden contener letras, números y guiones bajos.

Tareas, Plays y Playbooks I

Una tarea es la aplicación de un módulo en un playbook para realizar una acción específica sobre un equipo.

Algunas tareas:

  • file: un directorio debe existir.
  • yum: un paquete tiene que estar instalado.
  • service: un servicio tiene que estar ejecutándose.
  • template: se quiere cargar una configuración en un template.
  • get_url: se quiere descargar un fichero de una URL.
  • git: se quiere clonar el código fuente desde un repositorio.

Ejemplo de la sección de tareas en un fichero YAML de Ansible:

tasks:
- name: httpd package is present
  yum:
    name: httpd
    state: latest
    
- name: latest index.html file is present
  copy:
    scr: files/index.html
    dest: /var/www/html/
    
- name: restart httpd
  service:
    name: httpd
    state: restarted

Plays y Playbooks

Una play consiste en un conjunto ordenado de tareas que se ejecutan en los hosts seleccionados sobre un inventario. Un playbook es un fichero que contiene una o más plays:

A continuación vemos un ejemplo de un Playbook con una sola play:

---
- name: install and start apache
  hosts: web
  become: yes
  vars:
    http_port: 80
    
  tasks:
  - name: httpd package is present
    yum:
      name: httpd
      state: latest
    
  - name: latest index.html file is present
    copy:
      scr: files/index.html
      dest: /var/www/html/

Ansible permite importar playbooks con la palabra clave import_playbook.

Ejemplo de nuestro primer playbook:

# Este es nuestro primer playbook
- name: primera play
  hosts: all
  gather_facts: false # para que no traiga los facts por defecto
  
  tasks:
  - name: comprobar conexión
    ping:
      data: functionando

Lo ejecutamos:

ansible-playbook -i /home/pepito/inventario -u ansible_user --key-file /home/pepito/.ssh/id_rsa primer_playbook.yaml

Poner ejemplo de la salida del comando anterior.

Podemos revisar la sintaxis del Playbook sin ejecutarlo:

ansible-playbook primer_playbook.yaml --syntax-check

Tareas, Plays y Playbooks II

Qué son los handlers y para qué se usan

Condicionales

Tags

Templates I

Templates II

Bloques y gestión de errores

Bucles

Qué son los Roles en Ansible

Creando nuestro primer Rol

Recursos

informatica/ciberseguridad/cursos/curso_ansible_automatizacion_it/conceptos_avanzados.1683561366.txt.gz · Última modificación: por tempwin