Esta guía paso a paso lo guía a través de los pasos para instalar y configurar Ansible en Linux. También explica cómo configurar Ansible homelab en Linux para aprender los conceptos básicos de ansible.
1. Introducción
Ansible es una herramienta de automatización de TI a través de la cual puede automatizar un número "N" de tareas en su entorno de software. Para saber qué es Ansible y sus funciones, consulte nuestra "Introducción a Ansible" guía.
Obviamente, Ansible está diseñado para la gestión de la configuración a escala. Si su objetivo es aprender y poder recrear su entorno rápidamente, ¡está en el camino correcto!
Ansible es un sin agente arquitectura. Significado:no se ejecutan agentes/procesos ansible en los nodos administrados.
Como ya mencioné en el artículo introductorio de Ansile, hay dos tipos de nodos en ansible.
- Nodo maestro/controlador - Servidor/Estación de trabajo en el que se instalará ansible. Desde este nodo, ejecutará todos los libros de jugadas y los comandos de ansible.
- Nodos administrados - Lista de hosts que se administrarán mediante ansible.
No es necesario que todos los nodos administrados se ejecuten con la misma versión o tipo de distribución. Puede tener diferentes sabores de Linux como nodos administrados.
La comunicación entre el controlador y los nodos administrados se realizará mediante autenticación basada en clave ssh. .
Esta guía práctica le enseñará cómo configurar Ansible lab en distribuciones de Linux.
- No puede usar Windows como nodo controlador.
- Es posible configurar varios nodos de controlador.
Antes de comenzar con Ansible, permítame mostrarle la representación pictórica de la configuración de mi laboratorio doméstico Ansible.
2. Diagrama arquitectónico para laboratorio ansible de 3 nodos
La siguiente ilustración gráfica le brinda una buena representación pictórica de cómo se verá el laboratorio.
Con fines de demostración, estoy configurando un nodo de controlador en Ubuntu 20.04 y 2 nodos administrados en CentOS 8 y Ubuntu 21.04.
3. Instalar y configurar Ansible en Linux
Primero, veremos cómo configurar el nodo administrado de Ansible en Linux.
3.1. Instalar Ansible en Linux
Dado que Ansible está escrito en Python, su máquina Linux debe tener Python instalado para que Ansible funcione.
Afortunadamente, todas las distribuciones de Linux vienen con Python preinstalado. Ansible es compatible con Python 2.7 y Python 3.5 y versiones posteriores.
Para verificar qué versión de python está instalada en su máquina, puede usar los siguientes comandos. El resultado puede variar dependiendo de cómo esté configurado Python en su distribución.
$ which python python2 python3 /usr/bin/python2 /usr/bin/python3
Comprobar la versión de Python:
$ python2 --version Python 2.7.18rc1
$ python3 --version Python 3.8.5
$ compgen -c python | grep -P '^python..\d' python3.8 python3.8-config python2.7
Puede instalar ansible en Linux de dos formas.
- Uso del administrador de paquetes del sistema operativo
- Uso de PIP - Administrador de paquetes de Python
3.1.1. Instale Ansible usando el administrador de paquetes del sistema
Primero, verá cómo usar el administrador de paquetes de su distribución para instalar ansible. Según su distribución de Linux, ejecute los siguientes comandos.
Instale Ansible en Arch Linux, EndeavourOS, Manjaro Linux:
$ sudo pacman -S ansible
Debian:
Edite /etc/apt/sources.list
archivo:
$ sudo nano /etc/apt/sources.list
Agregue la siguiente línea:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
Luego ejecute los siguientes comandos:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible
Fedora:
$ sudo dnf install ansible
CentOS, RHEL, AlmaLinux, Rocky Linux:
$ sudo dnf install epel-release
$ sudo dnf install ansible
Ubuntu y sus derivados:
$ sudo apt update $ sudo apt install software-properties-common $ sudo add-apt-repository --yes --update ppa:ansible/ansible $ sudo apt install ansible
Es posible que su distribución se envíe con una versión obsoleta de Ansible. Si desea instalar una versión actualizada de Ansible en su sistema, puede usar Pip , el administrador de paquetes de python.
3.1.2. Instale Ansible usando Pip
Primero, verifique si PIP está instalado ejecutando los siguientes comandos:
$ which pip pip3 /usr/bin/pip /usr/bin/pip3
$ pip --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
Si PIP no está instalado, ejecute los siguientes comandos para instalarlo.
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user
Una vez que PIP esté instalado, ejecute el siguiente comando para instalar ansible:
$ sudo python3 -m pip install ansible
Esto instalará la última versión de Ansible.
También puede instalar una versión específica de Ansible, por ejemplo 2.9, como se muestra a continuación:
$ sudo python3 -m pip install 'ansible==2.9'
Después de instalar Ansible, ejecute el siguiente comando para comprobar la versión de Ansible:
$ ansible --version
Este comando proporciona información sobre dónde se encuentra el archivo de host, el archivo de configuración y el archivo binario de ansible y qué versión de Ansible está instalada.
Salida de muestra:
ansible 2.9.0 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/karthick/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
3.2. Configurar Ansible
Como se indicó anteriormente, Ansible se comunicará con los nodos administrados mediante ssh
protocolo de autenticación.
Crearemos un par de claves ssh y las distribuiremos en todos los nodos administrados. Entonces, siempre que se envíe un comando ansible, se autenticará con los nodos administrados usando estas claves.
3.2.1. Generar par de claves SSH para nodos administrados
Cree un nuevo usuario llamado ansible tanto en el controlador como en los nodos administrados.
$ sudo useradd ansible ##create user $ sudo passwd ansible ##set password for ansible user.
Inicie sesión/cambie como usuario ansible y cree un par de claves ssh usando los comandos:
$ su - ansible
$ ssh-keygen -t rsa
Este comando generará un par de claves SSH.
Ahora distribuye la clave pública a todos los nodos administrados.
Puede usar el ssh-copy-id
comando para copiar la clave pública en el nodo de destino.
Para copiar la clave pública al nodo de destino con el comando ssh-copy-id, ejecute:
$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]
Si tiene más nodos, use for loop
para copiar la clave ssh a todos los nodos de destino.
Para el propósito de esta guía, tengo 2 nodos administrados y los llamé centos1 (centos8) y ubuntu1 (Ubuntu 20.04). Para copiar la clave a ambos nodos, utilicé el siguiente código:
$ for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa [email protected]${node} done
Ahora inicie sesión en su nodo administrado para verificar si la autenticación basada en claves funciona bien.
$ ssh [email protected]
Ahora la configuración de ansible está completa. Como siguiente paso, se debe crear un archivo de inventario y ejecutar algunos comandos de ansible en los hosts administrados.
3.2.2. Probar la configuración de Ansible
Ansible tiene dos archivos importantes que se requieren para enviar Adhoc o libro de jugadas comandos.
Ansible.cfg
- archivo de configuración ansible.Hosts
- Archivo de inventario donde se proporcionan los detalles del host.
Bueno, discuta más en profundidad sobre la configuración y los archivos de inventario en un artículo separado. En el momento de ejecutar el primer comando ansible, solo necesita agregar los nombres de host de sus nodos administrados en el archivo de inventario.
El archivo de configuración de Ansible se encuentra en /etc/ansible/ansible.cfg
expediente. También puede obtener este detalle ejecutando la ansible version
comando:
$ ansible --version ansible 2.9.0 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/karthick/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
Abra ansible.cfg
archivo y busque el inventario de parámetros. Ansible hará referencia a este parámetro durante el tiempo de ejecución para obtener la ruta del archivo de inventario.
$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg #inventory = /etc/ansible/hosts
El inventario por defecto apunta a /etc/ansible/hosts
expediente. Abrir hosts
y agregue el nombre de host/dirección IP del nodo administrado.
Tengo una asignación de DNS a IP, por lo que he dado el nombre de dns en el archivo del host. También puede dar la dirección IP.
¡Todo está configurado para ejecutar nuestra tarea en ansible!
Similar al "Hello world"
programa en programación, ansible también tiene la tradición de ejecutar un ping
módulo como el primer comando para verificar la conectividad entre el controlador y los nodos administrados.
El ping
el módulo intentará llegar a los nodos administrados y verificará si hay algún intérprete de Python disponible para usar y responderá como pong
.
$ ansible all -m ping
También puede especificar explícitamente el archivo de hosts usando -i
marca como a continuación:
$ ansible all -m ping -i flag <path-to-host-file>
Ahora puedes empezar a jugar con cualquier módulo con el que quieras jugar.
Si desea agregar más nodos de controlador, todo lo que tiene que hacer es copiar la clave SSH del nodo de controlador al nuevo nodo y agregar la entrada de IP/DNS en el archivo del host. Y luego, ansible puede comenzar a recoger el nodo administrado recién agregado. ¡Así de simple!
Conclusión
En esta guía, discutimos cómo instalar y configurar Ansible en Linux. También le mostramos cómo configurar manualmente un laboratorio doméstico de Ansible de tres nodos.
Existen otras soluciones automatizadas, como configurar ansible lab con Vagrant. o Docker . Cubriremos esos temas en nuestros próximos artículos.
¡Ansible es un tema muy amplio! Cubrimos solo los conceptos básicos de Ansible. Consulte la documentación oficial de Ansible para saber más sobre el uso de Ansible.
Leer a continuación:
- Configuración automatizada de Ansible Lab con Vagrant y Virtualbox en Linux
- Archivos de configuración e inventario de Ansible