Ansible cuando condicional

Ansible cuando condicional
Ansible admite evaluaciones condicionales antes de ejecutar una tarea específica en los hosts de destino. Si la condición establecida es verdadera, Ansible continuará y realizará la tarea. Si la condición no es verdadera (insatisfecha), Ansible omitirá la tarea especificada.

Para implementar condiciones en Ansible, usamos el Cuando la palabra clave. La palabra clave toma expresiones booleanas basadas en un valor o una variable de tareas o hechos anteriores recopilados de los hosts remotos.

Esta guía le enseñará cómo implementar las condiciones en los libros de jugadas Ansible utilizando la palabra clave When.

ANSIBLE CUANDO CONDICIONALES: Uso básico

La palabra clave When toma una sintaxis simple:

Cuándo: (condición booleana)

Asegúrese de pasar una condición que evalúe a verdadero o falso.

Por ejemplo:

Cuándo: ansible_pkg_mgr == "yum"
Cuándo: ansible_user_shell "=="/bin/bash "

Si desea combinar múltiples condiciones, puede usar operadores lógicos como y, y no.

Cuándo: (condición 1) y (condición2)
Cuándo: (condición1) o (condición2)

Para comprender cómo usar el Ansible cuando la palabra clave, usaremos ejemplos prácticos.

Ejemplo 1

El primer ejemplo creará un usuario si el usuario especificado no existe en el host remoto.

---
- Anfitriones: todos
gateo_facts: no
hecho realidad
tareas:
- Nombre: checkifdirectoryExist
estadística:
Path: /Home /Ubuntu
Registrarse: Dir
- Nombre: CreateFileifDirectoryExists
archivo:
ruta:/home/ubuntu/archivo.TXT
Estado: tocar
Cuándo: Dir.estadística.existe

El ejemplo anterior comienza verificando si el directorio de inicio del usuario de Ubuntu está disponible. Luego usamos la condición When para crear un archivo de texto si el directorio está disponible.

Ejemplo 2

El siguiente ejemplo apaga todos los hosts remotos de Ubuntu usando una condición When.

---
- Anfitriones: todos
gather_facts: si
hecho realidad
tareas:
- Nombre: Shutdownubuntuservers
comando: /sbin /shutdown-tnow
Cuándo: ansible_facts ['OS_Family'] == "Ubuntu"

En el ejemplo anterior, usamos hechos reunidos para evaluar si los servidores son de la familia Ubuntu. Si es cierto, apague los servidores.

Ejemplo 3

En el ejemplo a continuación, combinamos dos condiciones que usan un operador y un operador.

---
- Anfitriones: todos
gather_facts: si
hecho realidad
tareas:
- Nombre: installapacheserver
ansible.incorporado.paquete:
Nombre: httpd
Estado: último
Cuándo: (ansible_facts ['OS_Family'] == "Debian") y
(ansible_facts ['ansible_distribution_major_version'] == 10)

El ejemplo anterior verifica si los hosts son hosts Debian y si la versión de distribución es igual a Debian 10.

Ejemplo 4

Instalamos el servidor web de Apache en el libro de jugadas a continuación si la familia anfitriona es un anfitrión de Debian o Ubuntu.

El libro de jugadas utiliza un operador lógico.

---
- Anfitriones: todos
gather_facts: si
hecho realidad
tareas:
- Nombre: installapacheserver
ansible.incorporado.paquete:
Nombre: httpd
Estado: último
Cuándo: (ansible_facts ['OS_Family'] == "Debian") o
(ansible_facts ['OS_FAMILY'] == "Ubuntu")

Ejemplo 5

Considere el libro de jugadas a continuación que actualiza el servidor NGINX a la última versión utilizando el operador no.

---
- Anfitriones: todos
- shell: /sbin /nginx-v2> y 1
Registrarse: versión
gather_facts: si
hecho realidad

tareas:
- Nombre: installapacheserver
ansible.incorporado.paquete:
Nombre: Nginx
Estado: último
Cuándo: ('"nginx/1.19.0 "Notversión.stdout ')

Si la salida del servidor NGINX no es la versión actual, instale la versión actual del paquete.

Conclusión

En esta guía, discutimos cómo trabajar con condicionales en Ansible usando la palabra clave cuando.

Gracias por leer!