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

Instalación de kind y creación de un cluster de kubernetes

Kind es una alternativa para instalar un cluster de Kubernetes que ejecuta sus diferentes nodos en contenedores docker.

Leer

Creación de una VCN en Oracle Cloud Infrastructure (OCI) con Terraform

Las VCN (Virtual Cloud Network) son un recurso fundamental en Oracle Cloud Infrastructure. En este post se utiliza la herramienta de IaC Terraform para provisionar uno de estos recursos en un arrendamiento de OCI.

Leer

Introducción a Openstack Client

OpenStack es una herramienta de infraestructura como servicio que puede gestionarse desde la línea de comandos a través de su cliente.

Leer