Ansible è un motore open source di automazione che permette di definire e far eseguire senza intervento manuale operazioni ripetitive di configurazione, messa in produzione e orchestrazione di server e altre tecnologie presenti in un ambiente IT complesso. Ansible, sviluppato da una società acquisita nel 2015 da Red Hat, è un linguaggio semplice ma al contempo una piattaforma. Con il suo linguaggio human-readable e testuale, gli amministratori possono scrivere processi ad hoc che contengono operazioni (task) che vengono poi eseguite degli Ansible Modules (moduli sotto forma di file) sia su server locali sia su server remoti. Ansible è già utilizzano da migliaia di aziende a supporto delle loro iniziative di DevOps.
I Playbook sono come dei manuali di istruzione già pronti per sfruttare i moduli Ansible. Basandosi sul linguaggio di Ansible, possono essere usati facilmente per implementare processi (workflow) automatizzati che vanno dai più semplici ad altri molto più complessi. Non è infatti necessario apprendere subito tutti i Playbook, ma utilizzare solo quelli necessari, e aggiungere man mano quelli che servono per arrivare a una sempre più completa automazione e orchestrazione di architetture data center e cloud complesse.
Installazione e provisiong di OpenStack su bare-metal
Con gli Ansible Playbooks è possibile installare, far girare e gestire OpenStack in un ambiente bare metal, ossia direttamente sull’hardware (server e apparati di networking) senza necessità di un hypervisor. L’installazione di OpenStack in un ambiente vasto bare metal è semplificata dall’integrazione fra Ansible e il modulo Ironic di OpenStack. Questo accoppiamento, infatti, consente di parallelizzare il Pxe-booting process (processo, basato su una serie di specifiche, che permette ai computer di essere avviati tramite connessioni a una rete invece che attraverso un hard drive o un dispositivo di memorizzazione esterno). Di conseguenza, le risorse target possono ricevere le immagini di back-end da installare da qualsiasi server di back-end sui cui siano già caricati questi file e non da un unico front-end. In un’ottica di progressiva semplificazione dei processi supportabili con Ansible, oggi è disponibile anche un’app (presentata al 2017 OpenStack Summit di Boston) capace di tradurre fogli di calcolo Excel, contenenti specifiche di configurazione, in file .yml, ossia nel formato Yaml utilizzato da Ansible; file che poi possono essere utilizzati dai Playbook.
Va segnalato che vi sono anche altri tool che permettono agli amministratori IT di creare il terreno necessario all’installazione di OpenStack automatizzando il deploy di server image: fra questi Jinja, Packer e Vagrant. Un ulteriore approccio consiste nell’accoppiare Ansible con Stacki di StackIO. Da segnalare anche l’OpenStack-Ansible installer, in grado di installare database, load balancer e altri tool.
L’automazione e altre funzionalità utili di Ansible
Una volta che OpenStack è stato avviato (booted), gli amministratori possono utilizzare Ansible per installare sia VM (virtual machine) che container. Ansible consente di definire risorse virtuali – quali le VM – di specificarne la dimensioni, la memoria e le risorse di storage e di networking necessarie. Per queste attività, la OpenStack Platform di Red Hat utilizza attualmente i tool Heat e Puppet, ma sta migrando ad Ansible.
Ansible, fra le altre funzionalità, mette a disposizione anche un’API (Application programming interface) che permette la creazione e il management di VM ospitate sulla piattaforma di virtualizzazione vSphere di VMware e supporta API per interfacciare i più grandi public cloud. Per quanto riguarda i Playbook, Ansible mette a disposizione anche altre soluzioni, come ad esempio Galaxy, un repository di strumenti che aiutano gli amministratori a implementare le app più utilizzate. Da segnalare anche la funzionalità Ansible Dynamic Inventory, in grado di identificare le immagini di software già installate, aiutando così le organizzazioni che adottano l’auto-scaling (un modo per gestire automaticamente lo scale up o down del numero di risorse di computing da allocare alle applicazioni al fine di renderle sempre disponibili). Per chi gestisce un’infrastruttura web JBoss, è disponibile anche un’API per gestire l’implementazione di app nell’application server.
Le alternative ad Ansible
Come dicevamo, in certa misura Ansible è competitivo con Heat, il modulo di orchestrazione di OpenStack. Dal momento che gli amministratori dovrebbero imparare una nuova sintassi, per passare da Heat ad Ansible, quest’ultimo fa leva su Shade, la liberia ufficiale di OpenStack, per interfacciare tutti i moduli chiave di questa piattaforma, inclusi Keystone, Neutron, i moduli storage e la libreria di immagini Glance. Ansible non è, va detto, privo di criticità: una è la necessità, qualora si volessero eliminare delle risorse create e che non sono più necessarie, di eseguire il processo in ordine inverso.
Le alternative ad Ansible includono la command-line manuale di OpenStack (il cui utilizzo è raccomandato solo per piccole installazioni), Kolla (per un’installazione bare-metal di OpenStack che utilizza container), Ironic (sempre in caso di bare-metal) e Heat (per VM orchestration). Nell’ambito dell’orchestrazione di container, Ansible affronta anche la concorrenza di Kubernetes. Al fine di assicurare un migliore management degli ambienti container, Ansible si integra i moduli Kolla e Magnum di OpenStack. L’abbinamento Ansible-Kolla consente l’installazione ripetitiva di moduli OpenStack all’interno di container.