Casa Impresa Cos'è Ansible?

Cos'è Ansible?

by Autore ospite

Ansible è uno strumento di automazione senza agenti scritto in Python. Si connette ai tuoi clienti tramite SSH e ti consente di automatizzare le attività noiose e ripetitive che non vuoi svolgere. Ti consente di prendere un'attività svolta da un essere umano la cui esecuzione potrebbe richiedere un'ora e di convertirla in un singolo comando che viene completato in pochi minuti. Ciò migliora le tue prestazioni e ti consente di iniziare a lavorare sul prossimo grande progetto.


Ansible è uno strumento di automazione senza agenti scritto in Python. Si connette ai tuoi clienti tramite SSH e ti consente di automatizzare le attività noiose e ripetitive che non vuoi svolgere. Ti consente di prendere un'attività svolta da un essere umano la cui esecuzione potrebbe richiedere un'ora e di convertirla in un singolo comando che viene completato in pochi minuti. Ciò migliora le tue prestazioni e ti consente di iniziare a lavorare sul prossimo grande progetto.

Vantaggi Ansible

Ansible offre numerosi vantaggi, prendiamoci un po' di tempo per esaminarne alcuni dei più importanti. Lo suddividerò in sezioni, una per coloro che non hanno un'automazione minima o assente e un'altra per coloro che stanno già utilizzando uno strumento di automazione come Salt o Puppet.

Novità nell'automazione

Se sei nuovo nel mondo dell'automazione, l'utilizzo di uno strumento semplice può aiutarti con la curva di apprendimento. Diamo un'occhiata ad alcuni motivi per cui dovresti scegliere Ansible rispetto agli altri strumenti disponibili.

1. Sintassi semplice

Grazie al modo semplice di Ansible di definire le attività, iniziare è molto semplice. Prendiamo ad esempio lo snippet seguente:

-

– host: tutti

 compiti:

  – nome: installa Nginx

   gnam:

     nome: nginx

     stato: ultimo

Un'attività Ansible completa, equivalente all'esecuzione di "yum install nginx" su tutti i tuoi host.

Probabilmente puoi già dire cosa sta facendo. Sta installando l'ultima versione di Nginx server Web open source su tutti gli host definiti. Vedremo la definizione degli host più tardi. Poiché tutte le attività che crei sono in YAML, sono facili da leggere e facili da creare. Ciò è fondamentale quando si inizia ad apprendere un nuovo strumento, poiché consente di acquisire rapidamente esperienza e allo stesso tempo creare sicurezza e comprensione.

2. Dammi amore

Poiché le tue automazioni sono semplici file di testo, è possibile archiviarle in Git (o in un altro sistema di repository di origine), dove hanno il controllo delle modifiche e possono essere verificate e aggiornate da una fonte centrale.

3. Ordine di esecuzione semplice

Poiché le attività vengono eseguite nell'ordine da te definito, non devi preoccuparti dell'ordine di esecuzione. Definisci semplicemente i passaggi come faresti per un essere umano e Ansible li eseguirà ogni volta esattamente nello stesso ordine, senza doversi preoccupare di perdere un passaggio.

4. Senza agente

Avere un modo senza agente per gestire i tuoi host è importante, doppiamente importante se non disponi già di un modo per distribuire un agente in modo automatizzato. Cercare di avviare un'automazione in un ambiente esistente può essere un incubo, soprattutto se ci sono decine o centinaia di macchine che necessitano del nuovo agente.

Appassionato di automazione

Se hai già eseguito un po' di automazione, magari utilizzando Bash, Python o Powershell, ti starai chiedendo cosa porta Ansible in tavola. Diamo un'occhiata.

1. Orchestrazione semplice

Hai mai provato ad aggiornare un sito Web utilizzando uno script bash? Supponiamo che tu abbia un bilanciatore del carico web o un proxy inverso, 5 server web, un bilanciatore del carico del database e 2 server di database. Potresti spendere centinaia di righe semplicemente controllando che ciascun componente sia stato aggiornato correttamente.

Con Ansible, puoi definire controlli di integrità, aggiornamenti in sequenza e impostare i bilanciatori del carico per rimuovere l'aggiunta e la rimozione dei nodi durante ogni fase dell'aggiornamento. Puoi vederne un esempio nella documentazione ufficiale sulla consegna continua e sugli aggiornamenti continui.

2. Idempotenza

L'idempotenza è la proprietà di alcune operazioni in matematica e informatica per cui possono essere applicate più volte senza modificare il risultato oltre l'applicazione iniziale.- Wikipedia Fondamentalmente, l'obiettivo è eseguire il tuo playbook una volta per impostare le cose come desiderato, quindi continuare a eseguirlo ogni *X*numero di ore/giorni/settimane per garantire che nulla sia cambiato. Se qualcosa cambia, dovresti cercare l'origine di *Configuration Drift*nel tuo ambiente.

La deriva della configurazione è una situazione in cui i server nell'infrastruttura diventano sempre più diversi col passare del tempo. - Shadow Soft

3. Archiviazione segreta incorporata

L'archiviazione segreta integrata di Ansible, denominata Ansible Vault, ti consente di archiviare dati sensibili come password, chiavi API o persino chiavi private in modo sicuro, con il resto della base di codice, nel controllo del codice sorgente. Questo è inaudito in Bash o Python, in genere richiede strumenti di terze parti come un deposito di password abilitato tramite API.

4. Espandibilità

Ansible può essere espanso facilmente sia per i moduli Windows che per quelli Linux, nonché per comunicare con strumenti di terze parti. Ciò significa che se desideri automatizzare qualcosa, è probabile che esista già un modulo della community che puoi utilizzare oppure puoi creare o adattare un modulo esistente per adattarlo alle tue esigenze.

Puoi trovare informazioni sullo sviluppo dei tuoi moduli con la documentazione ufficiale oppure puoi consultare i moduli della community Ansible Galaxy.

Iniziare con Ansible

Installazione Ansible

Iniziare è semplice come installare Ansible sulla tua workstation o server. Mostrerò i comandi RedHat/CentOS, ma puoi visualizzare altri passaggi di installazione nella documentazione ufficiale.

"sudo yum install ansible".

Questo è tutto! Hai installato un nodo di controllo Ansible completamente funzionale e sei pronto per partire.

Inventario

Ansible deve sapere con quali macchine parlare e contro quali eseguire i tuoi playbook. Quindi diamo un'occhiata alla creazione di un inventario di base. Il file di inventario predefinito è disponibile in "/etc/ansible/hosts" su Linux. Se dai un'occhiata a quel file, vedrai che è in un formato simile a INI e probabilmente assomiglia a questo:

mail.example.com

[server web]

foo.esempio.com

bar.esempio.com

[dbserver]

one.esempio.com

due.esempio.com

tre.esempio.com

Come spiegato nella documentazione, i titoli tra parentesi sono nomi di gruppi che consentono di classificare i sistemi in gruppi arbitrari. Ti consiglierei di prenderti un po' di tempo e di impostare il tuo file di inventario, poiché è importante che Ansible sappia su quali host desideri eseguire le attività.

Creazione di un playbook

Un playbook è una raccolta di attività da eseguire sui tuoi host. Puoi creare un playbook semplice come un singolo file con una riproduzione o molti file con più condizionali e importazioni da altri playbook. Inizieremo con un semplice playbook che installa, avvia e aggiunge regole firewall per nginx sui nostri server web. Nel nostro file host, potremmo avere qualcosa del genere:

[server web]

web01.esempio.com

web02.esempio.com

e nel nostro file `nginx-install.yaml` abbiamo quanto segue:

-

– host: server web

 compiti:

  – nome: installa Nginx

   gnam:

     nome: nginx

     stato: ultimo

  – nome: avvia Nginx

   servizio:

     nome: nginx

     stato: iniziato

  – nome: consente la porta 80 tramite firewalld

   firewalld:

     port: 80/tcp # In alternativa è possibile utilizzare la sintassi "service: http".

     permanente: sì

     stato: abilitato

Panoramica dell'host Ansible che si connette ai server Web e installa NGINX. Per eseguire questo playbook, esegui semplicemente `ansible-playbook nginx-install.yaml` e Ansible andrà a installare Nginx su qualsiasi host nel tuo gruppo di server web. Questo è un semplice playbook con un'unica giocata, tuttavia, è un buon esempio della facilità con cui Ansible può essere utilizzato nel tuo ambiente.

Conclusione

Come puoi vedere, Ansible è uno strumento di automazione molto flessibile e facile da usare che può funzionare in qualsiasi ambiente. Grazie alla sua semplice curva di apprendimento e alla capacità di adattarsi alle tue esigenze, Ansible è uno dei migliori strumenti di automazione per l'implementazione dell'infrastruttura in un ambiente completamente gestito da DevOps.

-Justin Gauthier

@justinsane454