Lab Ansible Beginner: descubra Ansible de forma práctica con SSH, Playbooks, Apache y MariaDB

Cuando hablamos de automatización, a menudo nos referimos a ansible. Sin embargo, a primera vista puede parecer complejo de entender, y no siempre es fácil visualizar su utilidad concreta en un entorno informático.

A través de esto primer laboratorio de descubrimiento, Te sugiero que descubras Ansible a través de la práctica, realizando paso a paso varias acciones sencillas y concretas en los servidores Linux.

Aprenderás, en particular, a:

  • configurar una conexión SSH usando claves;
  • crear un inventario de Ansible;
  • comprobar la conectividad de las máquinas;
  • Ejecuta tus primeros libros de jugadas;
  • automatizar las actualizaciones de Debian;
  • implementar Apache;
  • Instalar y configurar MariaDB.

El objetivo de este laboratorio es demostrar que Ansible no es solo para grandes infraestructuras, sino que puede convertirse rápidamente en una herramienta sencilla, potente y muy útil para el uso diario.

Instrucciones de laboratorio

Objetivo

Descubre los fundamentos de Ansible administrando varios servidores Debian desde un servidor de control.

Entorno disponible

Tienes:

  • 1 servidor de control Ansible fue instalado
  • 2 clientes Debian
    • ansible-client1
    • ansible-client2

Información de inicio de sesión

  • Usuario: root
  • Contraseña: formation

lo que lograrás

  1. Generar una clave SSH
  2. Configurar el acceso del cliente
  3. Instala Ansible y crea un inventario YAML.
  4. Prueba la conexión con ansible ping
  5. Crea tu primer manual de jugadas
  6. Actualizar servidores Debian
  7. Instalar Apache en un cliente
  8. Instalar MariaDB en otro cliente.

Consejo

  • Repita los manuales de jugadas varias veces para observar la idempotencia.
  • Tómese el tiempo para leer las reseñas de los pedidos.
  • Comprueba la sintaxis YAML (la indentación es importante).

Recursos


🧪 Lab · miembros

🧪 Démarrer — 20 min
Ver la soluciónMasquer la solution

1. Cree un par de claves pública/privada para la conexión SSH; no incluya una contraseña (frase de contraseña).

ssh-keygen -t ed25519 -C "ansible@control-serveur"

2. Localice a los clientes utilizando el comando ping y anote sus direcciones IP; los clientes son ansible-client1 y ansible-client2.

ping ansible-client1
ping ansible-client2

3. Inicie sesión en los clientes y agregue la clave pública, la cuenta a usar es root y la contraseña formation.

# Pour le client1
ssh root@ansible-client1
# Dans le dossier .ssh ouvrir le fichier authorized_keys
nano .ssh/authorized_keys
# Coller ensuite le cle publique et repeter l'operation

4. Instale Ansible y cree el archivo de inventario en formato YAML. Para simplificar, crearemos una carpeta.

apt update
apt install ansible
mkdir ansible
cd ansible
# Créer le fichier inventaire.yaml
nano inventaire.yaml
# inventaire.yaml
all:
  hosts:
    ansible-client1:
      ansible_host: <IP>
    ansible-client2:
      ansible_host: <IP>

5. Pruebas de cliente con Ansible ping

ansible all -i /root/ansible/inventaire.yaml -m ping -vv

6. Transformar el ping de Ansible en un playbook.

# Créer le fichier playbook_ping.yaml dans le dossier ansible
nano playbook_ping.yaml
# playbook_ping.yaml
---
- name: Vérification de la connectivité des hôtes
  hosts: all
  tasks:
    - name: Envoyer un ping Ansible aux machines
      ping:
# Executer le playbook
ansible-playbook /root/ansible/playbook_ping.yaml -i /root/ansible/inventaire.yaml -v

7. Crea un playbook para instalar actualizaciones en los servidores Debian. Para simular un entorno más grande, primero edita el archivo de inventario para crear un grupo Debian.

# inventaire.yaml
all:
  hosts:
    ansible-client1:
      ansible_host: <IP>
    ansible-client2:
      ansible_host: <IP>
  children:
    debian:
      hosts:
        ansible-client1:
        ansible-client2:
# playbook_debian_update.yaml
---
- name: Mise à jour complète des serveurs Debian
  hosts: debian
  become: yes

  tasks:
    - name: Actualiser le cache apt et mettre à jour tous les paquets
      apt:
        update_cache: yes
        upgrade: dist
# Executer le playbook
ansible-playbook /root/ansible/playbook_debian_update.yaml -i /root/ansible/inventaire.yaml -v

8. Instalación de Apache en el cliente 1 con Ansible usando un libro de jugadas y luego MariaDB en el cliente 2
Comenzamos editando el archivo de inventario para crear dos nuevos grupos.

# inventaire.yaml
all:
  hosts:
    ansible-client1:
      ansible_host: <IP>
    ansible-client2:
      ansible_host: <IP>
  children:
    debian:
      hosts:
        ansible-client1:
        ansible-client2:
    webservers:
      hosts:
        ansible-client1:
    databases:
      hosts:
        ansible-client2:

Creación del playbook para instalar Apache:

#playbook_apache_install.yaml
---
- name: Installer Apache
  hosts: webservers
  become: yes

  tasks:

    - name: Installer Apache2
      apt:
        name: apache2
        state: present
        update_cache: yes

    - name: Démarrer Apache
      service:
        name: apache2
        state: started
        enabled: yes

Creación del playbook de MariaDB para la instalación y configuración.

#playbook_mariadb_install.yaml
---
- name: Installer et configurer MariaDB
  hosts: databases
  become: yes

  vars:
    mysql_root_password: SuperRoot123!
    app_db: appdb
    app_user: appuser
    app_password: AppPass123!

  tasks:

    - name: Installer MariaDB
      apt:
        name:
          - mariadb-server
          - python3-pymysql
        state: present
        update_cache: yes

    - name: Démarrer MariaDB
      service:
        name: mariadb
        state: started
        enabled: yes

    - name: Définir mot de passe root
      community.mysql.mysql_user:
        name: root
        host: localhost
        password: "{{ mysql_root_password }}"
        login_unix_socket: /run/mysqld/mysqld.sock
        check_implicit_admin: true
        priv: "*.*:ALL,GRANT"

    - name: Supprimer base test
      community.mysql.mysql_db:
        name: test
        state: absent
        login_user: root
        login_password: "{{ mysql_root_password }}"

    - name: Créer base applicative
      community.mysql.mysql_db:
        name: "{{ app_db }}"
        state: present
        login_user: root
        login_password: "{{ mysql_root_password }}"

    - name: Créer utilisateur applicatif
      community.mysql.mysql_user:
        name: "{{ app_user }}"
        password: "{{ app_password }}"
        priv: "{{ app_db }}.*:ALL"
        host: "%"
        state: present
        login_user: root
        login_password: "{{ mysql_root_password }}"

Ejecuta los manuales de jugadas:

ansible-playbook /root/ansible/playbook_apache_install.yaml -i /root/ansible/inventaire.yaml -v
ansible-playbook /root/ansible/playbook_mariadb_install.yaml -i /root/ansible/inventaire.yaml -v