LINUX

Cómo instalar Ansible en Ubuntu

instalar ansible en ubuntu

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, tipo 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 solo nodo de control.

A diferencia de Chef y Puppet, Ansible no necesita ningún software especial para ser instalado en los nodos. Ansible usa SSH para ejecutar tareas y el 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.

Hosts y nodo de control 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 mediante 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, aprendemos 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 Ubuntu 20.04 para ambos propósitos.

Instalar Ansible en Ubuntu

Los componentes Ansible están instalados 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

Configurar el nodo de control y los 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

Entonces, tienes que asignar sudo permiso para controller usuario:

$ sudo usermod -aG sudo controller

Ahora, puede iniciar sesión en controller sesió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@linoxide
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 al archivo autorizado_keys en cada host.

En este tutorial, usaremos dos hosts ansible: host1@ip_address_1 y host2@ip_address_2.

En el nodo de control de Ansible, ejecute el siguiente comando para copiar la clave pública a 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 file para 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 utilizando el -i parámetro al ejecutar 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

Observó que reemplace las siguientes direcciones IP con las direcciones IP de sus hosts 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 comprobar si Ansible se puede conectar a los servidores remotos. Puedes usar el -u argumento para especificar el usuario remoto en los servidores. Por ejemplo:

$ ansible all -m ping -u root

El comando usa ansible ping módulo para verificar la conectividad desde Ansible Control Node a 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 recibes un pong responder desde los servidores remotos, puede ejecutar comandos ansible y libros de jugadas en esos servidores.

Ejecutando un Ad-hoc comando 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 web.

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

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar