Ansible

Instalar varios paquetes fácilmente en CentOS usando Ansible

Instalar varios paquetes fácilmente en CentOS usando Ansible
En Ansible, puede utilizar el dnf o mmm módulo para instalar paquetes de software en hosts CentOS o RHEL. De forma predeterminada, estos módulos instalan solo un paquete de software. Puedes usar el dnf o mmm módulo varias veces en su libro de jugadas de 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 de código que nos gustaría evitar si es posible. Afortunadamente, podemos usar bucles para instalar fácilmente tantos paquetes de software como queramos sin repetición de código.

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

Prerrequisitos

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

Hay muchos artículos sobre LinuxHint dedicados a la instalación de Ansible y la configuración de hosts para la automatización de Ansible. Puede consultar estos si es necesario.

Configurar un directorio de proyectos

Antes de continuar, 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 necesarios (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 hasta el directorio del proyecto, de la siguiente manera:

$ cd centos-pkg /

A continuación, cree un Hospedadores archivo de inventario, de la siguiente manera:

$ nano hosts

Agregue la IP del host o el nombre DNS (vm3.nodekite.com, 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 .

Cree un archivo de configuración de Ansible ansible.cfg en el directorio de su proyecto, de la siguiente manera:

$ nano ansible.cfg

Luego, escriba las siguientes líneas en el ansible.cfg expediente.

[valores predeterminados]
inventario = hosts
host_key_checking = Falso

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

Intente hacer ping a todos los hosts CentOS / RHEL que ha agregado en su Hospedadores archivo de inventario, de la siguiente manera:

$ ansible all -u ansible -m ping

Como puede ver, mi host CentOS 8 es accesible.

Instalación de un paquete de software único

Esta sección le mostrará cómo instalar un único paquete de software utilizando el dnf o mmm 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, de la siguiente manera:

$ nano playbooks / install_package.yaml

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

- hosts: 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í, he agregado solo 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 utiliza el dnf administrador de paquetes, utiliza el mmm gerente de empaquetación. Entonces, si está usando CentOS / RHEL 7, cambie dnf a mmm, como se marca en la captura de pantalla a continuación. No se requieren otros cambios.

La nombre La opción se usa para decirle a la dnf o mmm módulo el nombre del paquete que está intentando instalar. En este caso, será el httpd paquete.

La Expresar La opción se usa para decirle a la dnf o mmm módulo la acción (i.mi. instalar, actualizar, eliminar) debería tomar el paquete dado. En este caso, la acción es regalo.

Los valores admitidos del Expresar las opciones son:

regalo - instalará el paquete si aún no está instalado.

último - instalará el paquete si aún no está instalado; si ya está instalado, el módulo buscará 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 Cierto, la caché del repositorio de paquetes DNF / YUM se actualizará antes de que se instale el paquete.

Ejecutar el paquete de instalación.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / install_package.yaml

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

Como puede 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 mmm administrador de paquetes en lugar del dnf administrador de paquetes para verificar si el paquete está instalado.

$ sudo yum list instalado | grep httpd

Instalación de varios paquetes de software mediante el bucle with_items

La sección anterior de este artículo le mostró cómo instalar un único paquete de software en su host CentOS / RHEL utilizando Ansible dnf/mmm módulo. Esta sección le mostrará cómo instalar múltiples paquetes de software en sus hosts CentOS / RHEL usando Ansible with_items círculo.

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 expediente.

- hosts: todos
usuario: ansible
hecho realidad
Tareas:
- nombre: instala 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 expediente.

Aquí, he definido los nombres de los paquetes (httpd, php, vsftpd) que quiero instalar usando with_items círculo.

Reemplacé el nombre del paquete con la variable Articulo. La Articulo La variable se actualizará con el nombre del paquete en cada iteración.

Ejecutar el install_packages.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / install_packages.yaml

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

La httpd, php, y vsftpd los paquetes están instalados 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 varios paquetes de software mediante el loop Loop

A partir de Ansible 2.5, la forma recomendada de utilizar bucles en su libro de jugadas es mediante el círculo palabra clave, en lugar de la with_items palabra clave. Es por eso que vio 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 usando el círculo la palabra clave es muy fácil.

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

$ nano playbooks / install_packages.yaml

En el install_packages.yaml libro de jugadas, simplemente reemplace el término with_items con el término círculo, 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 expediente.

Ejecutar el install_packages.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / install_packages.yaml

Como puede ver, la tarea Instala todos los paquetes corrió el dnf/mmm módulo tres veces en total; una vez por cada bucle Articulo.

La httpd, php, y vsftpd los paquetes están instalados 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 varios paquetes de software mediante la sintaxis de matriz

Las secciones anteriores de este artículo le mostraron cómo utilizar la with_items y círculo bucles en Ansible para instalar varios paquetes de software en CentOS / RHEL 7 u 8, sin 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, de la siguiente manera:

$ nano playbooks / install_packages.yaml

Eliminar el with_items o círculo sección de la tarea y cambie el nombre opción a ['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 entre comillas dentro de los corchetes ([]) es un elemento de matriz (el nombre del paquete de software, en mi caso). Cada elemento de la 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, de la siguiente manera:

$ 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 le mostró cómo utilizar el with_items y círculo bucles, así como la sintaxis Array, con Ansible mmm/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 los bucles Ansible
[2] Documentación oficial de Ansible with_items
[3] Documentación oficial del módulo dnf de Ansible
[4] Documentación oficial del módulo Ansible yum

El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...
Cómo invertir la dirección de desplazamiento del mouse y los paneles táctiles en Windows 10
Ratón y Panel táctils no solo facilitan la informática, sino que también hacen que sea más eficiente y requieran menos tiempo. No podemos imaginar una...