Skip to content

Hoja de trucos de módulos de Ansible

Ansible es una potente herramienta de automatización. Este artículo presenta cómo utilizar sus módulos más comunes.

Formato

Estructura básica de archivos

---
- hosts: production
  remote_user: root
  tasks:
  - ···

Por favor, coloca tus módulos bajo tasks.

Formato de tareas

Formato de una sola línea

- apt: pkg=vim state=present

Formato de mapeo (Mapping)

- apt:
    pkg: vim
    state: present

Formato escalar plegable

- apt: >
    pkg=vim
    state=present

Puedes utilizar cualquiera de los formatos anteriores para definir tareas. Se recomienda el formato de una sola línea para declaraciones cortas, y el formato de mapeo para declaraciones más largas.

Módulos

Aptitude

Gestión de paquetes

- apt:
    pkg: nodejs
    state: present # absent | latest
    update_cache: yes
    force: no

Archivo de paquete Deb

- apt:
    deb: "https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb"

Gestión de repositorios

- apt_repository:
    repo: "deb https://··· raring main"
    state: present

Llave de repositorio

- apt_key:
    id: AC40B2F7
    url: "http://···"
    state: present

Relacionados con Git

- git:
    repo: git://github.com/
    dest: /srv/checkout
    version: master
    depth: 10
    bare: yes

Referencia: módulo git

Configuración de Git

- git_config:
    name: user.email
    scope: global # local | system
    value: [email protected]

Referencia: módulo git_config

Gestión de usuarios

- user:
    state: present    # Estado: presente
    name: git        # Nombre de usuario
    system: yes      # Usuario de sistema
    shell: /bin/sh   # Shell de inicio de sesión
    groups: admin    # Grupos
    comment: "Git Version Control"  # Comentario

Referencia: módulo user

Gestión de servicios

- service:
    name: nginx      # Nombre del servicio
    state: started   # Estado: iniciado
    enabled: yes     # Habilitar al arranque

Referencia: módulo service

Relacionados con Shell

Comando shell

- shell: apt-get install nginx -y

Opciones extra

- shell: echo hello
  args:
    creates: /path/file  # Omitir si el archivo existe
    removes: /path/file  # Omitir si el archivo no existe
    chdir: /path        # Cambiar a este directorio antes de la ejecución

Ejemplo de comando multilínea

- shell: |
    echo "hello there"
    echo "multiple lines"

Referencia: módulo shell

Ejecución de scripts

- script: /x/y/script.sh
  args:
    creates: /path/file  # Omitir si el archivo existe
    removes: /path/file  # Omitir si el archivo no existe  
    chdir: /path        # Cambiar a este directorio antes de la ejecución

Referencia: módulo script

Operaciones de archivos

Gestión de archivos

- file:
    path: /etc/dir
    state: directory # Tipo: directory|file|link|hard|touch|absent

    # Parámetros opcionales:
    owner: bin      # Propietario
    group: wheel    # Grupo
    mode: 0644      # Permisos
    recurse: yes    # Recurrente
    force: yes      # Forzar la creación del enlace simbólico

Referencia: módulo file

Copia de archivos

- copy:
    src: /app/config/nginx.conf   # Archivo origen
    dest: /etc/nginx/nginx.conf   # Destino


    # Parámetros opcionales:
    owner: user     # Propietario
    group: user     # Grupo
    mode: 0644      # Permisos
    backup: yes     # Copia de seguridad si existe

Referencia: módulo copy

Plantilla (Template)

- template:
    src: config/redis.j2       # Archivo origen de la plantilla
    dest: /etc/redis.conf      # Destino

    # Parámetros opcionales:
    owner: user     # Propietario
    group: user     # Grupo
    mode: 0644      # Permisos
    backup: yes     # Copia de seguridad si existe

Referencia: módulo template

Acciones locales

Ejecución local

- name: Ejecutar localmente
  local_action: shell echo hello

Salida de depuración (Debug)

- debug:
    msg: "Hello {{ var }}"

Referencia: módulo debug