Cómo instalar y probar Ansible en Linux

Cómo instalar y probar Ansible en Linux

Ansible es una herramienta de administración de configuración ampliamente utilizada escrita en lenguaje Python que ayuda a configurar una o varias máquinas al mismo tiempo. Ansible se puede utilizar para realizar las siguientes tareas

  • Configuraci√≥n desde cero de uno o varios nodos
  • Despliegues
  • Cambios de configuraci√≥n
  • Parchar
  • Gesti√≥n De Servicios
  • y muchos m√°s

Ansible es ampliamente utilizado debido a su simplicidad. El código de Ansible también está escrito en lenguaje YAML, no necesita que se instale un agente en una máquina remota. Ansible usa el puerto 22 (SSH) para conectarse a una máquina remota y realizar los cambios necesarios.

Cualquier m√°quina que pueda conectarse a la m√°quina remota en el puerto 22 puede convertirse en un nodo de control. Un nodo de control es donde puede instalar Ansible y un nodo administrado se administra mediante nodos de control.

Echemos un vistazo a la instalación de Ansible en el nodo del controlador.

Instale Ansible en CentOS 7:

Como Python es el √ļnico requisito previo para instalar Ansible, instalemos Python ejecutando el siguiente comando.

$sudo yum install python3 -y

Para instalar Ansible en CentOS 7, primero aseg√ļrese de que est√© instalado el repositorio EPEL de CentOS 7. Ejecute el siguiente comando para instalar el repositorio epel.

$sudo yum install epel-release

Actualice el índice del paquete del sistema ejecutando el siguiente comando de actualización.

$sudo yum update -y

Una vez que el repositorio esté instalado, instale Ansible con el administrador de paquetes yum. Ejecute el comando mencionado a continuación para instalar Ansible.

$sudo yum install ansible -y

Verifique si Ansible está instalado correctamente y su versión.

$ansible -v

Instale Ansible en CentOS 8:

Veamos los pasos de instalación para CentOS 8. Instalemos Python en CentOS 8.

$sudo dnf install python3

Una vez que Python esté instalado, instalemos EPEL repo ejecutando el siguiente comando.

$sudo dnf install epel-release -y

Actualice el índice del paquete del sistema ejecutando el siguiente comando de actualización.

$sudo dnf update -y

Ahora estamos listos para instalar Ansible. Ejecute el siguiente comando para instalar Ansible.

$sudo dnf install ansible -y

Verifique si Ansible está instalado correctamente y su versión.

$ansible -v

Instale Ansible en Ubuntu:

Python es un paquete predeterminado hoy en día en la mayoría de las distribuciones de Linux. Si no tiene Python instalado, ejecute el siguiente comando para instalar el paquete de Python.

$sudo apt-get install python3

Para instalar Ansible en Ubuntu, primero instalemos el repositorio ejecutando el siguiente comando.

$sudo apt-add-repository ppa:ansible/ansible

Actualice el índice del paquete del sistema ejecutando el siguiente comando de actualización.

$sudo apt-get update -y

Ahora, instale Ansible.

$sudo apt-get install -y ansible

Verifique si Ansible está instalado correctamente y su versión.

$ansible -v

Instale Ansible con Python PIP en CentOS, Debian y Ubuntu:

Independientemente del sistema operativo que esté utilizando, puede instalar Ansible con el instalador del paquete python. Ejecutemos el siguiente comando para instalar python3-pip.

Para CentOS 7 y versiones anteriores:

$sudo yum install python3 python3-pip -y

Para CentOS 8:

$sudo dnf install python3 python3-pip -y

Para Ubuntu y Debian:

$sudo apt-get install python3 python3-pip

Como tenemos Python y pip instalados, ejecutemos el siguiente comando en cualquier sistema operativo para instalar Ansible.

$sudo pip3 install ansible

Verifique si Ansible está instalado correctamente y su versión. Anuncio publicitario

$ansible -v

Configuración de hosts de controlador Ansible:

Primero debemos configurar el archivo ¬ęhosts¬Ľ antes de que podamos comenzar a comunicarnos con nuestros otros nodos. Este archivo tendr√° todas las IP o nombres de host de los nodos administrados.

Nota: no siempre es necesario usar un archivo de hosts para conectarse a los nodos administrados. Pero luego, cada vez, necesitamos usar la IP del servidor de nodo administrado o el nombre de host mientras ejecutamos cada comando.

Cree el archivo (si a√ļn no est√° all√≠) con privilegios de root ejecutando el siguiente comando:

$sudo touch /etc/ansible/hosts

Antes de escribir en el archivo, echemos un vistazo y comprendamos el archivo hosts de muestra:

[group_name]
alias ansible_ssh_host=your_node_server_ip

Un archivo de hosts debe seguir la sintaxis anterior. Echemos un vistazo a cada par√°metro.

[group_name]: Este parámetro creará un grupo. Todas las direcciones IP o nombres de host de nodos administrados bajo el parámetro group_name estarán en el mismo grupo. Por ejemplo, si tenemos varios servidores web en nuestra infraestructura, podemos agregar aquí todas las direcciones IP o los nombres de host del nodo administrado.

alias: este parámetro se utiliza para dar al servidor de nodos gestionados un alias para identificar el servidor de nodos gestionados. Por ejemplo, si tenemos varios servidores web en nuestra infraestructura, podemos dar host1, host2, host3 como alias. La principal ventaja de dar un alias es que cuando ejecutamos el comando Ansible para cambiar la configuración de un solo servidor, podemos usar un alias para identificar y realizar la tarea requerida en el servidor.

ansible_ssh_host=su_ip_de_servidor_de_nodo: este parámetro apuntará el alias a una dirección IP o nombre de host del nodo administrado.

Usaremos CentOS 8 como un nodo controlado con Ansible. Como se mencionó anteriormente, Ansible usa 22 puertos del host remoto para conectarse.

Asumiremos que las direcciones IP de nuestro servidor de nodo administrado de CentOS son 192.168.0.2, 192.168.0.3 y 192.168.0.4.

Para permitir que el nodo del controlador de Ansible se comunique con los nodos administrados, debemos confirmar que se puede acceder a los nodos administrados en el puerto 22, que es un puerto SSH. Ejecute el siguiente comando para confirmar la conectividad uno por uno en los tres nodos administrados desde el controlador.

$ssh [email protected]192.168.0.2
$ssh [email protected]192.168.0.3
$ssh [email protected]192.168.0.4

Se le solicitar√° la contrase√Īa del usuario ra√≠z de todos los nodos. Ansible funciona muy bien si tiene una autenticaci√≥n sin contrase√Īa configurada entre el controlador de Ansible y los nodos administrados. Con diferentes par√°metros en el comando Ansible, la autenticaci√≥n de contrase√Īa tambi√©n puede funcionar.

Como hemos configurado la conectividad ssh entre el controlador Ansible y los nodos administrados, configuremos el archivo de hosts para conectarse a todos los nodos administrados. Como se mencion√≥ anteriormente, podemos agregar m√ļltiples alias de servidor de nodo en un solo grupo. En este caso, agreguemos los tres nodos y asignemos un alias como host1, host2 y host3 respectivamente. Nuestro archivo de hosts deber√≠a verse como a continuaci√≥n despu√©s de agregar todos los detalles del nodo administrado. Ejecute el siguiente comando para editar el archivo de hosts que creamos antes.

Abra el archivo con privilegios de root ejecutando el siguiente comando:

$sudo vi /etc/ansible/hosts

Agreguemos la configuración mencionada a continuación en el archivo de hosts.

[node_servers]
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Aquí, hemos agregado todas las direcciones IP y alias de los nodos administrados en un grupo llamado servidores_nodos.

Intentemos conectarnos a los nodos administrados desde el controlador Ansible ahora.

$ansible -m ping node_servers

El comando anterior utiliza un ping de m√≥dulo para conectarse al grupo ¬ęnode_servers¬Ľ que definimos en el archivo de hosts anterior.

Es posible que encuentre errores por diferentes motivos.

  1. Ansible, de manera predeterminada, intentará conectarse al nodo administrado utilizando su nombre de usuario actual si no proporcionó uno. Si ese usuario no existe en el servidor del nodo, recibirá el siguiente error.
  2. Si el puerto ssh 22 no está abierto para la conexión en los nodos administrados. (Como se mencionó anteriormente, Ansible se conecta en el puerto ssh)
  3. Si la IP en el archivo de hosts no es correcta.

Si alguna de las condiciones anteriores falla, encontrar√° el siguiente error.

host1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
host2 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
host3 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

Espec√≠ficamente, digamos a Ansible que debe conectarse a los nodos administrados en el grupo ¬ęnode_servers¬Ľ con el usuario james. Cree el directorio group_vars como se menciona a continuaci√≥n.

$sudo mkdir /etc/ansible/group_vars

Los archivos de este directorio se usan específicamente para configurar variables que podemos usar en nuestros libros de jugadas de Ansible.

Vamos a crear un archivo de variables para nuestra configuración ejecutando el siguiente comando:

$sudo vim /etc/ansible/group_vars/node_servers.yml

Agregue el siguiente código al archivo:

---
ansible_ssh_user: james

El archivo YML siempre comienza con ¬ę—¬Ľ en la primera l√≠nea. Guardemos y cerremos este archivo cuando haya terminado. Ahora Ansible siempre usar√° el James usuario para el grupo node_servers, independientemente del usuario actual que est√© utilizando para ejecutar un comando.

Verifique la conexión del nodo administrado:

Ahora que tenemos nuestros hosts configurados y suficientes detalles de configuración para permitirnos conectarnos con éxito a nuestros nodos administrados, podemos probar el mismo comando que ejecutamos antes.

$ansible -m ping servers

Ansible devolver√° una salida como esta:

host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

host3 | √ČXITO => {
¬ęcambiado¬Ľ: falso,
¬ęping pong¬Ľ
}

Esta es una prueba básica para asegurarse de que Ansible tenga una conexión con sus nodos administrados.

Conclusión:

No es necesario utilizar el sistema operativo CentOS para los nodos administrados. Puede usar la misma configuración de prueba que hemos usado anteriormente para CentOS, RedHat, Ubuntu y cualquier otra distribución de Linux.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *