Introduzione ad Ansible
Ansible è uno strumento di Configuration Management (CM) in grado di orchestrare il provisioning di infrastrutture come macchine virtuali.
Ansible utilizza uno stile di configurazione dichiarativo, il che significa che consente di descrivere come dovrebbe essere lo stato desiderato (desired state) dell’infrastruttura.
Questo metodo è diverso da uno stile di configurazione imperativo, che richiede di fornire tutti i minimi dettagli sullo stato desiderato dell’infrastruttura.
Grazie al suo stile dichiarativo, Ansible è un ottimo strumento per gli ingegneri del software che
non sono esperti nell’amministrazione del sistema.
Ansible è anche un software open source e gratuito da usare.
Ansible è scritto in Python, ma non è necessario conoscere Python per usarlo.
L’unica dipendenza che dovrai comprendere è Yet Another Markup Language (YAML), che è un linguaggio di serializzazione dei dati che Ansible utilizza per descrivere strutture dati complesse e attività.
È facile capire YAML semplicemente guardando alcuni esempi di base.
Due cose importanti da dire sono che YAML utilizza l’indentazione per organizzare elementi come Python, ed è anche case sensitive.
Ansible applica le modifiche alla configurazione tramite protocollo Secure Shell (SSH), che è un protocollo sicuro per comunicare con host remoti.
L’uso più comune di SSH è ottenere l’accesso alla riga di comando su un host remoto, ma gli utenti possono anche implementarlo per inoltrare il traffico di rete e copiare i file in modo sicuro.
Utilizzando SSH, Ansible può eseguire il provisioning di un singolo host o di un gruppo di host sulla rete.
Concetti chiave di Ansible
Sarà utile conoscere questi concetti e termini per lavorare con Ansible e imparare a conoscerlo più rapidamente:
- Playbook: un playbook è una raccolta di attività o ruoli ordinati che è possibile utilizzare per configurare gli host.
- Control Node: un nodo di controllo è una qualsiasi macchina Unix su cui è installato Ansible. Eseguirai i tuoi playbook o comandi da un control node e potrai avere tutti i nodi di controllo che desideri.
- Inventory: un inventory è un file che contiene un elenco di host o gruppi di host con cui Ansible può comunicare.
- Module: un modulo racchiude i dettagli su come eseguire determinate azioni sui sistemi operativi, ad esempio come installare un pacchetto software. Ansible viene fornito precaricato con molti moduli.
- Task: è un’attività, un comando o un’azione (come l’installazione di software o l’aggiunta di un utente) eseguita sull’host gestito.
- Role: un ruolo è un gruppo di attività e variabili organizzato in una struttura di directory standardizzata, definisce uno scopo particolare per il server e può essere condiviso con altri utenti per un obiettivo comune.
Un role tipico potrebbe configurare un host come database. Questo role includerebbe tutti i file e le istruzioni necessarie per installare il database, configurare le autorizzazioni utente e applicare i dati iniziali.