Skip to content

Hoja de Referencia de Módulos de Ansible

Ansible es una potente herramienta de automatización de operaciones. Este artículo presentará el uso de sus módulos comunes.

Formato

Estructura básica del archivo

---
- 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 plegado (Folded Scalar)

- apt: >
    pkg=vim
    state=present

Puedes usar cualquiera de los formatos anteriores para definir tareas. Para declaraciones cortas se recomienda el formato de una sola línea; para declaraciones más largas se recomienda el formato de mapeo.

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 (Fuentes de software)

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

Clave de repositorio

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

Relacionado 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: hi@example.com

Referencia: módulo git_config

Gestión de usuarios

- user:
    state: present    # Estado: presente
    name: git        # Nombre de usuario
    system: yes      # Usuario del 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     # Si se habilita al arrancar

Referencia: módulo service

Relacionado 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 comandos de varias líneas

- 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: directorio|archivo|enlace|enlace duro|touch|ausente

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

Referencia: módulo file

Copia de archivos

- copy:
    src: /app/config/nginx.conf   # Archivo de origen
    dest: /etc/nginx/nginx.conf   # Ubicación de destino

    # Parámetros opcionales:
    owner: user     # Propietario
    group: user     # Grupo
    mode: 0644      # Permisos
    backup: yes     # Si se realiza copia de seguridad

Referencia: módulo copy

Plantillas (Templates)

- template:
    src: config/redis.j2       # Archivo de origen de la plantilla
    dest: /etc/redis.conf      # Ubicación de destino

    # Parámetros opcionales:
    owner: user     # Propietario
    group: user     # Grupo
    mode: 0644      # Permisos
    backup: yes     # Si se realiza copia de seguridad

Referencia: módulo template

Operaciones locales

Ejecución local

- name: Ejecutar operación localmente
  local_action: shell echo hello

Salida de depuración (Debug)

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

Referencia: módulo debug