Saltar al contenido
Regresar

Controla Servidores Ubuntu con Ansible y Playbooks

Publicado:  a las  07:40 PM

Estructura del laboratorio

Tendremos un servidor principal en el cual se instalara “ansible” para controlar los dos clientes.

ansible-primary

Ejecutamos el comando sudo apt install ansible para iniciar la instalacion de ansible.

ansible.D

Nos dirigimos a la ruta /etc/ansible/ y crearemos un archivo de configuracion llamado hosts esto para dar de alta un inventario.

Nota: Deberas crear la carpeta ansible en caso de que no este creada

ansible-1 Dentro del archivo colocaremos las siguientes lineas para dar a conocer los clientes que tendremos para ansible.

ansible-2

Realizamos una prueba con el comando ansible all -m ping para mandar un ping y vemos que tenemos una respuesta erronea.

ansible-3

Generamos una llave ssh en nuestro servidor ansible principal.

ansible-4

En los clientes realizaremos la siguiente configuracion para que podamos acceder como el usuario root en el servidor ssh, primero debemos editar el archivo de configuracion sshd_config que se encuentra en la ruta /etc/ssh/sshd_config.

ansible-4 Descomentaremos la linea PermitRootLogin y agregaremos la palabra yes, quedará como se muestra en la imagen.

ansible-5 Tambien buscaremos la linea PasswordAuthentication y la descomentaremos y le pondremos yes quedando como se muestra en la imagen.

ansible-7 Activaremos el servicio ssh al arrancar la maquina con el comando sudo systemctl enable ssh y reiniciaremos el servidor ssh con el comando sudo systemctl restart ssh. ansible-8 Asignamos una contraseña para el usuario root con el siguiente comando sudo passwd root.

ansible-9

Copiaremos desde el servidor ansible la llave ssh hacia los clientes para poder conectarnos sin la necesidad de proporcionar una contraseña con el comando ssh-copy-id [email protected]. ansible-11 Haremos la prueba para conectarnos mediante ssh y veremos que no nos pide contraseña. ansible-12 Realizamos la prueba anterior del comando ansible all -m ping y vemos que ahora si funciona correctamente existe una conexion entre servidor y cliente. ansible-13 Ejecutamos un comando mediante el parametro -a y vemos que efectivamente nos muestra la direccion ip de los clientes en la interfaz enp1s0. ansible-14 Por ultimo crearemos unos playbooks para definir una serie de tareas automatizadas que se ejecutaran en los clientes. ansible-15 El siguiente playbook actualiaza la cache del sistema, actualiza los paquetes, instala una lista de paquetes, crea un usuario llamado test123, configura una regla del firewall de ubuntu para permitir SSH, habilita el UFW y reinicia el sistema si es necesario.

---
- hosts: servers
  become: yes  # Para usar sudo en las tareas
  tasks:

    - name: Actualizar la cache de apt
      apt:
        update_cache: yes

    - name: Actualizar todos los paquetes
      apt:
        upgrade: dist
        autoremove: yes
        autoclean: yes

    - name: Instalar paquetes necesarios
      apt:
        name:
          - curl
          - git
          - ufw
          - htop
        state: present

    - name: Crear un nuevo usuario
      user:
        name: "test123"
        comment: "Usuario de prueba"
        shell: /bin/bash
        state: present
        createhome: yes
        groups: sudo

    - name: Configurar firewall UFW - permitir SSH
      ufw:
        rule: allow
        port: '22'
        proto: tcp

    - name: Habilitar UFW
      ufw:
        state: enabled

    - name: Reiniciar el sistema si es necesario
      reboot:
        msg: "Reiniciando el servidor para aplicar cambios"
        connect_timeout: 5
        reboot_timeout: 600
        pre_reboot_delay: 0
        post_reboot_delay: 30
        test_command: whoami

Vemos que se ejecuto correctamente y no hubo errores. ansible-16 Este otro playbook unicamete hace una actualizacion de paquetes. ansible-17

---

- hosts: all
  vars:
    ansible_host_key_checking: false
  become: true


  tasks:
    - name: Update and upgrade apt packages
      apt:
        update_cache: yes
        upgrade: yes

Y vemos que se ejecuta correctamente sin errores. ansible-18



Publicación anterior
Nmap — Descubrimiento de Hosts
Siguiente publicación
INSTALAR VMWARE EN UBUNTU 24.10