Ansible è uno strumento di automazione open source utilizzato dagli amministratori di sistema per automatizzare la configurazione dell'infrastruttura, la distribuzione delle applicazioni e la gestione della configurazione. È senza agenti, il che significa che non richiede l'installazione di alcun software sugli host, a differenza di altri strumenti di automazione, per eseguire le attività necessarie. Utilizza invece SSH, se il sistema di destinazione è basato su Linux, WinRM se il sistema di destinazione è basato su Windows o un'API se il sistema di destinazione espone un'API.
Utilizza un linguaggio di programmazione dichiarativo per definire la configurazione di destinazione desiderata. Tuttavia, non dichiara come deve essere eseguita la configurazione. Ad esempio, per creare una nuova macchina virtuale, è necessario definire le specifiche della macchina virtuale di destinazione e come deve essere distribuita. L'Ansible Engine, con l'ausilio del relativo modulo, esegue quindi il compito necessario.
Automazione nel mondo IT
L'automazione nel mondo IT è necessaria per evitare di eseguire manualmente azioni ripetitive e per accelerare il ciclo di implementazione. Ansible ha lo scopo di soddisfare queste esigenze. Ecco alcuni esempi di come Ansible può essere una parte essenziale della tua infrastruttura IT:
Infrastruttura come codice
- La creazione di nuove macchine virtuali può essere eseguita in diversi modi. Tuttavia, dopo aver avviato una nuova macchina virtuale, è comunque necessario installare pacchetti software, applicazioni e così via aggiuntivi fino a quando il nuovo sistema non sarà funzionante. Con Ansible puoi automatizzare l'intero processo, dalla creazione di una nuova macchina virtuale alla configurazione dell'applicazione.
- Se disponi di un ambiente cloud in continua crescita, è possibile collegare effettivamente nuove risorse di calcolo al cloud con diversi strumenti cloud-native. Tuttavia, devi prima preparare l'hardware prima di collegarlo (ad esempio, creare configurazioni RAID per dischi locali, aggiungere VLAN al suo profilo, ecc.). Ansible può essere lo strumento principale per preparare l'hardware e collegarlo al cloud utilizzando le API cloud-native.
Automazione delle applicazioni
- Supponi di avere un'applicazione che richiede aggiornamenti regolarmente. Ad esempio, l'aggiunta di nuove voci in un database può essere completata in diversi modi. Se la tua applicazione è sparpagliata tra server specifici, invece di creare script diversi per vari sistemi, puoi creare un playbook Ansible contenente una o più riproduzioni per automatizzare e orchestrare questa azione dalla A alla Z.
[ Potresti anche leggere: Introduzione al nuovo Ansible Automation Hub ]
Moduli Ansible
I moduli Ansible prendono le istruzioni per eseguire le attività. Uno dei punti più vitali di Ansible è la sua vasta comunità, che crea regolarmente nuovi moduli. Questi moduli di solito sono codificati in Python. L'installazione iniziale viene sempre fornita con moduli preinstallati. Tuttavia, è possibile installare moduli aggiuntivi da Internet. Puoi ottenere maggiori informazioni su ciascun modulo (ad es. cosa sta facendo questo modulo, come usarlo, esempi, ecc.) in due modi:
Online :Cercando nella documentazione di Ansible.
Durante la ricerca, assicurati di scegliere la versione Ansible appropriata dall'elenco a discesa nell'angolo in alto a sinistra della pagina.
Offline :Usando il ansible-doc
comando dalla riga di comando.
$ ansible-doc file
Qui stai cercando come usare un modulo chiamato file
. La ricca selezione di moduli di Ansible è in realtà un'arma a doppio taglio, dove ha i suoi vantaggi e svantaggi.
Vantaggi:
- Puoi trovare un modulo per quasi tutte le attività che desideri eseguire.
- Hai una vasta community che ti supporta se necessario.
Svantaggi:
- Con così tanti moduli, puoi confonderti rapidamente su quale usare. Ecco perché quando inizi a pianificare l'utilizzo di Ansible per automatizzare attività specifiche, devi creare una strategia per determinare quali moduli utilizzare e testarli.
- Troverai molti moduli della community che nessuno supporta più o che sono deprecati con le nuove versioni di Ansible. Assicurati di eseguire attentamente ogni nuovo aggiornamento di Ansible. Inoltre, esegui un numero sufficiente di test prima di spostare il modulo nell'ambiente di produzione prima di mettere a rischio la tua catena di automazione. Scegliere i moduli da utilizzare e costruire una strategia di automazione è qualcosa che farai nel tempo.
Ansible e Python
Ansible dipende fortemente da Python. La maggior parte dei moduli sono codificati con Python. Inoltre, il sistema basato su Linux di destinazione deve avere Python installato per iniziare ad automatizzare le attività utilizzando Ansible. Sebbene Ansible dipenda fortemente da Python, non è richiesta una conoscenza approfondita di Python. Tuttavia, sapere come usare pip
si consiglia di gestire i pacchetti Python (installazione, aggiornamento, ecc.) e di creare ambienti virtuali Python.
Avvertenze:
- La modifica delle versioni di Python o di uno qualsiasi dei pacchetti preinstallati sul sistema Ansible Engine è un'azione rischiosa che può interrompere la catena di automazione.
- Se stai utilizzando Ansible Engine supportato da Red Hat, Red Hat ti aiuterà a creare il tuo ambiente virtuale Python, se lo desideri, ma il contenuto dell'ambiente virtuale non è supportato.
Motore Ansible vs. Torre Ansible
Ansible è pensato per essere utilizzato da diversi team DevOps. Ansible Tower consente a molti team di eseguire attività di automazione da una posizione centralizzata che consente RBAC, registrazione delle attività eseguite, una GUI per eseguire attività e altre funzionalità. Avere un sistema di automazione centralizzato per un'enorme catena di automazione semplificherà le attività di manutenzione. Per una piccola catena di automazione Ansible, è possibile utilizzare Ansible Engine, che è un nodo basato su Linux con i binari Ansible installati. In questa configurazione, ti perderai RBAC e la GUI. Tuttavia, Ansible Engine fornisce l'ambiente necessario per eseguire le attività di automazione pertinenti.
Quale approccio Ansible?
Ad hoc
Ad-hoc è un modo per inviare una singola attività Ansible ai sistemi di destinazione. Puoi vederlo eseguendo un comando su un sistema remoto usando SSH o legacy rsh. Con Ansible ad hoc, stai eseguendo un'attività più sofisticata anziché un comando solo perché stai utilizzando un modulo Ansible, che sta eseguendo più di un singolo comando.
Riproduce
Gli Ansible Play sono raccolte di diversi file in formato YAML, che verranno eseguiti su uno o più sistemi di destinazione. Queste riproduzioni vengono scritte in un file chiamato playbook .
Che tipo usare?
Nella mia esperienza con Ansible, ho visto entrambi gli approcci utilizzati. Ho visto sviluppatori elencare comandi ad hoc in un semplice script Bash e altri creare playbook accurati. Sebbene gli script Bash con Ansible ad-hoc possano sembrare più semplici, Ansible non doveva essere utilizzato in questo modo. I comandi ad hoc sono adatti per alcune semplici attività. Per uno scenario di automazione completo, è necessario un playbook per eseguire il debug delle attività da eseguire in modo visivo semplice. Un vantaggio significativo dell'utilizzo dei playbook è che puoi importarli in Ansible Tower man mano che la tua catena di automazione cresce. Come accennato in precedenza, troverai sviluppatori che preferiscono modi diversi, ma come designer o architetto di "catene di automazione", devi considerare la scalabilità della tua catena e determinare il punto in cui decidi di consolidare le tue attività di automazione in Ansible Tower.
YAML
YAML non è un linguaggio di markup , (YAML) è il formato in cui vengono scritti i playbook Ansible. Il formato YAML viene utilizzato in diverse aree (ad esempio, modelli di calore in OpenStack, creazione/modifica di oggetti in Kubernetes, ecc.). Il formato YAML è facile da leggere. Tuttavia, è un po' complicato perché è sensibile al rientro. Se non hai scritto alcun file in YAML e per evitare di perdere tempo a eseguire il debug del tuo playbook, devi prendere un editor che comprenda la sintassi e la formattazione YAML e possa regolare automaticamente il tuo rientro. Personalmente, mi piace usare l'editor Vim gratuito su sistemi Linux. Devi solo aggiungere la seguente riga a un file, chiamarlo .vimrc
e salvalo nella tua home directory:
autocmd FileType yaml setlocal ai ts=2 sw=2 et
File
In Ansible, ci sono alcuni tipi di file di cui sentirai regolarmente parlare. Eccone alcuni:
Playbook
Un playbook è un file scritto in formato YAML che contiene attività da eseguire sui sistemi di destinazione. Le attività che hanno come target gli stessi sistemi sono generalmente raggruppate in una riproduzione e un playbook può contenere una o più riproduzioni. Il motore Ansible esegue le attività dall'alto verso il basso.
Inventario
Ansible Inventory è un file che identifica i tuoi sistemi di destinazione. Puoi creare gruppi all'interno del tuo inventario per organizzare i tuoi sistemi. Ad esempio, puoi creare un gruppo per i server Web e un altro gruppo per i database. Ansible ha due tipi di file di inventario:
Inventari statici :i file per inventari statici possono essere scritti nei formati INI o YAML e puoi avere più di un file di inventario. Puoi specificare quale usare digitando -i path
nel file di comando.
Inventari dinamici :Un inventario dinamico è uno script che verrà eseguito per ottenere i sistemi di destinazione ogni volta che esegui il tuo playbook. Ciò è utile quando esegui i tuoi sistemi di targeting del playbook distribuiti nel cloud e ogni volta che disponi di più (o meno) sistemi per il targeting del playbook.
Ansible Tower ha precostruito alcuni script di inventario dinamico.
Ansible.cfg
Ansible.cfg
è il file di configurazione di Ansible. È in formato INI. Di solito viene salvato in /etc/ansible/ansible.cfg
. Controlla le impostazioni Ansible a livello di sistema. Tuttavia, potresti dover modificare una o più impostazioni per il tuo progetto specifico (ad esempio, cambiare il formato di stdout sullo schermo da JSON a YAML). Puoi creare il tuo ansible.cfg
file e posizionalo nella directory del progetto in cui stai modificando solo l'impostazione che desideri sovrascrivere.
File variabili
Le variabili in Ansible sono un argomento importante e richiedono tempo per essere comprese e praticate. È possibile definire variabili in più di 20 posizioni. Devi comprendere la precedenza delle variabili per individuare la posizione corretta.
Ruoli
Gli obiettivi principali dell'automazione sono ridurre al minimo le attività manuali e accelerare le attività di distribuzione. Se hai una o più attività che svolgi spesso durante diverse riproduzioni e desideri tenerle in una posizione condivisa e consultarle quando necessario, allora Ansible Roles ti aiuterà. Ansible Roles ha una struttura di file che devi seguire. Avere questa struttura ben definita rende comodo il download di ruoli sviluppati dalla community da utilizzare nei tuoi playbook.
Galassia Ansible
Ansible Galaxy è una piattaforma della community in cui puoi scaricare strumenti aggiuntivi per Ansible, moduli aggiuntivi, ruoli e playbook. Se non conosci Ansible, ricorda che Ansible ha una vasta community. Per quasi tutti i casi che vuoi risolvere con Ansible, qualcun altro nella community ci ha probabilmente pensato e caricato su Ansible Galaxy. Per evitare di reinventare la ruota, vale la pena spendere un po' di tempo su Ansible Galaxy alla ricerca di qualcosa che svolga le attività desiderate, scaricarlo, quindi utilizzarlo così com'è o modificarlo per il proprio ambiente o applicazione.
Hub di automazione
Come accennato in precedenza, Ansible ha un numero enorme di moduli sviluppati dalla sua comunità. Sembra davvero molto utile, ma per le aziende molto sensibili al time-to-market o che hanno un piccolo team di automazione privo di capacità di codifica Python, è meno desiderabile fare affidamento esclusivamente sui moduli della community. Alcuni potrebbero non essere supportati nelle versioni future di Ansible, mentre altri potrebbero persino essere abbandonati dai loro sviluppatori.
Nessuno è tenuto a risolvere i problemi riscontrati durante l'utilizzo dei moduli della community, quindi Red Hat ha elevato Ansible da semplice strumento di automazione supportato dalla community a livello aziendale e ha fornito quello che viene chiamato Automation Hub. Automation Hub può essere visto come la versione a pagamento supportata di Ansible Galaxy. La bellezza di questo servizio è che puoi scegliere i moduli di cui hai bisogno che corrispondono alla tua versione Ansible, oltre a ricevere supporto se un modulo non funziona come previsto.
Alcuni consigli
Ansible, come qualsiasi tecnologia IT, ha le migliori pratiche. Puoi sviluppare il tuo nel tempo, ma vorrei condividere il mio qui:
- Inizia a usare Ansible. Puoi padroneggiarlo solo quando lo usi.
- Se sei il progettista o l'architetto della catena di automazione, anche se stai iniziando a piccoli passi, considera sempre il futuro e cosa devi fare dal primo giorno per essere pronto quando la tua catena di automazione si ingrandirà.
- Se stai scrivendo playbook per automatizzare attività, pensa sempre in modo semplice e cerca Ansible Galaxy. Se vedi che quello che stai facendo è troppo complesso, allora ti stai muovendo nella direzione sbagliata perché non sarai in grado di mantenerlo in futuro.
- L'automazione non è uno spettacolo per una sola persona, nel senso che hai altre persone che lavorano con te, quindi scrivi i tuoi playbook in modo chiaro e descrittivo e usa i sistemi SCM per il controllo della versione.
Risorse da imparare
Ansible ha una varietà di risorse di apprendimento. Eccone alcuni:
Libri :Ansible ha molti libri sul mercato, ma di gran lunga Ansible:Up and Running secondo me è il riferimento più completo.
IRC :Sui server freenode, Ansible ha un canale in cui la community può aiutarti se necessario.
Documentazione online :la documentazione Ansible è online dove puoi visitarla e imparare da essa.
Risorse online e video :ecco alcune risorse online e video per imparare Ansible.
- Istruzioni video Ansible
- Canale YouTube di Ansible
- Corsi Red Hat Ansible
[ Hai bisogno di più su Ansible? Partecipa a un corso di panoramica tecnica gratuito di Red Hat. Ansible Essentials:Semplicità nell'automazione Panoramica tecnica. ]
Concludi
Ansible è uno strumento all'avanguardia per l'automazione IT. È semplice da imparare, accessibile e ricco di moduli. Se stai pianificando qualcosa di più del semplice apprendimento di Ansible, ad esempio costruendo la tua catena di automazione o migrandola ad Ansible, ci sono molte risorse disponibili per iniziare.