LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

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:

Archivo de hosts de ejemplo
[group_name]
alias ansible_ssh_host=your_server_ip

Es group_nameuna 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.2y 192.0.2.3. Configuremos esto para que podamos referirnos a ellos individualmente como host1, host2y host3, o como grupo como servers. Para configurar esto, agregaría este bloque a su archivo de hosts:

/etc/ansible/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 error
host1 | 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:

/etc/ansible/group_vars/servidores
---
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 pingparte 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 allporció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 shellmó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 -amodificador. Así es como podría verse el resultado:

Output
host1 | 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 ansiblecomando 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.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías