Post

Automatizza il tuo stack IT con Ansible

L’automazione delle operazioni IT è diventata una priorità sempre più importante per le organizzazioni. In questo articolo, esploreremo le funzionalità di Ansible e come può aiutare a semplificare la gestione dei sistemi IT o di un semplice homelab casalingo.

Cosa è Ansible

Ansible è uno strumento di automazione IT open source che consente di automatizzare le operazioni di configurazione, gestione e distribuzione dei sistemi IT. Basato su Python e utilizza una sintassi YAML per definire le configurazioni dei sistemi. Ansible utilizza un approccio “agentless” che significa che non è necessario installare alcun software aggiuntivo sui nodi di destinazione. (Utile anche per automatizzare processi su appliance dove non è possibile magari installare alcun componente esterno es. su router, switch etc.)

Come funziona Ansible

Funziona utilizzando un’architettura client-server. Il server Ansible è chiamato “control node” e il client è chiamato “managed node”. Il control node esegue i playbook, dove vengono definite le operazioni che devono essere eseguite sui managed node. Utilizza un sistema di inventario per definire i nodi gestiti e i gruppi di nodi. Utilizza anche dei moduli che eseguono le operazioni specifiche sui nodi gestiti.

Inventories

Un inventory è un elenco di managed node su cui Ansible eseguirà le operazioni di automazione. Gli inventory possono essere specificati in un file di testo o in un database dinamico. Gli inventory possono anche essere organizzati in gruppi, ad esempio per tipo di server o per località geografica.

Playbooks

I playbook sono file di testo che contengono un insieme di attività e configurazioni da eseguire sui managed node. Le attività sono eseguite in ordine, e Ansible si assicura che lo stato desiderato sia raggiunto su ogni managed node.

Moduli

I moduli sono script Python che eseguono le attività di automazione su un managed node. Ansible include molti moduli predefiniti, come ad esempio il modulo di copia dei file o il modulo di installazione dei pacchetti. È anche possibile scrivere moduli personalizzati per estendere le funzionalità di Ansible.

Come utilizzare Ansible

Per utilizzarlo, è necessario definire gli inventory degli host e i playbook che eseguiranno le operazioni sui nodi. Una volta definiti, i playbook possono essere eseguiti sul control node utilizzando il comando ansible-playbook. Ansible offre anche un’interfaccia grafica utente chiamata Ansible Tower che può semplificare la definizione degli inventory e dei playbook.

Installazione

Può essere installato su una vasta gamma di sistemi operativi, tra cui Linux, macOS e Windows. La documentazione ufficiale di Ansible fornisce istruzioni dettagliate sull’installazione per ogni piattaforma.

Utilizzo degli inventory

Gli inventory sono specificati in un file di testo che può essere creato manualmente o generato dinamicamente. Ad esempio, il seguente inventory specifica un singolo managed node:

1
2
[hosts]
192.168.1.100

È possibile specificare più gruppi di managed node utilizzando la stessa sintassi. Ad esempio, il seguente inventory specifica due gruppi di managed node, webserver e database:

1
2
3
4
5
[hosts]
192.168.1.100

[database]
192.168.1.200

Ecco esempi di playbook che si può utilizzare per automatizzare delle operazioni abbastanza comuni nella gestione di un server:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- name: Aggiornamento dei pacchetti su hosts
  hosts: all
  become: true

  tasks:
    - name: Aggiornamento dei pacchetti
      apt:
        upgrade: 'yes'
        update_cache: 'yes'
      register: update_result

- name: Verifica dell'aggiornamento dei pacchetti su hosts
  hosts: all

  tasks:
    - name: Verifica dell'aggiornamento dei pacchetti
      assert:
        that:
          - "'0' == "
        fail_msg: "L'aggiornamento dei pacchetti non è stato completato correttamente."
      when: update_result is defined and update_result.rc == 0

Questo playbook esegue l’aggiornamento dei pacchetti sulle macchine e poi verifica che l’aggiornamento sia stato eseguito correttamente utilizzando il modulo assert di Ansible. Utilizza il gestore dei pacchetti APT per aggiornare i pacchetti sulle macchine e registra il risultato dell’aggiornamento in una variabile chiamata update_result. In seguito, esegue una verifica utilizzando il modulo assert. verifica che l’aggiornamento dei pacchetti abbia avuto successo confrontando il primo elemento della variabile stdout_lines con il valore 0.

Per utilizzare questo playbook, salva il codice in un file con estensione .yml (ad esempio update.yml) e poi esegui il playbook utilizzando il comando ansible-playbook update.yml.

Esempi di Playbook

Di seguito mostrerò alcuni casi comuni di automazioni che è possibile effettuare con un semplice playbook ad esempio creare un nuovo utente sulle macchine specificate:

Creazione user

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- name: Creare un nuovo user
  hosts: all
  become: true

  vars:
    username: newuser
    password: password

  tasks:
    - name: Aggiunta user 
      user:
        name: ""
        password: ""
        state: present
      notify:
        - restart sshd

  handlers:
    - name: restart sshd
      service:
        name: sshd
        state: restarted

Installazione pacchetto specifico

oppure installare un pacchetto specifico (nel nostro esempio nginx) su determinate macchine:

1
2
3
4
5
6
7
8
9
10
11
12
- name: Installazione di un pacchetto
  hosts: all
  become: true

  vars:
    package_name: nginx

  tasks:
    - name: Installazione pacchetto 
      apt:
        name: ""
        state: present

Copiare un file

copiare un file specifico su tutte le macchine specificate nell’inventory hosts::

1
2
3
4
5
6
7
8
9
10
11
12
13
- name: Copiare un file
  hosts: all
  become: true

  vars:
    source_file: /path/to/source_file
    destination_file: /path/to/destination_file

  tasks:
    - name: Copia del file 
      copy:
        src: ""
        dest: ""

Esecuzione comando

poter eseguire un comando specifico:

1
2
3
4
5
6
7
8
9
10
- name: Esecuzione di un comando
  hosts: all
  become: true

  vars:
    command: ls -la

  tasks:
    - name: Esecuzione del comando 
      shell: ""

Questi sono solo alcuni esempi di playbook per operazioni comuni su un server. È possibile automatizzare molte altre operazioni, come la gestione dei servizi, la configurazione del firewall, la gestione dei certificati SSL, e molto altro ancora.

Conclusione

Ansible è uno strumento di automazione IT potente ed estremamente flessibile. Consente di semplificare la gestione dei sistemi IT e di automatizzare le operazioni di configurazione, gestione e distribuzione dei sistemi. Facile da utilizzare e consente anche di gestire in modo trasparente determinate configurazioni oltre ad offrire una vasta gamma di funzionalità che lo rendono uno strumento ideale per le organizzazioni di qualsiasi dimensione. Se stai cercando di automatizzare le operazioni IT, Ansible è sicuramente uno strumento da considerare.

Questo post è sotto licenza CC BY 4.0 a nome dell'autore.

DISCLAIMER: Questo blog non rappresenta una testata giornalistica in quanto viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge N°62 del 07/03/2001. Leggi di più

© Cybertome. Alcuni diritti riservati.

Servizio offerto da Jekyll con tema Chirpy