GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar y usar Ansible en Debian 11

Ansible es una herramienta de gestión de configuración gratuita y de código abierto, y una de las más populares. Es una herramienta multiplataforma que simplifica la computación en la nube, la gestión de configuración, la instalación de paquetes y la configuración de servicios. Utiliza un archivo YAML que contiene los pasos que el usuario desea ejecutar en una máquina en particular. Con Ansible, puede configurar y administrar más de hosts con un solo comando. Ansible es una alternativa a las otras herramientas de administración de configuración como Chef y Puppet.

En este artículo, le mostraré cómo instalar y usar la herramienta de administración de configuración Ansible en Debian 11.

Requisitos

  • Tres servidores que ejecutan Debian 11.
  • Se configura una contraseña raíz en cada servidor.

A los efectos de este tutorial, utilizaremos la siguiente configuración:

  • Controlador Ansible - 192.168.10.9
  • Hosts de Ansible - 192.168.10.10, 192.168.10.11

Instalar Ansible en Debian 11

De forma predeterminada, el paquete Ansible no está incluido en el repositorio predeterminado de Debian. Hay dos formas de instalar Ansible en Debian 11.

  1. Uso del comando APT
  2. Uso del comando PIP

Instalar Ansible usando APT

Primero, deberá instalar algunas dependencias en su sistema. Puede instalar las dependencias requeridas usando el siguiente comando:

apt-get install gnupg2 curl wget -y

Una vez que todas las dependencias estén instaladas, edite APT source.list y agregue el repositorio de Ansible:

nano /etc/apt/sources.list

Agregue la siguiente línea:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

Guarde y cierre el archivo cuando haya terminado, luego agregue la clave GPG de Ansible con el siguiente comando:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

Debería ver el siguiente resultado:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.lFEjztT9TY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg:               imported: 1

Ahora, actualice el repositorio e instale Ansible con el siguiente comando:

apt-get update
apt-get install ansible -y

Una vez que Ansible esté instalado, verifique la versión de Ansible con el siguiente comando:

ansible --version

Deberías obtener el siguiente resultado:

ansible 2.10.8
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]

Instalar Ansible usando PIP

Primero, deberá instalar Python y PIP en su sistema. Puedes instalarlo usando el siguiente comando:

apt-get install python3 python3-pip -y

Una vez completada la instalación, use el comando pip para instalar Ansible como se muestra a continuación:

pip install ansible

Instalar sshpass

sshpass es una herramienta de línea de comandos que le permite proporcionar contraseñas con comandos SSH. Aquí, usaremos sshpass en el nodo del controlador Ansible con Ansible para autenticar un host remoto.

Puede instalar el sshpass con el siguiente comando:

apt-get install sshpass -y

A continuación, conéctese al primer host remoto de ansible para agregar una huella digital SSH a sus hosts_conocidos. archivo:

ssh [email protected]

Se le pedirá que proporcione una contraseña SSH como se muestra a continuación:

The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
Password: 

Proporcione su contraseña y presione Entrar para agregar una huella digital SSH.

A continuación, conéctese al segundo host remoto de ansible para agregar una huella digital SSH a su archivoknown_hosts:

ssh [email protected]

Se le pedirá que proporcione una contraseña SSH como se muestra a continuación:

The authenticity of host '192.168.10.11 (192.168.10.11)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.11' (ECDSA) to the list of known hosts.
Password: 

Proporcione su contraseña y presione Entrar .

Ahora puede usar el comando sshpass para verificar la conexión SSH:

sshpass -p yourpassword ssh [email protected]

Crear archivo de inventario de hosts de Ansible

A continuación, deberá crear un archivo de inventario para definir la dirección IP, el nombre de usuario, la contraseña y el puerto SSH de su host remoto:

nano ~/.hosts

Agregue las siguientes líneas:

[servers]
server1 ansible_host=192.168.10.10 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22
server2 ansible_host=192.168.10.11 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22

Guarde y cierre el archivo.

Nota :En el archivo anterior, usaremos la IP, el nombre de usuario, la contraseña y el puerto SSH de los hosts remotos.

Trabajando con Ansible

Ansible proporciona una gran cantidad de módulos que lo ayudan a administrar hosts remotos.

La sintaxis básica para ejecutar Ansible como se muestra a continuación:

ansible -i [inventory_file] -m [module] [host]

Verifiquemos la conectividad de ping a todos los hosts:

ansible -i ~/.hosts -m ping all

Si todo está bien, debería obtener el siguiente resultado:

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

Si desea verificar la conectividad de ping del único servidor1, ejecute el siguiente comando:

ansible -i ~/.hosts -m ping server1

Deberías obtener el siguiente resultado:

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

Puede usar el módulo de shell para ejecutar todos los comandos en los hosts remotos.

Por ejemplo, para ejecutar "free -m " comando en server2, ejecute el siguiente comando:

ansible -i ~/.hosts -m shell -a "free -m" server2

Debería ver el siguiente resultado:

server2 | CHANGED | rc=0 >>
               total        used        free      shared  buff/cache   available
Mem:            1982         128         491           2        1363        1669
Swap:              0           0           0

Para ejecutar un "df -h " commad en server2, ejecute el siguiente comando:

ansible -i ~/.hosts -m shell -a "df -h" server2

Deberías obtener el siguiente resultado:

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            976M     0  976M   0% /dev
tmpfs           199M  404K  198M   1% /run
/dev/sda1        50G  2.4G   45G   5% /
tmpfs           992M  124K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           199M     0  199M   0% /run/user/0

Ansible proporciona un módulo apto para instalar cualquier paquete en los hosts remotos.

Para instalar Nginx paquete en el servidor1, ejecute el siguiente comando:

ansible -i ~/.hosts -m ansible.builtin.apt -a "name=nginx state=present" server1

Deberías obtener el siguiente resultado:

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "cache_update_time": 1631424599,
    "cache_updated": false,
    "changed": true,
    "stderr": "",
    "stderr_lines": [],
        "Upgrading binary: nginx.",
        "Setting up nginx (1.18.0-6.1) ...",
        "Processing triggers for man-db (2.9.4-2) ...",
        "Processing triggers for libc-bin (2.31-13) ..."
    ]
}

Para verificar el estado del servicio Nginx en el servidor 1, ejecute el siguiente comando:

ansible -i ~/.hosts -m shell -a "systemctl status nginx" server1

Deberías obtener el siguiente resultado:

server1 | CHANGED | rc=0 >>
? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-09-12 05:55:36 UTC; 49s ago
       Docs: man:nginx(8)
    Process: 10761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 10764 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 10871 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 5.8M
        CPU: 54ms
     CGroup: /system.slice/nginx.service
             ??10871 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??10874 nginx: worker process

Sep 12 05:55:36 ansible systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 12 05:55:36 ansible systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Sep 12 05:55:36 ansible systemd[1]: Started A high performance web server and a reverse proxy server.

Ansible proporciona un módulo de usuario para crear y administrar usuarios en los hosts remotos.

Para crear un nuevo usuario llamado usuario1 en server1, ejecute el siguiente comando:

ansible -i ~/.hosts -m ansible.builtin.user -a "name=user1 password=yourpassword" server1

Debería ver el siguiente resultado:

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": true,
    "comment": "",
    "create_home": true,
    "group": 1000,
    "home": "/home/user1",
    "name": "user1",
    "password": "NOT_LOGGING_PASSWORD",
    "shell": "/bin/sh",
    "state": "present",
    "system": false,
    "uid": 1000
}

Conclusión

En este artículo, aprendió a instalar Ansible con APT y PIP. También aprendió a usar diferentes módulos de Ansible para administrar hosts remotos. Espero que ahora tenga suficiente comprensión de Ansible. Siéntase libre de preguntarme si tiene alguna pregunta.


Debian
  1. Cómo instalar y usar versiones posteriores de Debian

  2. Cómo instalar y usar NVM en Debian 11

  3. Cómo instalar y usar FFmpeg en Debian 10

  4. Cómo usar Ansible para instalar y configurar Redis 6 en Debian 11

  5. Cómo instalar Ansible en Debian 11

Cómo instalar y usar FFmpeg en Debian 11

Cómo instalar y usar Ansible en Debian 10

Cómo instalar y usar Mono en Debian 11

Cómo instalar y usar PHP Composer en Debian 11

Cómo instalar y usar Tripwire en Debian 11

Cómo instalar y usar Telnet en Debian 11 Bullseye