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
- La versión candidata a la versión GIMP 3.0 ya está disponible para pruebas públicas
- Cómo ejecutar aplicaciones Android en Linux
- Cómo formatear discos en Linux desde la línea de comandos
- Cuarenta y tres monos escapan de un laboratorio de investigación en Estados Unidos
- Intel observa una mejora del rendimiento del 3888,9 % en el kernel de Linux: a partir de una línea de código
- Cómo crear un túnel SSH en Linux
- Cómo configurar el firewall UFW en Ubuntu en 5 minutos
- Linux Lite acaba de incorporar una útil función de inteligencia artificial para el escritorio, y es más sutil de lo que cree
- Cómo instalar Linux en una unidad USB y ejecutarlo en cualquier PC
- Phoca Desktop System Plugin 4.0.5 publicado
- Herramientas de IA para Traducciones Precisas y Naturales: Cómo Optimizar el Proceso
- 6 características que desearía que MacOS copiara de Linux
- Malware en Android: VPN y Apps Peligrosas en Play Store
- Probar el micrófono en Linux usando terminal o shell
- ¿Qué es peor que atrasar el reloj una hora? El horario de verano permanente