Una introducción a los datos de Ansible

Ansible son datos recopilados en nodos de destino (nodos de host que se configurarán) y devueltos a nodos de controlador. Los datos de Ansible se almacenan en formato JSON y se utilizan para tomar decisiones importantes sobre tareas en función de sus estadísticas. Los hechos están en un ansible_facts variable, que es administrada por Ansible Engine. Los hechos de Ansible juegan un papel importante en la sincronización con los hosts según.

Índice

¿Qué son exactamente los hechos de Ansible y cómo se utilizan?

Los hechos de Ansible son los datos y las propiedades del sistema específicas del host al que se está conectando. Un hecho puede ser la dirección IP, la información del BIOS, la información del software de un sistema e incluso la información del hardware. Los datos de Ansible ayudan al administrador a administrar hosts en función de su estado actual en lugar de tomar medidas directamente sin tener información sobre el estado del sistema.

Aquí hay un escenario: necesita instalar el servidor web Apache en todos sus hosts Linux. Sabe que los hosts basados ​​en Red Hat Enterprise Linux (RHEL) funcionan con Red Hat Package Manager (RPM) y yum/dnf. Otras distribuciones de Linux usan sus propios administradores de paquetes y, por lo tanto, no sería posible realizar la misma tarea en diferentes sistemas sin modificar y hacer referencia a esas diferencias. Los nombres de los paquetes también difieren entre las distribuciones. Por ejemplo, en los sistemas RHEL, el paquete del servidor web Apache es httpd, mientras que en otras distribuciones se llama apache2.

Aquí hay un libro de jugadas de Ansible para ilustrar el problema:

- hosts: all
  tasks:
  - package:
      name: "httpd"
      state: present
    when ansible_facts["os_name"] == "RedHat"
  - package:
      name: "apache2"
      state: present
    when ansible_facts["os_name"] == "Ubuntu"

Aquí, el script recopilará información sobre el sistema utilizando datos de Ansible y luego realizará la operación correspondiente. Al instalar en sistemas RHEL, omite automáticamente el paquete basado en Ubuntu y viceversa. Del mismo modo, puede utilizar los hechos de Ansible para realizar una operación si el sistema tiene una cantidad mínima de recursos disponibles.

En resumen, con Ansible Facts, un administrador del sistema puede hacer que Ansible sea más inteligente al especificar parámetros que indican cuándo realizar tareas y cuándo no.

Accede a los hechos

Los hechos de Ansible utilizan el setup Módulo para recopilar hechos cada vez antes de ejecutar libros de jugadas.

Usar comandos ad hoc de Ansible

1. Acceda a datos de Ansible mediante comandos ad-hoc

el setup El módulo extrae todos los detalles de los hosts remotos a nuestros nodos de controlador y los descarga directamente en nuestra pantalla para que los usuarios puedan ver los hechos.

ansible all -m setup

2. Filtrar un valor específico de los hechos de Ansible

Aquí el setup módulo se utiliza para recuperar los hechos sobre el sistema, y ​​además, utilizará el filtrado argumento para mostrar el valor de los hechos de Ansible.

ansible all -m setup -a "filter=ansible_cmdline"

Notar: los hechos de Ansible solo se recuperan cuando se trabaja con libros de jugadas. Para acceder a los datos de Ansible mediante comandos ad-hoc, use el setup módulo.

Uso del libro de jugadas de Ansible

Para acceder a las variables de hechos de Ansible en el libro de jugadas de Ansible, necesitamos usar el nombre real sin usar el ansible palabra clave.

ansible_facts["ansible_system"] ??

ansible_facts["system"] ️

el gather_facts El módulo del libro de jugadas de Ansible ejecuta el setup módulo predeterminado al comienzo de cada libro de jugadas para recopilar datos sobre hosts remotos.

3. Acceda a los hechos utilizando el libro de jugadas de Ansible

Recopile hechos de Ansible y muéstrelos usando un libro de jugadas.

    - hosts: all
      tasks:
      - debug:
          var: ansible_facts

4. Acceda a un hecho específico utilizando un libro de jugadas de Ansible

Recupere datos de Ansible, fíltrelos y muéstrelos con un libro de jugadas.

    - hosts: all
      tasks:
      - debug:
          var: ansible_facts["cmdline"]

Hechos y tipos de datos de Ansibles

Los datos de Ansible se almacenan en formato JSON y se pueden clasificar en tres categorías principales:

Lista: Almacena la lista de elementos y la información almacenada se escribe entre corchetes []. Estos son principalmente hechos que pueden tener múltiples valores, por ejemplo, system_capablities. Se puede acceder a la lista usando corchetes y especificando el índice.

    ansible_facts["all_ipv6_addresses"][1]
    ansible_facts["all_ipv6_addresses"][2]

diccionario: almacena datos como una colección de pares clave-valor y la información se almacena entre llaves {}. Son principalmente los hechos los que tienen sub-hechos dentro de ellos, por ejemplo, memory_mb. Se puede acceder al diccionario usando el operador punto.

    ansible_facts.memory_mb.real

Texto inseguro de Ansible: este tipo de variable no tiene subpartes y almacena datos directamente, por ejemplo, machine. Se puede acceder a Ansible Unsafe Text directamente usando el nombre del hecho.

    ansible_facts["machine"]

Usar tipo_depuración filtro para comprobar el tipo de datos de los hechos de Ansible.

- hosts: all
  tasks:
  - debug:
      var: ansible_facts["all_ipv6_addresses"]|type_debug
  - debug:
      var: ansible_facts["memory_mb"]|type_debug
  - debug:
      var: ansible_facts["machine"]|type_debug

tipo_depuración filter solicita el tipo de datos para el hecho especificado sin imprimir el valor del hecho.

Conclusión

Los hechos reales son datos sobre el sistema que desea configurar. Estos hechos hacen que su sistema Ansible sea inteligente al proporcionar las condiciones necesarias para procesar un trabajo. También puede lidiar con no especificar o usar los hechos de Ansible, pero eso haría que el trabajo del administrador del sistema fuera más agitado porque la secuencia de comandos podría fallar o cambiar algunos de los archivos que nunca debieron cambiarse.

Para obtener más información sobre los datos de Ansible, consulte el documentos oficiales.

Artículos de interés

Subir