Skip to content

Cheat Sheet dei moduli Ansible

Ansible è un potente strumento per l’automazione delle operazioni. Questo articolo introdurrà l’uso dei suoi moduli comuni.

Formato

Struttura di base del file

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

Inserisci i tuoi moduli sotto tasks.

Formato dei task

Formato a riga singola

- apt: pkg=vim state=present

Formato di mappatura (Mapping)

- apt:
    pkg: vim
    state: present

Formato scalare ripiegato (Folded Scalar)

- apt: >
    pkg=vim
    state=present

Puoi utilizzare uno qualsiasi dei formati sopra indicati per definire i task. Per dichiarazioni brevi è consigliato il formato a riga singola; per dichiarazioni più lunghe è consigliato il formato di mappatura.

Moduli

Aptitude

Gestione dei pacchetti

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

File di pacchetto Deb

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

Gestione dei repository (Sorgenti software)

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

Chiave del repository

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

Relativo a Git

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

Riferimento: modulo git

Configurazione Git

- git_config:
    name: user.email
    scope: global # local | system
    value: hi@example.com

Riferimento: modulo git_config

Gestione degli utenti

- user:
    state: present    # Stato: presente
    name: git        # Nome utente
    system: yes      # Utente di sistema
    shell: /bin/sh   # Shell di login
    groups: admin    # Gruppi
    comment: "Git Version Control"  # Commento

Riferimento: modulo user

Gestione dei servizi

- service:
    name: nginx      # Nome del servizio
    state: started   # Stato: avviato
    enabled: yes     # Se abilitare all'avvio

Riferimento: modulo service

Relativo a Shell

Comando shell

- shell: apt-get install nginx -y

Opzioni extra

- shell: echo hello
  args:
    creates: /path/file  # Salta se il file esiste
    removes: /path/file  # Salta se il file non esiste
    chdir: /path        # Passa a questa directory prima dell'esecuzione

Esempio di comandi su più righe

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

Riferimento: modulo shell

Esecuzione di script

- script: /x/y/script.sh
  args:
    creates: /path/file  # Salta se il file esiste
    removes: /path/file  # Salta se il file non esiste  
    chdir: /path        # Passa a questa directory prima dell'esecuzione

Riferimento: modulo script

Operazioni sui file

Gestione dei file

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

    # Parametri opzionali:
    owner: bin      # Proprietario
    group: wheel    # Gruppo
    mode: 0644      # Permessi
    recurse: yes    # Creazione ricorsiva
    force: yes      # Forza la creazione del link simbolico

Riferimento: modulo file

Copia di file

- copy:
    src: /app/config/nginx.conf   # File sorgente
    dest: /etc/nginx/nginx.conf   # Destinazione

    # Parametri opzionali:
    owner: user     # Proprietario
    group: user     # Gruppo
    mode: 0644      # Permessi
    backup: yes     # Se effettuare il backup

Riferimento: modulo copy

Modelli (Templates)

- template:
    src: config/redis.j2       # File sorgente del modello
    dest: /etc/redis.conf      # Destinazione

    # Parametri opzionali:
    owner: user     # Proprietario
    group: user     # Gruppo
    mode: 0644      # Permessi
    backup: yes     # Se effettuare il backup

Riferimento: modulo template

Operazioni locali

Esecuzione locale

- name: Eseguire l'operazione localmente
  local_action: shell echo hello

Output di debug

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

Riferimento: modulo debug