Instalación de múltiples paquetes fácilmente en CentOS usando Ansible

Instalación de múltiples paquetes fácilmente en CentOS usando Ansible
En Ansible, puedes usar el DNF o beque módulo para instalar paquetes de software en hosts CentOS o RHEL. Por defecto, estos módulos instalan solo un solo paquete de software. Puedes usar el DNF o beque módulo varias veces en su libro de jugadas Ansible para instalar tantos paquetes de software como desee. Sin embargo, esta no es la forma más eficiente de hacer esto, ya que habrá mucha repetición del código que nos gustaría evitar si es posible si sea posible. Afortunadamente, podemos usar bucles para instalar fácilmente tantos paquetes de software como deseemos sin ninguna repetición de código.

Este artículo le mostrará cómo instalar múltiples paquetes de software en hosts CentOS/RHEL utilizando Ansible Loop. Entonces empecemos.

Requisitos previos

Si quieres probar los ejemplos en este artículo,
1) Debe tener Ansible instalado en su computadora.
2) Debe tener al menos un host CentOS/RHEL 7 u 8 configurado para la automatización Ansible.

Hay muchos artículos sobre Linuxhint dedicados a instalar Ansible y configurar hosts para Automatización Ansible. Puede verificarlos si es necesario.

Configuración de un directorio de proyecto

Antes de avanzar más, crearemos un directorio de proyecto, solo para mantener las cosas un poco organizadas.

Para crear el directorio del proyecto CENTOS-PKG/ y todos los subdirectorios requeridos (en su directorio de trabajo actual), ejecute el siguiente comando:

$ mkdir -pv centos -pkg/playbooks

Una vez que se crea el directorio del proyecto, navegue al directorio del proyecto, de la siguiente manera:

$ CD Centos-PKG/

A continuación, crea un Hospedadores archivo de inventario, como sigue:

$ nano anfitriones

Agregue el nombre IP o DNS de host (VM3.notekita.comunicarse, En mi caso) de sus hosts CentOS/RHEL en el archivo de inventario (un host por línea).

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

Crear un archivo de configuración ansible ansible.CFG En su directorio de proyecto, como sigue:

$ nano ansible.CFG

Luego, escriba las siguientes líneas en el ansible.CFG archivo.

[Valores predeterminados]
inventario = hosts
host_key_checking = falso

Una vez que haya terminado, guarde el ansible.CFG Archivo presionando + X, seguido por Y y .

Intenta hacer ping a todos los hosts CentOS/RHEL que has agregado en tu Hospedadores archivo de inventario, como sigue:

$ ansible all -u ansible -m ping

Como puede ver, mi host CentOS 8 es accesible.

Instalación de un solo paquete de software

Esta sección le mostrará cómo instalar un solo paquete de software utilizando el DNF o beque Módulo de Ansible en sus hosts CentOS/RHEL.

Primero, crea el nuevo libro de jugadas paquete de instalación.yaml en el Libros de jugadas/ Directorio, como sigue:

$ Nano Playbooks/install_package.yaml

A continuación, escriba las siguientes líneas en el paquete de instalación.yaml archivo.

- Anfitriones: todos
Usuario: Ansible
hecho realidad
tareas:
- Nombre: Instalar el paquete HTTPD
DNF:
Nombre: httpd
Estado: presente
update_cache: verdadero

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

Aquí, solo he agregado una tarea, Instalar el paquete HTTPD. El propósito de esta tarea es instalar el httpd Paquete en CentOS/RHEL 8.

CentOS/RHEL 7 no usa el DNF Administrador de paquetes, utiliza el beque gerente de empaquetación. Entonces, si está utilizando CentOS/RHEL 7, cambie DNF a beque, como se marca en la captura de pantalla a continuación. No se requieren otros cambios.

El nombre La opción se usa para decirle al DNF o beque módulo el nombre del paquete que está intentando instalar. En este caso, será el httpd paquete.

El estado La opción se usa para decirle al DNF o beque módulo la acción (yo.mi. instalar, actualizar, eliminar) debe tomar el paquete dado. En este caso, la acción es presente.

Los valores compatibles del estado La opción es:

presente - Instalará el paquete si aún no está instalado.

el último - Instalará el paquete si aún no está instalado; Si ya está instalado, el módulo verificará las actualizaciones; Si hay una versión actualizada del paquete disponible, instalará la nueva versión.

ausente - eliminará el paquete si está instalado.

Si el update_cache La opción está configurada en Verdadero, El caché del repositorio del paquete DNF/YUM se actualizará antes de instalar el paquete.

Ejecutar el paquete de instalación.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/install_package.yaml

Como puedes ver, el libro de jugadas paquete de instalación.yaml corrió con éxito.

Como puedes ver, el httpd El paquete está instalado en mi host Centos 8, que he agregado en mi Hospedadores archivo de inventario.

$ sudo DNF Lista instalada | grep httpd

Si está en CentOS/RHEL 7, use el beque Administrador de paquetes en lugar del DNF Administrador de paquetes para verificar si el paquete está instalado.

$ sudo yum lista instalada | grep httpd

Instalación de múltiples paquetes de software utilizando el bucle with_items

La sección anterior de este artículo le mostró cómo instalar un solo paquete de software en su host CentOS/RHEL utilizando el Ansible DNF/beque módulo. Esta sección le mostrará cómo instalar múltiples paquetes de software en sus hosts CentOS/RHEL utilizando el Ansible With_items bucle.

Primero, crea el nuevo libro de jugadas install_packages.yaml, como sigue:

$ Nano Playbooks/install_packages.yaml

Escriba las siguientes líneas en el install_packages.yaml archivo.

- Anfitriones: todos
Usuario: Ansible
hecho realidad
tareas:
- Nombre: Instale todos los paquetes
DNF:
Nombre: 'item'
Estado: presente
update_cache: verdadero
with_items:
httpd
php
VSFTPD

Una vez que haya terminado, presione + X, seguido por Y y , Para salvar el install_packages.yaml archivo.

Aquí, he definido los nombres de los paquetes (httpd, php, VSFTPD) que quiero instalar usando With_items bucle.

He reemplazado el nombre del paquete con la variable artículo. El artículo La variable se actualizará con el nombre del paquete en cada iteración.

Ejecutar el install_packages.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/install_packages.yaml

Como puedes ver, el libro de jugadas install_packages.yaml corrió con éxito.

El httpd, php, y VSFTPD Los paquetes se instalan en mi host CentOS 8, como puede ver en la captura de pantalla a continuación.

$ sudo DNF Lista instalada | grep httpd
$ sudo DNF Lista instalada | Grep PHP
$ sudo DNF Lista instalada | GREP VSFTPD

Instalación de múltiples paquetes de software utilizando el bucle de bucle

A partir de Ansible 2.5, la forma recomendada de usar bucles en su libro de jugadas es usar el bucle palabra clave, en lugar de la With_items palabra clave. Por eso viste un mensaje de advertencia cuando ejecuté el install_packages.yaml Libro de jugadas en la sección anterior de este artículo.

Trabajar con bucles utilizando el bucle La palabra clave es muy fácil.

Primero, abra el libro de jugadas install_packages.yaml (del ejemplo anterior), como sigue:

$ Nano Playbooks/install_packages.yaml

En el install_packages.yaml Playbook, solo reemplace el término With_items con el término bucle, como se marca en la captura de pantalla a continuación. No necesitas cambiar nada más.

Una vez que haya terminado, presione + X, seguido por Y y , Para salvar el install_packages.yaml archivo.

Ejecutar el install_packages.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/install_packages.yaml

Como puede ver, la tarea Instalar todos los paquetes corrió el DNF/beque módulo tres veces en total; Una vez para cada bucle artículo.

El httpd, php, y VSFTPD Los paquetes se instalan en mi host CentOS 8, como puede ver en la captura de pantalla a continuación.

$ sudo DNF Lista instalada | grep httpd
$ sudo DNF Lista instalada | Grep PHP
$ sudo DNF Lista instalada | GREP VSFTPD

Instalación de múltiples paquetes de software utilizando la sintaxis de la matriz

Las secciones anteriores de este artículo le mostraron cómo usar el With_items y bucle bucles en Ansible para instalar múltiples paquetes de software en CentOS/RHEL 7 u 8, sin ninguna repetición de código. Esta sección le mostrará cómo hacer lo mismo con una sintaxis de matriz más simple.

Primero, abra el install_packages.yaml Libro de jugadas, como sigue:

$ Nano Playbooks/install_packages.yaml

Eliminar el With_items o bucle sección de la tarea y cambiar el nombre opción para ['httpd', 'php', vsftpd '], como se marca en la captura de pantalla a continuación.

Una vez que haya terminado, presione + X, seguido por Y y , Para salvar el install_packages.yaml libro de jugadas.

Aquí, cada cadena citada dentro de los soportes cuadrados ([]) es un elemento de matriz (el nombre del paquete de software, en mi caso). Cada elemento de matriz debe estar separado por una coma (,). Puede agregar tantos elementos de matriz como desee. He agregado solo tres elementos, httpd, php, y VSFTPD.

Ejecutar el install_packages.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/install_packages.yaml

Como puede ver, los paquetes de software httpd, php, y VSFTPD están instalados en mi host Centos 8.

$ sudo DNF Lista instalada | grep httpd
$ sudo DNF Lista instalada | Grep PHP
$ sudo DNF Lista instalada | GREP VSFTPD

Conclusión

Este artículo te mostró cómo usar el With_items y bucle bucles, así como la sintaxis de la matriz, con el ansible beque/DNF Módulo para instalar múltiples paquetes de software en sus hosts CentOS/RHEL 7 u 8.

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

[1] Documentación oficial de bucles Ansible
[2] Documentación oficial de Ansible with_items
[3] Documentación oficial del módulo DNF Ansible
[4] Documentación oficial del módulo Yum Ansible