GNU/Linux >> Tutoriales Linux >  >> Linux

Una introducción a los hechos de Ansible

Datos de Ansible son datos recopilados sobre nodos de destino (nodos de host que se configurarán) y se devuelven 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 datos de Ansible juegan un papel importante en la sincronización con hosts de acuerdo con datos en tiempo real .

[ También te puede interesar: Una introducción a Ansible Tower ]

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

Los hechos de Ansible son los datos y las propiedades del sistema específico del host al que se conecta. Un hecho puede ser la dirección IP, la información del BIOS, la información del software del sistema e incluso la información del hardware. Los datos de Ansible ayudan al administrador a gestionar los hosts en función de su estado actual en lugar de realizar las acciones directamente sin tener información sobre el estado del sistema.

Aquí hay un escenario:debe 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, por lo que no sería factible 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 demostrar 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. De manera similar, puede usar los hechos de Ansible para realizar una operación si el sistema tiene una cantidad mínima de recursos disponibles.

En resumen, al utilizar los datos de Ansible, un administrador del sistema puede hacer que Ansible sea más inteligente al especificar parámetros sobre cuándo realizar tareas y cuándo no.

Acceso a los hechos

Los hechos de Ansible usan la setup módulo para recopilar datos cada vez antes de ejecutar los libros de jugadas.

Uso de los comandos ad-hoc de Ansible

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

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

ansible all -m setup

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

Aquí, la setup El módulo se utiliza para obtener los datos sobre el sistema y, además, utilizará el filtro argumento para mostrar el valor de los hechos de Ansible.

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

Nota :los datos de Ansible solo se recuperan cuando se trabaja con playbooks. Para acceder a los datos de Ansible mediante comandos ad-hoc, use la setup módulo.

Uso del libro de jugadas de Ansible

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

ansible_facts["ansible_system"] ❌

ansible_facts["sistema"] ✔️

Los gather_facts El módulo del libro de jugadas de Ansible ejecuta la setup módulo de forma predeterminada al comienzo de cada libro de jugadas para recopilar información sobre los hosts remotos.

3. Acceder a hechos usando el libro de jugadas de Ansible

Obtenga los datos de Ansible y muéstrelos con un libro de jugadas.

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

4. Acceder a un hecho específico mediante un libro de jugadas de Ansible

Obtener los datos de Ansible, filtrarlos y mostrarlos mediante un libro de jugadas.

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

Hechos de Ansible y el tipo de datos

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 en su mayoría hechos que pueden tener múltiples valores, por ejemplo, system_capablities . Se accede a la lista usando corchetes y especificando el índice.

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

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

    ansible_facts.memory_mb.real

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

    ansible_facts["machine"]

Usa type_debug filtro para verificar el tipo de datos para 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 El filtro solicita el tipo de datos para el hecho especificado sin imprimir el valor del hecho.

[ ¿Busca más información sobre la automatización de sistemas? Comience con The Automated Enterprise, un libro gratuito de Red Hat. ] 

Resumir

Los hechos de Ansible son datos sobre el sistema que desea configurar. Estos hechos hacen que su sistema Ansible sea inteligente al proporcionar las condiciones para procesar alguna tarea. También puede procesar si no especifica ni usa los datos de Ansible, pero eso haría que el trabajo como administrador de sistemas fuera más agitado, ya que la secuencia de comandos puede fallar o cambiar algunos de los archivos que nunca se pretendieron modificar.

Para obtener más información sobre los datos de Ansible, consulte la documentación oficial.


Linux
  1. Lenguaje de programación C - Introducción

  2. Una introducción al editor vi

  3. Deconstruyendo un libro de jugadas de Ansible

  4. Comprender YAML para Ansible

  5. Una breve introducción a los roles de Ansible para la administración del sistema Linux

Una introducción a bpftrace para Linux

Introducción a Python Pandas

Cómo crear y usar datos personalizados en Ansible

Una introducción al navegador Vivaldi en Linux

Introducción a la plataforma de automatización de Ansible

Una breve introducción a Ansible Vault