Ansible es una herramienta de automatización gratuita y de código abierto patrocinada por Red Hat. Usando ansible podemos administrar y configurar el sistema Linux y Windows sin la instalación de ningún agente en ellos. Básicamente funciona con el protocolo ssh y puede configurar más de cien servidores a la vez. En la terminología de ansible, el sistema en el que está instalado Ansible se denomina host/nodo de control y los sistemas administrados por ansible se denominan hosts administrados.
En esta publicación, discutiremos cómo instalar la última versión de Ansible en Rocky Linux 8. A continuación se encuentran los detalles de configuración de mi laboratorio Ansible:
- Nodo de control – 192.168.1.170 – Minimal Rocky Linux 8
- Host administrado 1 – 192.168.1.121 – Ubuntu 20.04 LTS
- Host administrado 2 – 192.168.1.122 – Rocky Linux 8
- usuario sysops con derechos de administrador
Instale Ansible a través del comando dnf
1) Actualizar el sistema
Para actualizar Rocky Linux 8, ejecute el comando dnf.
$ sudo dnf update -y
Una vez que todas las actualizaciones estén instaladas, reinicie su sistema una vez.
$ sudo reboot
2) Configurar repositorio EPEL
El paquete Ansible y sus dependencias no están disponibles en los repositorios de paquetes predeterminados de Rocky Linux 8. Entonces, para instalar ansible a través de dnf, primero debemos configurar el repositorio EPEL.
Ejecute los siguientes comandos,
$ sudo dnf install -y epel-release
3) Instale Ansible con el comando dnf
Ahora estamos listos para instalar ansible con el comando dnf, ejecute
$ sudo dnf install ansible -y
Una vez que ansible y sus dependencias se hayan instalado correctamente. Verifique su versión ejecutando el siguiente comando,
$ ansible --version
Instalación de Ansible con pip
Si está buscando la última versión de Ansible, instale ansible con pip. Consulte los siguientes pasos.
Nota: Al momento de escribir esta publicación, ansible 4.3.0 está disponible
1) Instalar todas las actualizaciones
Instale todas las actualizaciones disponibles usando el siguiente comando,
$ sudo dnf update -y
Reinicie el sistema una vez después de instalar las actualizaciones,
$ reboot
2) Instale python 3.8 y otras dependencias
Ejecute los siguientes comandos para instalar Python 3.8 y otras dependencias
$ sudo dnf module -y install python38 $ sudo alternatives --config python
Escriba 3 y presione enter
3) Instale la última versión de Ansible con pip
Ejecute los siguientes comandos uno tras otro para instalar ansible,
$ sudo pip3 install setuptools-rust wheel $ sudo pip3 install --upgrade pip $ sudo python -m pip install ansible
La salida del comando python anterior sería la siguiente:
El resultado anterior confirma que Ansible se ha instalado correctamente. Verifiquemos la versión de Ansible usando el siguiente comando ansible,
$ ansible --version
Verificar la instalación de Ansible
Cada vez que Ansible se instala con el comando dnf o yum, su archivo de configuración predeterminado ‘ansible.cfg’ se crea automáticamente en la carpeta ‘/etc/ansible’. Pero cuando lo instalamos con pip, tenemos que crear su archivo de configuración manualmente.
Se recomienda crear ansible.cfg para cada proyecto. Para fines de demostración, estoy creando un proyecto de automatización. Ejecute el siguiente comando mkdir,
$ mkdir automation $ cd automation
Cree el archivo ansible.cfg con el siguiente contenido,
$ vi ansible.cfg [defaults] inventory = /home/sysops/auotmation/inventory remote_user = sysops host_key_checking = False [privilege_escalation] become=True become_method=sudo become_user=root become_ask_pass=False
Guarde y salga del archivo.
Ahora cree un archivo de inventario en el proyecto de automatización (carpeta) con el siguiente contenido.
$ vi inventory [prod] 192.168.1.121 [test] 192.168.1.122
Guarde y cierre el archivo.
Si notó cuidadosamente el archivo ansible.cfg, he usado remote_user como ‘sysops’. Entonces, creemos claves ssh para el usuario sysops y compártalas entre los hosts administrados.
$ ssh-keygen
Comparta las claves SSH usando el comando ssh-copy-id,
$ ssh-copy-id [email protected] $ ssh-copy-id [email protected]
Nota: Ejecute el siguiente comando en cada host administrado para ejecutar todos los comandos sin solicitar la contraseña,
# echo "sysops ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/sysops
Verifique la conectividad del nodo de control a los hosts administrados usando el módulo de ping,
$ cd automation/ $ ansible -i inventory all -m ping
Vamos a crear un libro de jugadas de muestra (web.yaml) para instalar nginx y php en hosts administrados,
$ vi web.yaml --- - name: Play to Packages hosts: - test - prod tasks: - name: Install php and nginx package: name: - php - nginx state: present
Guarde y cierre el archivo.
Ejecute el libro de jugadas usando el comando debajo de ansible-playbook,
$ ansible-playbook -i inventory web.yaml
La salida del comando anterior le gustaría a continuación
Genial, el resultado anterior confirma que el libro de jugadas se ha ejecutado correctamente y también confirma que Ansible está instalado correctamente.
Eso es todo de esta publicación. Creo que esta publicación lo ayuda a instalar y usar Ansible en Rocky Linux 8. Comparta sus comentarios y consultas en la sección de comentarios a continuación.
Lectura recomendada: Cómo usar controladores en Ansible Playbook