Cómo instalar Ansible en Ubuntu 20.04 | Ubuntu 20.10

Cómo instalar Ansible en Ubuntu 20.04 | Ubuntu 20.10

 

Ansible es una herramienta de código abierto que le permite aprovisionar, configurar, administrar e implementar aplicaciones. Ayuda a ejecutar la infraestructura como un código, básicamente una herramienta de automatización. Ansible se ejecuta en sistemas Linux, similares a Unix y Windows. Es una herramienta gratuita escrita en Python.

Con Ansible, se simplifica la automatización y el control de una gran cantidad de servidores. Esto hizo que el administrador del sistema o el ingeniero de DevOps administraran todos los servidores desde un único nodo de control.

A diferencia de Chef y Puppet, Ansible no necesita la instalación de ningún software especial en los nodos. Ansible usa SSH para ejecutar tareas y un archivo YAML para definir la información de provisión.

Este tutorial le mostrará cómo instalar ansible en Ubuntu 20.04 y aprender los conceptos básicos.

Nodo de control y hosts de Ansible

Los nodos de control de Ansible son una computadora que tiene ansible instalado y controla uno o más hosts remotos. Los nodos de control se comunican con hosts o nodos a través de SSH utilizando herramientas de línea de comandos o scripts de configuración (libros de jugadas).

Los hosts o nodos administrados son dispositivos de red o servidores que administra ansible. Ansible simplifica la operación mediante el uso de SSH, por lo que las máquinas host solo requieren el servicio SSH en ejecución y el puerto abierto.

En la siguiente sección, aprenderemos cómo configurar un nodo de control y recuperar información de los hosts.

Requisitos

  • Un nodo de control con par de claves ssh
  • Uno o más hosts: servidores remotos con clave pública ssh agregada

Para la demostración, usaremos una máquina con Ubuntu 20.04 para ambos propósitos.

Instalar Ansible en Ubuntu

Los componentes de Ansible se instalan en el nodo de control. El siguiente comando para instalar Ansible en Ubuntu.

Primero, obtenga una lista actualizada de todos los paquetes de sus fuentes:

$ sudo apt update

Ahora para instalar ansible, escriba:

$ sudo apt install ansible

Nodo de control de configuración y hosts

Se recomienda crear un usuario no root con privilegios sudo en el nodo de control de Ansible. Luego configure un par de claves SSH para ese usuario.

Cree un nuevo usuario no root:

$ sudo adduser controller

Luego, debe asignar sudoel permiso al controllerusuario:

$ sudo usermod -aG sudo controller

Ahora, puede iniciar sesión en la controllersesión de usuario y generar una clave SSH:

$ su - controller
$ ssh-keygen

Producción:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/controller/.ssh/id_rsa): 
Created directory '/home/controller/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/controller/.ssh/id_rsa
Your public key has been saved in /home/controller/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:R033P2ygbVuZv5jJdRbIZtaPG8Af7ZFL2pE9vbzQgP0 controller@lcomputerfreaks
The key's randomart image is:
+---[RSA 3072]----+
|            . .  |
|           o . . |
|          . ..  .|
|         . .* =.O|
|        S .oo@.^=|
|         .  =o%+@|
|             ++E*|
|            . *++|
|             =.o |
+----[SHA256]-----+

Tenemos que habilitar SSH sin contraseña desde Ansible Control Node a cada host. Básicamente, tenemos que copiar la clave pública del nodo de control en el archivo authorized_keys en cada host.

En este tutorial, usaremos dos hosts ansible: host1@ip_address_1host2@ip_address_2.

En el nodo de control de Ansible, ejecute el siguiente comando para copiar la clave pública en los servidores host:

$ ssh-copy-id host1@ip_address_1
$ ssh-copy-id host2@ip_address_2

Configuración del archivo de inventario

Ansible usa el inventory filepara almacenar información sobre los servidores remotos (hosts) administrados por Ansible Control Node. Los anfitriones se pueden organizar en grupos o subgrupos.

El archivo de inventario ansible predeterminado se encuentra en /etc/ansible/hosts, pero puede crear el archivo de inventario en cualquier ubicación y debe indicar la ruta a su archivo de inventario usando el -iparámetro al ejecutar los comandos de Ansible.

Ahora, puede abrir el archivo de inventario con su editor favorito y modificarlo de la siguiente manera:

$ sudo vim /etc/ansible/hosts

Tenga en cuenta que reemplace las direcciones IP a continuación con las direcciones IP de sus hosts de Ansible.

[servers]
server1 ansible_host=178.0.113.111
server2 ansible_host=178.0.113.112

Verifique el inventario con el siguiente comando:

$ ansible-inventory --list -y

Producción:

all:
  children:
    servers:
      hosts:
        server1:
          ansible_host: 178.0.113.111
        server2:
          ansible_host: 178.0.113.112
    ungrouped: {}

Probando la conexión

Es hora de verificar si Ansible puede conectarse a los servidores remotos. Puede utilizar el -uargumento para especificar el usuario remoto en los servidores. Por ejemplo:

$ ansible all -m ping -u root

El comando utiliza pingel módulo ansible para comprobar la conectividad desde el nodo de control de Ansible a los servidores remotos.

server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
server2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Cuando recibe una pongrespuesta de los servidores remotos, puede ejecutar comandos y playbooks de ansible en esos servidores.

Ejecutar un Ad-hoccomando en hosts ansible remotos, por ejemplo:

$ ansible all -a "df -h" -u root

Producción:

server1 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            3.7G     0  3.7G   0% /dev
tmpfs           746M  2.3M  744M   1% /run
/dev/sda1        20G  4.7G   15G  25% /
tmpfs           3.7G     0  3.7G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
/dev/loop1      130M  130M     0 100% /snap/google-cloud-sdk/161
/dev/loop0       32M   32M     0 100% /snap/snapd/10238
/dev/sda15      105M  3.6M  101M   4% /boot/efi
tmpfs           746M     0  746M   0% /run/user/1001
server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            3.7G     0  3.7G   0% /dev
tmpfs           746M  1.7M  745M   1% /run
/dev/sda1        20G  4.2G   16G  22% /
tmpfs           3.7G     0  3.7G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
/dev/loop0       56M   56M     0 100% /snap/core18/1932
/dev/loop1       32M   32M     0 100% /snap/snapd/10492
/dev/sda15      105M  3.6M  101M   4% /boot/efi
tmpfs           746M     0  746M   0% /run/user/1001

Conclusión

Ansible ahora es propiedad de Redhat y trae muchas mejoras al código. Ansible Tower es la versión empresarial de Ansible donde puede administrar servidores desde una interfaz de usuario moderna basada en la web.

En este tutorial, aprendió cómo instalar ansible en Ubuntu y la configuración básica a través de ejemplos. Gracias por leer y por favor deje su sugerencia en la sección de comentarios a continuación.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.