AWX – Infrastructure As Code via Ansible

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);
Top