Ansible es una plataforma de automatización de código abierto que incluye gestión de configuración, implementación de aplicaciones y orquestación de infraestructura. Es una herramienta de automatización popular para ingenieros de DevOps y administradores de sistemas. Los administradores de sistemas a menudo se enfrentan al agotamiento de su carrera debido a las largas horas y a la realización de tareas repetitivas en muchos sistemas, pero Ansible ayuda a que estas tareas sean más fáciles de completar. Las tareas como la creación de usuarios, la gestión de servicios y las instalaciones de software se pueden realizar con Ansible. Ansible se basa en procedimientos en lugar de declarativo, lo que significa que escribe todos los pasos necesarios en un archivo YAML y luego los ejecuta secuencialmente en todos los sistemas de destino.
[ También le puede interesar leer: Uso de un libro de jugadas de Ansible para administrar actualizaciones de estaciones de trabajo y servidores ]
Nodos
En la arquitectura Ansible, tiene un nodo controlador y nodos administrados. Ansible está instalado solo en el nodo del controlador. Es una herramienta sin agentes y no necesita instalarse en los nodos administrados. El controlador y los nodos administrados se conectan mediante el protocolo SSH. Todas las tareas se escriben en un "libro de jugadas" utilizando el lenguaje YAML. Cada libro de jugadas puede contener varias jugadas, que contienen tareas y las tareas contienen módulos . Los módulos son secuencias de comandos independientes reutilizables que gestionan algún aspecto del comportamiento de un sistema. Los módulos de Ansible también se conocen como complementos de tareas o complementos de biblioteca.
Funciones
Los libros de jugadas para tareas complejas pueden volverse largos y, por lo tanto, difíciles de leer y comprender. La solución a este problema son los roles de Ansible. . Al usar roles, puede dividir libros de jugadas largos en varios archivos, lo que hace que cada libro de jugadas sea fácil de leer y comprender. Los roles son una colección de plantillas, archivos, variables, módulos y tareas. El propósito principal detrás de los roles es reutilizar el código de Ansible. Los ingenieros y administradores de sistemas de DevOps siempre deben intentar reutilizar su código. Un rol de Ansible puede contener varios playbooks. Puede reutilizar fácilmente el código escrito por cualquier persona si el rol es adecuado para un caso determinado. Por ejemplo, podría escribir un libro de jugadas para el alojamiento de Apache y luego reutilizar este código cambiando el contenido de index.html
para modificar las opciones de alguna otra aplicación o servicio.
La siguiente es una descripción general de la estructura de funciones de Ansible. Consta de muchos subdirectorios, como:
|-- README.md
|-- defaults
|-------main.yml
|-- files
|-- handlers
|-------main.yml
|-- meta
|-------main.yml
|-- tasks
|-------main.yml
|-- templates
|-- tests
|-------inventory
|-- vars
|-------main.yml
Inicialmente, todos los archivos se crean vacíos mediante el ansible-galaxy
dominio. Entonces, dependiendo de la tarea, puede usar estos directorios. Por ejemplo, las vars
directorio almacena variables. En las tasks
directorio, tienes main.yml
, que es el libro de jugadas principal. Las templates
El directorio es para almacenar plantillas Jinja. Los handlers
El directorio es para almacenar controladores.
Ventajas de los roles de Ansible:
- Permitir la reutilización de contenido
- Haga que los proyectos grandes sean manejables
Los roles de Ansible son directorios estructurados que contienen subdirectorios.
Pero, ¿sabía que Red Hat Enterprise Linux también proporciona algunos roles del sistema Ansible para administrar las tareas del sistema operativo?
Roles del sistema
Los rhel-system-roles
El paquete está disponible en el canal Extras (EPEL). Los rhel-system-roles
El paquete se utiliza para configurar hosts RHEL. Hay siete rhel-system-roles
predeterminados disponible:
- rhel-system-roles.kdump:esta función configura el servicio de recuperación de fallas de kdump. Kdump es una característica del kernel de Linux y es útil cuando se analiza la causa de un bloqueo del kernel.
- rhel-system-roles.network:esta función está dedicada a las interfaces de red. Esto ayuda a configurar interfaces de red en sistemas Linux.
- rhel-system-roles.selinux:este rol administra SELinux. Esto ayuda a configurar el modo SELinux, los archivos, el contexto del puerto, etc.
- rhel-system-roles.timesync:este rol se usa para configurar NTP o PTP en su sistema Linux.
- rhel-system-roles.postfix:esta función se dedica a administrar el agente de transferencia de correo de Postfix.
- rhel-system-roles.firewall:como sugiere el nombre, este rol se trata de administrar la configuración del firewall del sistema host.
- rhel-system-roles.tuned:Tuned es un servicio de ajuste del sistema en Linux para monitorear los dispositivos conectados. Entonces, esta función es configurar el servicio ajustado para el rendimiento del sistema.
Los rhel-system-roles
El paquete se deriva de los roles del sistema Linux de código abierto. Esta función del sistema Linux está disponible en Ansible Galaxy. Los rhel-system-roles
es compatible con Red Hat, por lo que puede pensar en esto como si rhel-system-roles
están aguas abajo de los roles del sistema Linux. Para instalar rhel-system-roles
en su máquina, use:
$ sudo yum -y install rhel-system-roles
or
$ sudo dnf -y install rhel-system-roles
Estos roles se encuentran en el /usr/share/ansible/roles/
directorio.
Esta es la ruta predeterminada, por lo que siempre que use libros de jugadas para hacer referencia a estos roles, no necesita incluir explícitamente la ruta absoluta. También puede consultar la documentación para usar roles de Ansible. La ruta de la documentación es /usr/share/doc/rhel-system-roles
El directorio de documentación para cada rol tiene información detallada sobre ese rol. Por ejemplo, el archivo README.md es un ejemplo de ese rol, etc. La documentación se explica por sí misma.
El siguiente es un ejemplo de un rol.
Ejemplo
Si desea cambiar el modo SELinux de la máquina host local o cualquier máquina host, utilice los roles del sistema. Para esta tarea, use rhel-system-roles.selinux
Para esta tarea, el libro de jugadas de ansible tiene este aspecto:
---
- name: a playbook for SELinux mode
hosts: localhost
roles:
- rhel-system-roles.selinux
vars:
- selinux_state: disabled
Después de ejecutar el libro de jugadas, puede verificar si el modo SELinux cambió o no.
[ ¿Busca más información sobre la automatización de sistemas? Comience con The Automated Enterprise, un libro gratuito de Red Hat. ]
Resumir
Esta breve introducción a los roles de Ansible debería ser suficiente para comenzar a usarlos en sus libros de jugadas. Recuerde que Ansible está destinado a agilizar y simplificar esas tareas repetitivas y facilitarle la vida a su administrador de sistemas.