Cloudformation: guida ai template annidati

Cloudformation: guida ai template annidati

“Without Self-Service Operations the Cloud Becomes Expensive Hosting 2.0”
Damon Edwards

Il mondo del Cloud introduce in maniera forzata il tema dell’automazione, senza la quale – come dice Damon – diventa solo un “Hosting 2.0” con un costo (potenzialmente, ndr) maggiore.

Cloudformation

Di questo tema abbiamo già parlato in diversi articoli che trattano di automazione da diverse prospettive, dal provisioning dell’infrastruttura fino al processo di Build and Test automatizzato per Continuous Integration. Diversi sono i prodotti e le tecnologie che i diversi Cloud Provider mettono a disposizione, eppure molto spesso, nonostante il costo prossimo a zero di alcune di queste soluzioni, ci ritroviamo a spiegare quali siano effettivamente i vantaggi nell’adozione di queste tecnologie a fronte di un iniziale maggiore sforzo.

Una delle maggiori perplessità nasce proprio per l’Infrastructure-as-a-Code, con tool quali Terraform, Chef o Puppet Labs. In ambiente AWS tuttavia si aggiunge un’ulteriore scelta, Cloudformation. Abbiamo già accennato al suo primo funzionamento e impiego in questo articolo ma questa volta vogliamo fare di più, vogliamo spiegare concretamente i vantaggi di prodotti di questo tipo e come gestirli al meglio.

Partiamo dalle cose complicate…

Molteplici sono i vantaggi dei software o delle tecnologie che consentono di gestire centralmente il Configuration Management. Se questo è vero per lo Sviluppo del Software, diventa maggiormente vero nelle componenti infrastrutturali dove alcune modifiche possono introdurre diverse problematiche. Basti pensare all’ambito Networking: cambiare una regola su di un Firewall o modificare una Routing Table può introdurre malfunzionamenti o addirittura disservizi. Cloudformation, in ambiente prettamente AWS, consente di gestire l’intera infrastruttura come un codice sorgente, con un suo versioning e con la possibilità di regolamentarne le modifiche sulla base di processi di Change Management semplici, snelli ma soprattutto con la riduzione dei rischi derivanti da questi ultimi.

Oltre che la sicurezza nella gestione del processo di Change Management, ne deriva una semplificazione nella definizione, manutenzione e audit delle policy di Compliance che vedrebbero quasi svanire l’intervento manuale sul singolo componente\apparato. Diversi sono quindi i vantaggi che riguardano in maniera molto vicina l’ICT, ma il Business?

Ridurre il TCO di qualsiasi iniziativa è l’obiettivo delle aziende che mirano ad essere agili, e Cloudformation vi consente di farlo.
Immaginate di avere uno stack sul quale solitamente si lavora per creare campagne, siti, applicazioni e tanto altro. Immaginate ora di poter ricreare questo stack con una semplice riga di comando, di poterlo ricreare in qualsiasi parte del mondo e con già tutto configurato opportunamente sulla base dei tool, delle policy e dei software in essere nella propria azienda. Un sogno? No, semplicemente IaaC.

Ci metto meno se lo faccio a mano

Questa è una frase che spesso ci viene detta dai nostri clienti, e non nascondo che anni fa anche noi in Azatec ci siamo macchiati dello stesso reato. Effettivamente ragionando sul singolo progetto o sulla singola attività, questa è una verità inconfutabile. Tuttavia tutti sappiamo che il progetto non è mai singolo, che le necessità (molto spesso) sono le stesse e quindi questo “ci metto meno..” viene a cadere e si riesce a percepire tutto il valore di fare il lavoro una sola volta, intervenendo quando ci sono aggiornamenti ma senza ripeterlo in maniera alienante.

Bisogna fare ordine!

La manutenzione di un template, che sia questo con Cloudformation o con Terraform, Chef o Puppet, diventa chiaramente di cruciale importanza essendo di fatto questa al centro del processo di Change Management che avviene quasi all’unisono in tutto il reparto Operations e non solo. Il “problema” è proprio in questo ultimo punto: a mantenere questo Configuration Item (come i puristi dell’ITIL lo chiamerebbero) sono in tanti e questi tanti hanno skill, responsabilità e necessità molto diverse tra loro.

Da qui, per Cloudformation, si ha la possibilità di creare dei template annidati. Banalmente dei template nei template che introducono un beneficio enorme non solo nella pulizia, per evitare quindi che un unico template abbia decine di migliaia di righe di codice, ma anche per poterli logicamente dividere sulla base di chi deve intervenire su quella tematica. Si potrà quindi creare un template che crea a sua volta un template per il Networking, uno per il Database e le sue configurazioni, uno per tutto ciò che riguarda Virtual Machine e tanti altri segmentati e strutturati sulla base del gruppo di persone che ci lavora. Ovvio che le modifiche vanno fatte “all’unisono”, dopotutto parliamo di tool che nascono con una tendenza DevOps molto forte, ma ognuno è in grado di comprendere e strutturare il (sotto)template sulla base delle proprie necessità.

Qui di seguito una serie di consigli utili per poterlo fare in maniera efficace:

  1. Spesso i template hanno bisogno di “parlarsi” e con Cloudformation, al contrario di Terraform che usa ad esempio le variabili d’ambiente, lo si fa tramite Input e Output. Si generano nei template, le cui componenti devono essere utilizzate da terze parti, degli Output che vengono richiamati dal template “master” e immessi in Input ai template che dovranno farne uso
  2. Divide et Impera, ma con parsimonia. Ogni template è un elemento Cloudformation, prima di iniziare a scrivere il vostro template – la cui maggior parte delle componenti può essere “scopiazzata” dalla rete – pensate ad una struttura che abbia senso nella vostra organizzazione. Fate solo attenzione che non siate in presenza di “silos” altrimenti lo strumento potrebbe esser deleterio
  3. Abbiate rispetto di chi viene dopo. Una cosa inutile da dire ad un Developer, un po’ meno per un System\Network Engineer che magari fino ad ora non ha mai “scritto righe di codice” per poter configurare i propri sistemi o apparati. Se non siete pratici nella scrittura chiara di un template che dovrà essere mantenuto da terzi fatevi dare una mano dai colleghi sviluppatori, niente silos giusto?

Vuoi sapere come Cloudformation, Terraform o Chef possono aiutare la tua azienda?






Ho letto e acconsento al trattamento dei dati personali