Gestione dell’infrastruttura di rete in forma centralizzata e versionata mediante Ansible
AWX è un software open-souce che consente di schedulare l’esecuzione di Playbook Ansible all’interno di inventari predefiniti. Le macchine della rete non necessitano di agent, ma del solo accesso SSH, e nel caso di esigenze amministrative, della possibilità per l’utente chiamante di effettuare escalation dei privilegi mediante sudo.
Ecco descritto il tipico workflow di una variazione.
- I DevOps MMUL modificano il codice Ansible ed effettuano il push nel repository GitLab.
- Il codice è sottoposto a versioning mediante GIT, per permettere la modifica contemporanea a più utenti e la storicizzazione del codice.
- E’ possibile ripristinare qualsiasi modifica.
- La qualità del codice Ansible viene analizzata attraverso una pipeline che processa i playbook prodotti attraverso un linter e boccia la promozione in caso di errore.
- Ogni modifica viene simulata, prima di essere applicata.
- Ogni modifica può essere applicata alla precisa porzione di macchine necessaria:
- l’intera infrastruttura;
- solo specifici ambienti (collaudo, produzione);
- solo specifici ruoli (frontend web, macchina applicativa);
- una o più specifiche macchine.

Prerogative di AWX ed Ansible
I playbook Ansible eseguiti sono pensati per essere idempotenti, ossia la loro esecuzione consecutiva apporta modifiche solamente ove necessario
- Nel codice Ansible sono definite le variabili valorizzate in maniera specifica per inventario, gruppo (group_vars) o singolo host (host_vars).
- Non essendo necessario alcun agent, AWX è in grado di operare su macchine presenti nella propria rete ed in altri perimetri, fino ad arrivare ad ambienti cloud. Ovunque ci sia una porta SSH visibile.
I playbook vengono eseguiti con una schedulazione quotidiana da parte di AWX.
- La configurazione prevista dai playbook Ansible viene applicata solo in caso di differenze (idempotenza).
Ansible gestisce la configurazione e distribuzione del software, sulla base dei ruoli attinenti alle macchine considerate:
- ruoli di tipo base (configurazioni sistema);
- agent di monitoraggio (Zabbiz, Nagios);
- servizi specifici (MySQL, Redis, MongoDB, Elasticsearch);