![Cómo instalar LAMP Stack en AlmaLinux 8.4](/f/041ae9421860fc1c00ed28aaf0edec2d.png?width=100&height=100)
Hemos mencionado variables en este Serie Ansible y solo para refrescar un poco tu mente. A variable, al igual que en muchos lenguajes de programación, es esencialmente una clave que representa un valor.
El nombre de una variable incluye letras, números, guiones bajos o una combinación de 2 o de todos. Sin embargo, tenga en cuenta que el nombre de una variable siempre debe comenzar con una letra y no debe contener espacios.
Echemos un vistazo a algunos ejemplos de nombres de variables válidos e inaceptables:
fútbol soccer_ball. football20 foot_ball20.
fútbol. 20 pies de pelota.
Analicemos los tipos de variables:
Libro de jugadas las variables son bastante fáciles y directas. Para definir una variable en un libro de jugadas, simplemente use la palabra clave vars antes de escribir sus variables con sangría.
Para acceder al valor de la variable, colóquelo entre las llaves dobles entre comillas.
A continuación, se muestra un ejemplo sencillo de un libro de jugadas:
- hosts: todas las vars: saludo: ¡Hola Mundo! tareas: - nombre: Variable básica de Ansible Ejemplo debug: msg: "{{ saludo }}"
En el libro de jugadas anterior, el saludo la variable se sustituye por el valor ¡Hola Mundo! cuando se ejecuta el libro de jugadas. El libro de jugadas simplemente imprime el mensaje ¡Hola Mundo! cuando se ejecuta.
Además, puede tener una lista o una matriz de variables como se muestra:
El libro de jugadas a continuación muestra una variable llamada continentes. La variable tiene 5 valores diferentes: nombres de continentes. Se puede acceder fácilmente a cada uno de estos valores utilizando índice 0 como la primera variable.
El ejemplo del libro de jugadas a continuación recupera y muestra Asia (índice 1).
- hosts: todas las vars: continentes: - África - Asia - América del Sur - América del Norte - Europa tareas: - nombre: Variable de lista Ansible Ejemplo debug: msg: "{{continents [1]}}"
La lista de variables se puede estructurar de manera similar como se muestra:
vars: Continentes: [África, Asia, Sudamérica, Norteamérica, Europa]
Para enumerar todos los elementos de la lista, utilice el with_items módulo. Esto recorrerá todos los valores de la matriz.
- hosts: todas las vars: continentes: [África, Asia, América del Sur, América del Norte, Europa] tareas: - nombre: Variables de matriz de Ansible ejemplo debug: msg: "{{ Articulo }} "with_items: -" {{ continentes }}"
Otro tipo de variable de Ansible es la diccionario variable.
Diccionario Las variables también se admiten en el libro de jugadas. Para definir la variable del diccionario, simplemente identifique el par clave-valor justo debajo del nombre de la variable del diccionario.
hosts: switch_f01 vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 puerto: 2.
En el ejemplo anterior, vlans es la variable del diccionario mientras identificación y Puerto son los pares clave-valor.
hosts: switch_f01 vars: http_port: 8080 default_gateway: vlans: id: 10 puerto: 20 tareas: nombre: Configurar la puerta de enlace predeterminada system_configs: default_gateway_ip: "{{default_gateway}}" nombre: Puerto de etiqueta en vlan 10 vlan_config: vlan_id: "{{ vlans ['id']}} " port_id: 1/1 / {{vlans ["puerto"]}}
Para port_id, dado que comenzamos el valor con texto y no con la variable, las comillas no son necesarias para rodear las llaves.
Ansible proporciona una lista de variables predefinidas a las que se puede hacer referencia en Plantillas y playbooks de Jinja2 pero el usuario no puede modificarlo ni definirlo.
En conjunto, la lista de variables predefinidas de Ansible se denomina Hechos ansibles y estos se recopilan cuando se ejecuta un libro de jugadas.
Para obtener una lista de todas las variables de Ansible, use el configuración módulo en el Comando ad-hoc de Ansible Como se muestra abajo:
# ansible -m configura el nombre de host.
Esto muestra la salida en formato JSON como se muestra:
# ansible -m configuración localhost.
En la salida, podemos ver que algunos de los ejemplos de variables especiales de Ansible incluyen:
ansible_architecture. ansible_bios_date. ansible_bios_version. ansible_date_time. ansible_machine. ansible_memefree_mb. ansible_os_family. ansible_selinux.
Hay muchas otras variables especiales de Ansible, estos son solo algunos ejemplos.
Estas variables se pueden utilizar en una Jinja2 plantilla como se muestra:
El nombre de host de este servidor web es {{ansible_hostname}}
Se está ejecutando en {{ansible_os_family}}sistema
Por último, en la lista, tenemos las variables de inventario de Ansible. Un inventario es un archivo en INI formato que contiene todos los hosts que administrará Ansible.
En los inventarios, puede asignar una variable a un sistema host y luego usarla en un libro de jugadas.
[web_servers] web_server_1 ansible_user = centos http_port = 80. servidor_web_2 ansible_user = ubuntu http_port = 8080.
Lo anterior se puede representar en un libro de jugadas. YAML archivo como se muestra:
servidores_web: servidor_web_1: ansible_user = centos http_port = 80 servidor_web_2: ansible_user = ubuntu http_port = 8080.
Si los sistemas host comparten las mismas variables, puede definir otro grupo en el archivo de inventario para hacerlo menos engorroso y evitar repeticiones innecesarias.
Por ejemplo:
[web_servers] web_server_1 ansible_user = centos http_port = 80. servidor_web_2 ansible_user = centos http_port = 80.
Lo anterior se puede estructurar como:
[web_servers] servidor_web_1. web_server_2 [web_servers: vars] ansible_user = centos. http_port = 80.
Y en el libro de jugadas YAML archivo, esto se definirá como se muestra:
servidores_web: hosts: servidor_web_1: servidor_web_2: vars: ansible_user = centos http_port = 80.
Al ejecutar libros de jugadas, la primera tarea que realiza Ansible es la ejecución de la tarea de configuración. Estoy bastante seguro de que debe haber encontrado el resultado:
TAREA: [Recopilación de datos] *********
Los hechos de Ansible no son más que propiedades del sistema o piezas de información sobre los nodos remotos a los que se ha conectado. Esta información incluye la arquitectura del sistema, la versión del sistema operativo, la información del BIOS, la fecha y hora del sistema, el tiempo de actividad del sistema, la dirección IP y la información del hardware, por mencionar solo algunos.
Para obtener los datos sobre cualquier sistema, simplemente use el configuración módulo como se muestra en el siguiente comando:
# ansible -m configura el nombre de host.
Por ejemplo:
# ansible -m configuración servidor_basedatos.
Esto imprime un gran conjunto de datos en JSON formato como se muestra:
Los hechos de Ansible son útiles para ayudar a los administradores del sistema a qué operaciones llevar a cabo, por ejemplo, dependiendo de la sistema operativo, pueden saber qué paquetes de software deben instalarse y cómo deben configurarse, etc.
¿Sabía también que puede crear sus propios datos personalizados que Ansible puede recopilar? Sí tu puedes. Entonces cómo vas acerca de ésto? Cambiemos de velocidad y veamos cómo.
El primer paso es crear un /etc/ansible/facts.d directorio en el nodo administrado o remoto.
Dentro de este directorio, cree un archivo (s) con un .hecho
extensión. Este archivo (s) volverá JSON datos cuando el libro de jugadas se ejecuta en el nodo de control de Ansible, que incluye los otros datos que Ansible recupera después de ejecutar un libro de jugadas.
A continuación, se muestra un ejemplo de un archivo de hechos personalizado llamado date_time.fact que recupera la fecha y la hora.
# mkdir -p /etc/ansible/facts.d. # vim /etc/ansible/facts.d/date_time.fact.
Agregue las siguientes líneas en él.
#! / bin / bash. FECHA = `fecha` echo "{\" fecha \ ": \" $ {FECHA} \ "}"
Guardar y salir del archivo.
Ahora asigne los permisos de ejecución:
# chmod + x /etc/ansible/facts.d/date_time.fact.
Ahora, creé un libro de jugadas en el nodo de control de Ansible llamado check_date.yml.
- hosts: tareas del servidor web: - nombre: obtener hechos personalizados debug: msg: el hecho personalizado es {{ansible_local.date_time}}
Anexe el archivo de hechos al ansible_local variable. El ansible_local almacena todos los hechos personalizados.
Ahora ejecute el libro de jugadas y observe cómo Ansible recupera la información guardada en el archivo de hechos:
# ansible_playbook check_date.yml.
Esto nos lleva al final de este tutorial sobre cómo trabajar con variables y hechos de Ansible.