Funcionamiento básico de ansible

Índice

Instalación de Ansible

Ansible se puede instalar desde los repositorios de Debian

sudo apt install ansible

Preparación de la máquina

En este ejemplo se usa una máquina virtual con un usuario sin privilegios que puede acceder por ssh y que puede usar sudo sin indicar la contraseña.

Ficheros de configuración

Inventario

Incluye una declaración de los grupos y máquinas que se van a configurar y algunas variables para identificarlas.

all:
  children:
    servidores:
      hosts:
        ansible: 
          ansible_ssh_host: 172.22.200.46
          ansible_ssh_user: debian
          ansible_ssh_private_key_file: /home/javi/.ssh/id_rsa

Fichero de configuración

En él se indica la ruta al fichero de inventario.

[defaults]
inventory = hosts
host_key_checking = False

El parámetro host_key_checking = False evita los mensajes de advertencia cuando se reutilizan direcciones IP.

Probar conexión

Para probar la conexión a una máquina Ansible usa el módulo ping.

ansible -m ping all
ansible | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Actualizar el playbook

El playbook es el fichero que contiene las reglas que ejecuta ansible en la máquina objetivo.

En este caso, Ansible actualiza el sistema de paquetes, instala git y apache2, copia un fichero a la máquina remota, copia una plantilla al directorio /var/www/html.

- hosts: all
  become: true
  tasks:
      # Actualizamos paquetes
    - name: Actualizamos el sistema
      apt: update_cache=yes upgrade=yes
      # Instalar paquetes
    - name: "Instalar paquetes con apt"
      ansible.builtin.apt: 
       pkg:
        - apache2
        - git

      # Copia un fichero a la máquina remota
    - name: "Copiar fichero a la máquina remota"
      copy:
        src: files/foo.conf
        dest: /etc/
        owner: root
        group: root
        mode: '0644'

      # Copia un template a un fichero
    - name: "Copiar un tamplate a un fichero de la máquina remota"
      template: 
        src: template/index.j2
        dest: /var/www/html/index.html
        owner: www-data
        group: www-data
        mode: 0644

Ejecutar el playbook

ansible-playbook site.yaml
comments powered by Disqus

Relacionados

Despliegue de la aplicación Python de gestión de la infraestructura de red NetBox mediante la especificación ASGI y usando Caddy como proxy inverso

En el Proyecto Integrado con el que termino mis estudios de Administración de Sistemas Informáticos en Red analizo cómo se puede usar el servidor web Caddy para servir una aplicación web escrita en Python, usando el estándar de comunicación asíncrona ASGI. Como ejemplo, despliego la aplicación de gestión de la infraestructura de red NetBox. Puedes leer mi Proyecto en este post.

Leer

Creación de una VPN punto a punto con IPSec

Este escenario está formado por dos routers Cisco c7200 que comparten una red. Por la otra interfaz, cada uno cuenta con una red privada. Usando el protocolo IPSec se crea un túnel entre ambos routers que permita comunicar las dos redes privadas a través de una VPN.

Leer

Escenario de enrutamiento en GNS3

En esta práctica se parte de un escenario recreado en el simulador GNS3 y, a partir de él, se enruta el tráfico entre los diferentes equipos que forman la red para permitir la comunicación entre todas las máquinas.

Leer