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
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
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: todosusuario: 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
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: todosusuario: 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
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
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
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