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

Creación y configuración de un sistema de ficheros en Debian 12

En este post se plantea un caso práctico en el que se emplean varios comandos para la configuración de sistemas de ficheros en Debian. En concreto, se trata de un ejemplo en el que se instala Debina 12 en una máquina con recursos limitados en VirtManager y, posteriormente, se amplía el espacio de almacenamiento añadiendo un nuevo disco duro y clonando el sistema en él.

Leer

Configuración NAT en routers Mikrotik en Openstack

En este post se configura el funcionamiento del NAT en una red creada en Openstack que usa routers Mikrotik. NAT (Network Address Translation o traducción de direcciones de red) es un mecanismo que consiste en modificar la información de direccionamiento en los paquetes IP que atraviesan un router.

Leer

Comandos básicos en Docker

En este post se muestran algunos de los comandos básicos para la creación y gestión de contenedores usando Docker

Leer