LinuxParty
Los sistemas de gestión de configuración están diseñados para facilitar el control de una gran cantidad de servidores a los administradores y equipos de operaciones. Le permiten controlar muchos sistemas diferentes de forma automatizada desde una ubicación central. Si bien hay muchos sistemas populares de gestión de configuración disponibles para sistemas Linux, como Chef y Puppet, estos suelen ser más complejos de lo que mucha gente quiere o necesita. Ansible es una excelente alternativa a estas opciones porque tiene una sobrecarga mucho menor para comenzar.
Ansible funciona configurando máquinas cliente desde una computadora con componentes de Ansible instalados y configurados. Se comunica a través de canales SSH normales para recuperar información de máquinas remotas, emitir comandos y copiar archivos. Debido a esto, un sistema Ansible no requiere la instalación de ningún software adicional en las computadoras cliente. Esta es una forma en que Ansible simplifica la administración de servidores. Cualquier servidor que tenga un puerto SSH expuesto puede incluirse bajo el paraguas de configuración de Ansible, independientemente de en qué etapa de su ciclo de vida se encuentre.
Ansible adopta un enfoque modular, lo que facilita su ampliación para utilizar las funcionalidades del sistema principal para abordar escenarios específicos. Los módulos se pueden escribir en cualquier idioma y comunicarse en JSON estándar. Los archivos de configuración se escriben principalmente en el formato de serialización de datos YAML debido a su naturaleza expresiva y su similitud con los lenguajes de marcado populares. Ansible puede interactuar con los clientes a través de herramientas de línea de comandos o mediante sus scripts de configuración llamados Playbooks.
En esta guía, instalará Ansible en un servidor CentOS pero es extensible a las versiones de RedHat, AlmaLinux, RockyLinux y Fedora y aprenderá algunos conceptos básicos sobre cómo usar el software.
Requisitos previos
Para seguir este tutorial, necesitarás:
- Al menos un servidor CentOS 7. Siga los pasos en Configuración inicial del servidor con CentOS 7 para crear un usuario no root y asegúrese de poder conectarse al servidor sin contraseña.
Paso 1: instalar Ansible
Para comenzar a explorar Ansible como medio para administrar nuestros diversos servidores, necesitamos instalar el software Ansible en al menos una máquina.
Para obtener Ansible para CentOS 7, primero asegúrese de que el repositorio EPEL de CentOS 7 esté instalado:
sudo yum install epel-release
Una vez instalado el repositorio, instale Ansible con yum
:
sudo yum install ansible
Ahora tenemos todo el software necesario para administrar nuestros servidores a través de Ansible.
Paso 2: configurar hosts Ansible
Ansible realiza un seguimiento de todos los servidores que conoce a través de un archivo "hosts". Primero debemos configurar este archivo antes de poder comenzar a comunicarnos con nuestras otras computadoras.
Abra el archivo con privilegios de root como este:
sudo vi /etc/ansible/hosts
Verá un archivo que tiene muchas configuraciones de ejemplo comentadas. Guarde estos ejemplos en el archivo para ayudarle a conocer la configuración de Ansible si desea implementar escenarios más complejos en el futuro.
El archivo de hosts es bastante flexible y se puede configurar de diferentes maneras. Sin embargo, la sintaxis que vamos a utilizar se parece a esta:
[group_name] alias ansible_ssh_host=your_server_ip
Es group_name
una etiqueta organizativa que le permite hacer referencia a cualquier servidor enumerado debajo de ella con una palabra. El alias es sólo un nombre para referirse a ese servidor.
Imagine que tiene tres servidores que desea controlar con Ansible. Ansible se comunica con las computadoras cliente a través de SSH, por lo que se debe poder acceder a cada servidor que desee administrar desde el servidor de Ansible escribiendo:
ssh root@your_server_ip
No se le debería solicitar una contraseña. Si bien Ansible ciertamente tiene la capacidad de manejar la autenticación SSH basada en contraseña, las claves SSH ayudan a simplificar las cosas. Puede seguir el tutorial Cómo utilizar claves SSH con DigitalOcean Droplets para configurar claves SSH en cada host si aún no lo ha hecho.
Asumiremos que las direcciones IP de nuestros servidores son 192.0.2.1
, 192.0.2.2
y 192.0.2.3
. Configuremos esto para que podamos referirnos a ellos individualmente como host1
, host2
y host3
, o como grupo como servers
. Para configurar esto, agregaría este bloque a su archivo de hosts:
[servers] host1 ansible_ssh_host=192.0.2.1 host2 ansible_ssh_host=192.0.2.2 host3 ansible_ssh_host=192.0.2.3
Los anfitriones pueden estar en varios grupos y los grupos pueden configurar parámetros para todos sus miembros. Probemos esto ahora.
Ansible, de forma predeterminada, intentará conectarse a hosts remotos utilizando su nombre de usuario actual. Si ese usuario no existe en el sistema remoto, un intento de conexión generará este error:
Ansible connection errorhost1 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }
Digamos específicamente a Ansible que debe conectarse a los servidores del grupo "servidores" con el usuario sammy . Cree un directorio en la estructura de configuración de Ansible llamado group_vars
.
sudo mkdir /etc/ansible/group_vars
Dentro de esta carpeta podemos crear archivos con formato YAML para cada grupo que queramos configurar:
sudo nano /etc/ansible/group_vars/servers
Agregue este código al archivo:
--- ansible_ssh_user: sammy
Los archivos YAML comienzan con “—”, así que asegúrese de no olvidar esa parte.
Guarde y cierre este archivo cuando haya terminado. Ahora Ansible siempre usará el usuario sammy para el grupo servers
, independientemente del usuario actual.
Si desea especificar detalles de configuración para cada servidor, independientemente de la asociación del grupo, puede colocar esos detalles en un archivo en /etc/ansible/group_vars/all
. Los hosts individuales se pueden configurar creando archivos en un directorio en /etc/ansible/host_vars
.
Paso 3: usar comandos simples de Ansible
Ahora que tenemos nuestros hosts configurados y suficientes detalles de configuración para permitirnos conectarnos exitosamente a nuestros hosts, podemos probar nuestro primer comando.
Haga ping a todos los servidores que configuró escribiendo:
ansible -m ping all
Ansible devolverá un resultado como este:
Salida:host1 | SUCCESS => { "changed": false, "ping": "pong" } host3 | SUCCESS => { "changed": false, "ping": "pong" } host2 | SUCCESS => { "changed": false, "ping": "pong" }
Esta es una prueba básica para asegurarse de que Ansible tenga una conexión con todos sus hosts.
La -m ping
parte del comando es una instrucción para que Ansible utilice el módulo "ping". Estos son básicamente comandos que puedes ejecutar en tus hosts remotos. El módulo ping funciona de muchas maneras como la utilidad ping normal en Linux, pero en cambio verifica la conectividad de Ansible.
La all
porción significa "todos los anfitriones". También podrías especificar un grupo con la misma facilidad:
ansible -m ping servers
También puede especificar un host individual:
ansible -m ping host1
Puede especificar varios hosts separándolos con dos puntos:
ansible -m ping host1:host2
El shell
módulo nos permite enviar un comando de terminal al host remoto y recuperar los resultados. Por ejemplo, para conocer el uso de memoria en nuestra máquina host1, podríamos usar:
ansible -m shell -a 'free -m' host1
Como puede ver, pasa argumentos a un script usando el -a
modificador. Así es como podría verse el resultado:
Outputhost1 | SUCCESS | rc=0 >> total used free shared buffers cached Mem: 3954 227 3726 0 14 93 -/+ buffers/cache: 119 3834 Swap: 0 0 0
Conclusión
A estas alturas, debería tener su servidor Ansible configurado para comunicarse con los servidores que le gustaría controlar. Puede verificar que Ansible puede comunicarse con cada host que sepa cómo usar el ansible
comando para ejecutar tareas simples de forma remota.
Aunque esto es útil, no hemos cubierto la característica más poderosa de Ansible en este artículo: los Playbooks. Ha configurado una excelente base para trabajar con sus servidores a través de Ansible, por lo que su siguiente paso es aprender a usar Playbooks para hacer el trabajo pesado por usted.
-
Artículos
- El avión de Hidrógeno supersónico español que cambiará el futuro de la aviación
- El ultrabook Linux Plasma VI de KDE Slimbook se lanza con AMD Ryzen 7 8845HS
- Elon Musk: Las naves espaciales se lanzarán a Marte en 2026. Los vuelos tripulados serán posibles en 2028
- La Vía Láctea al final podría escaparse de la colisión predestinada contra la galaxia de Andrómeda
- El gobierno de EE. UU. pide a la industria de impresión 3D que ayude a detener la impresión de dispositivos de conversión de ametralladoras
- 5 razones por las que Linux superará a Windows y MacOS en el escritorio, próximamente
- El crecimiento de Linux: Un hito en su popularidad con un 4,55% según StatCounter
- Se lanzó la herramienta de rescate del sistema Super Grub2 Disk 2.06s4 con soporte para Btrfs
- Europa se sube al tren
- El encargado de mantenimiento de Rust para Linux se retira frustrado por una "tontería no técnica"
- Japón lucha por popularizar la semana laboral de cuatro días
- Pruebas del inframundo del antiguo Egipto y entrevista con Thomas Flynn
- Las 10 fórmulas y atajos de teclado de Excel (y LibreOffice) que todo el mundo debería saber según la Universidad de Harvard
- Las Redes Sociales Están Muertas
- Científicos identifican el origen y la composición del asteroide que hace 66 millones de años exterminó a los dinosaurios