Ansible es una herramienta de configuración y automatización de TI gratuita y de código abierto. Está disponible para casi todas las distribuciones de Linux y puede usarse para administrar sistemas Linux y Windows. Hoy en día, Ansible también se usa para administrar instancias EC2 en AWS, máquinas virtuales y contenedores, etc. No requiere ningún agente en los hosts administrados, pero solo requiere una conexión ssh.
En este artículo, cubriremos cómo instalar la última versión de Ansible en Ubuntu 20.04 LTS/21.04
Requisitos del sistema para Ansible
- Instalación mínima de Ubuntu 20.04 LTS/21.04
- usuario sudo con privilegios de root
- 2 CPU/vCPU
- 2 GB de RAM o más
- Disco duro de 20 GB
- Conexión a Internet (en caso de que no tenga un servidor de repositorio apt local configurado)
Los siguientes son los detalles de configuración de mi laboratorio para la demostración de ansible.
- Nodo de control de Ansible:control.example.com (192.168.1.112)
- Nodos administrados de Ansible:node1.example.com y node2.example.com
- usuario sudo de sysops en nodos de control y administrados con privilegios.
Nota:Aquí el nodo 1 es un sistema Ubuntu y el nodo 2 es un sistema CentOS y el nodo de control es el sistema donde instalaremos ansible. Asumo que ya se crearon sysops en cada host.
Para configurar el usuario sudo (sysops) para ejecutar todos los comandos sin solicitar la contraseña, ejecute el siguiente comando en cada host administrado
echo "sysops ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/sysops
Pasemos a los pasos de instalación de Ansible
Paso 1) Aplicar actualizaciones en el nodo de control
Inicie sesión en el sistema Ubuntu 20.04 LTS/21.04 y ejecute los siguientes comandos apt para aplicar las actualizaciones.
$ sudo apt update $ sudo apt updgrade -y
Una vez que todas las actualizaciones estén instaladas, reinicie el sistema una vez.
$ sudo reboot
Paso 2) Instalar dependencias y configurar Ansible Repository
Instale las dependencias de ansible ejecutando el siguiente comando apt,
$ sudo apt install -y software-properties-common
Una vez que las dependencias estén instaladas, configure el repositorio PPA para ansible, ejecute
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
Ahora actualice el repositorio ejecutando debajo del comando apt.
$ sudo apt update
Paso 3) Instale la última versión de ansible
Ahora estamos listos para instalar la última versión de Ansible en Ubuntu 20.04 LTS/21.04, ejecute el siguiente comando.
$ sudo apt install -y ansible
Después de la instalación exitosa de Ansible, verifique su versión ejecutando el comando
$ ansible --version
Genial, el resultado anterior confirma que la versión 2.9.6 de Ansible está instalada.
Paso 4) Configure las claves SSH y compártalas entre los nodos administrados
Ahora generemos las claves SSH para el usuario sysops desde el nodo de control y compártalas entre los hosts administrados. Ejecute el comando ssh-keygen
$ ssh-keygen
Pulse Intro cuando se le solicite la entrada, la salida se muestra a continuación
Nota:agregue entradas de host administrado en el archivo /etc/hosts en el nodo de control. Esto solo es necesario cuando no tiene un servidor DNS local configurado.
192.168.1.115 node1.example.com 192.168.1.120 node2.example.com
Para compartir las claves ssh entre el control y los hosts administrados, ejecute el ejemplo del comando ssh-copy-id que se muestra a continuación
$ ssh-copy-id node1.example.com $ ssh-copy-id node2.example.com
La salida de los comandos anteriores se vería a continuación
Paso 5) Crear ansible cfg y archivo de inventario
Siempre se recomienda tener ansible.cfg y un archivo de inventario separados para cada proyecto. Para fines de demostración, estoy usando demo como nombre del proyecto. Por lo tanto, primero cree la carpeta del proyecto ejecutando el comando mkdir.
$ mkdir demo
Copie el archivo ansble.cfg predeterminado en la carpeta ~/demo,
$ cp /etc/ansible/ansible.cfg ~/demo/
Edite el archivo ~/demo/ansible.cfg, configure los siguientes parámetros,
$ vi ~/demo/ansible.cfg
En las secciones predeterminadas
inventory = /home/sysops/demo/inventory remote_user = sysops host_key_checking = False
En la sección de escalamiento de privilegios
become=True become_method=sudo become_user=root become_ask_pass=False
Guarde y cierre el archivo. Ahora, creemos el archivo de inventario que hemos definido en el archivo ~/demo/ansible.cfg.
$ vi ~/demo/inventory [dev] node1.example.com [prod] node2.example.com
guardar y salir del archivo
Finalmente, indique a ansible que use el archivo ansible.cfg del proyecto de demostración declarando la variable ANSIBLE_CONFIG, ejecute los siguientes comandos,
$ export ANSIBLE_CONFIG=/home/sysops/demo/ansible.cfg $ echo "export ANSIBLE_CONFIG=/home/sysops/demo/ansible.cfg" >> ~/.profile
Ejecute el comando ansible –version desde la carpeta de demostración para verificar la configuración de ansible
$ cd demo/ $ ansible --version
Genial, Ansible ahora está leyendo el archivo de configuración de ansible de nuestro proyecto. Verifiquemos la conectividad de los nodos administrados mediante el comando ad-hoc de ansible,
$ ansible all -m ping
Nota:asegúrese de ejecutar el comando ansible desde la carpeta de demostración.
La salida del comando se vería a continuación:
Este resultado confirma que existe conectividad desde el nodo de control hasta los hosts administrados.
Paso 6) Cree un libro de jugadas de Ansible para instalar paquetes en hosts administrados
Para verificar la instalación y configuración de ansible, creemos un libro de jugadas de muestra llamado packages.yaml en la carpeta de demostración.
$ vi packages.yaml --- - name: Playbook to Install Packages hosts: - dev - prod tasks: - name: Install php and mariadb package: name: - php - mariadb-server state: present
guardar y cerrar el archivo
Ahora ejecute el libro de jugadas usando el comando ansible-playbook,
$ ansible-playbook packages.yaml
Salida:
El resultado anterior confirma que el libro de jugadas se ha ejecutado correctamente. Para verificar el resultado, ejecute los siguientes comandos ad-hoc,
$ ansible dev -m shell -a 'dpkg -l | grep -E "php|mariadb"' $ ansible prod -m shell -a 'rpm -qa | grep -E "php|mariadb"'
Eso es concluir el artículo. En caso de que haya encontrado este artículo informativo, no dude en compartirlo. En caso de que tenga alguna consulta, déjela en las secciones de comentarios a continuación.
Leer también :Cómo usar controladores en Ansible Playbook