Dell EMC Infrastructure as Code (IaC) (it)

10 minuti di lettura

Este post también está disponible en Español

Cloud, container, Kubernetes, IaC e DevOps sono oggi tra i termini più ricercati su Internet per un semplice motivo, la necessità di accelerare lo sviluppo di applicazioni. Per attuare questa tendenza, l’infrastruttura di storage a supporto deve essere configurata in ogni momento in base alle esigenze delle applicazioni seguendo un approccio pratico che consenta di “costruire” l’infrastruttura in modo analogo a come si costruiscono le applicazioni, cioè, usando codice.

Wikipedia definisce IaC (Infrastructure as Code) come “il processo di gestione e provisioning dei data center dei computer attraverso file di definizione leggibili dalla macchina, piuttosto che configurazione hardware fisica o strumenti di configurazione interattiva.”

Si potrebbe pensare che per implementare l’IaC sia sufficiente scrivere una serie di script che consentano un certo grado di automazione. Tuttavia è chiaro che il solo uso di script comporti uno sforzo notevole per mantenerli oltre ad un continuo aggiornamento degli stessi quando l’infrastruttura cambia.

IaC è un concetto diverso, la IaC prevede l’uso di best practices e processi di sviluppo software agile per la gestione dell’infrastruttura. La IaC fa parte di DevOps ed è quindi finalizzata alla continuous delivery. Per eliminare la complessità di conoscere in dettaglio come interagire con l’infrastruttura, l’IaC utilizza una serie di strumenti per gestirla tramite codice e orchestratori standard.

In questo post analizzeremo gli strumenti della IaC che consentono un’automazione ripetibile, coerente e solida delle infrastrutture di storage.

IaC e sistemi di storage, 101

I sistemi di storage Dell EMC possono essere utilizzati come Infrastructure as Code per mezzo di una varietà di strumenti di sviluppo e automazione dell’ambiente, dal più basso al più alto livello di integrazione, attraverso API, kit di sviluppo software, plugin per VMware, strumenti di automazione come vRealize Orchestrator e moduli di gestione come Ansible. I sistemi Dell EMC implementano anche il plugin CSI che abilita l’integrazione con Kubernetes consentendo il provisioning di volumi di archiviazione persistenti.

Come suggerisce il nome, IaC implica l’uso di codice, codice nei file di testo. Perché usare file di testo? Ci sono diversi motivo per cui farlo:

  • Il primo è perché i file di testo sono molto facili da leggere, condividere e modificare.
  • Il secondo motivo è che consentono un semplice controllo di versione (v1, v3, ecc.).
  • In terzo luogo, i file di testo possono essere di tipo declarable. Dichiarabile è un concetto importante, dichiarabile significa che questi file esprimono ciò che se vuole ottenere (what), lo stato desiderato, senza la necessità di specificare come farlo (how). Kubernetes è un esempio di piattaforma dichiarativa. Un modello dichiarativo o descrittivo (what) contrasta con il modello imperativo (how). In quest’ultimo caso è necessario specificare i passaggi sequenziali o l’elenco dei comandi che devono essere eseguiti per raggiungere lo stato desiderato.
  • Per ultimo i file di testo costituiscono documentazione eseguibile.
infrastructure-as-code-101
infrastructure-as-code-101 (click to enlarge)

Per i suoi sistemi di storage, Dell EMC implementa IaC a tutti i livelli.

infrastructure-as-code-devops-integrations
infrastructure-as-code-devops-integrations (click to enlarge)

Partiamo dal livello più basso di integrazione di IaC, le REST: API

REST:API

È possibile affermare che le REST: API non sono sinonimo di automatismo ma costituiscono la base per l’automazione. Linguaggi quali Python o PowerShell possono essere utilizzati nella scrittura di script per accedere alle API e, da questo punto di vista, tali linguaggi costituiscono un secondo livello di integrazione.

La comunicazione in un ambiente REST: API è HTTP su IP. Ogni chiamata viene autenticata con la GUI di amministrazione del sistema di storage (Dell EMC Unisphere). Un importante vantaggio delle REST: API è che tutte le chiamate di amministrazione sono sottoposte a versioning, questo significa che generalmente possiamo aggiornare la GUI alla ultima versione quando necessario senza compromettere il funzionamento degli script che continueranno a funzionare esattamente allo stesso modo di prima. Gli script possono essere aggiornati in un secondo momento per sfruttare le nuove funzionalità delle ultime versioni della GUI.

infrastructure-as-code-rest-api
infrastructure-as-code-rest-api (click to enlarge)

Le API utilizzano i 4 verbi principali: GET, POST, PUT e Delete.

REST è una metodologia semplice di manipolazione dei dati e tutti i sistemi di storage di Dell EMC dispongono di un’interfaccia API (Dell EMC Unity APIDell EMC PowerMax API) con la quale è possibile eseguire attività come il monitoraggio, provisioning e persino copie locali (snap) e remote.

ANSIBLE

Ansible è un software di amministrazione e configurazione con il quale è possibile eseguire in modo semplice il provisioning, la gestione e l’orchestrazione di un ambiente IT. Ansible è stato progettato per implementazioni multilivello e si basa su un linguaggio procedurale.

I comandi in Ansible si scrivono in file chiamati playbook usando YAML come linguaggio che descrive le attività (play) per eseguire le azioni (task) che si desidera compiere. YAML è un linguaggio che utilizza un formato di serializzazione dei dati progettato per essere molto facile da leggere.

I playbook interagiscono con i moduli Ansible (scritti in Python) già sviluppati da Dell EMC che consentono di automatizzare la gestione dei sistemi di storage. I moduli Ansible hanno un ciclo di sviluppo continuo e una volta validati sono disponibili nel repository GitHub . Moduli Ansible PowerMax , moduli Ansible Unity.

I moduli Ansible includono attività come leggere, creare, modificare ed eliminare oggetti (volumi, gruppi di volumi, host, copie, ecc)

infrastructure-as-code-ansible-modules
infrastructure-as-code-ansible-modules (click to enlarge)

Ansible ha numerosi vantaggi.

  • non richiede l’uso di agenti (è agentless).
  • è idempotente, significa che una determinata attività verrà eseguita una sola volta anche se tale attività viene invocata più volte.
  • è estensibile, il codice sorgente è disponibile su GitHub offrendo all’IT di sviluppare playbook complessi ed estensioni per altre piattaforme.
  • è ripetibile, garantisce la coerenza nell’automazione del data center.
  • è scalabile, i moduli sono in grado di orchestrare flussi di lavoro per uno o più sistemi di storage, contribuendo ad un’automazione a scala mediante l’uso di template.
vRO (VMware vRealize Orchestrator)

Dell EMC mantiene un focus importante sull’ecosistema VMware dal momento che questo tipo di ambiente è senza dubbio il più ampiamente implementato nei principali data center. Dell EMC e VMware, entrambe società di Dell Technologies, dispongono di numerose integrazioni tecnologiche di alto livello. Per quanto riguarda l’automazione con VMware, ciò significa assoluta compatibilità con vRealize Automation (vRA) e vRealize Orchestration (vRO).

VMware vRealize Orchestrator (vRO) è uno strumento di automazione di processi che consente di eseguire attività operative e amministrative automatizzate in ambienti VMware. Con vRO è possibile creare routine di automazione per flussi di lavoro complessi utilizzando un semplice approccio di trascinamento (drag and drop).

Dell EMC ha sviluppato un set completo di flussi di lavoro (workflow) sotto forma del plugin vRO per i suoi principali sistemi di storage

infrastructure-as-code-vrealize-orchestrator
infrastructure-as-code-vrealize-orchestrator (click to enlarge)

Il plug-in vRO utilizza in modo trasparente le REST: API (parte di Unisphere) ed espone le funzionalità (provisioning, copie locali e remote, ecc.) del sistema di archiviazione sotto forma di blocchi programmabili che possono essere utilizzati e / o integrati con altre attività nella progettazione di un flusso di lavoro.

In poche parole, il plug-in vRO consente di utilizzare un sistema di archiviazione come PowerMax, Unity o XtremIO in modalità semplice grazie alla automazione.  A questo link è possibile vedere una demo di vRO con PowerMax.

CSI (Container Storage Interface)

Kubernetes può essere considerata la piattaforma standard per l’orchestrazione dei container Linux.

I container sono per natura effimeri e sono stati sviluppati per applicazioni stateless che normalmente non richiedono dei volumi di storage persistenti. In questo tipo di applicazioni i dati vengono eliminati quando il container è eliminato, riprogrammato, riavviato o arrestato in modo anomalo. Il risultato è che i dati creati mentre l’applicazione è in esecuzione in una determinata sessione vengono persi nella successiva.

Molte applicazioni necessitano di una memorizzazione persistente. Ad esempio, ambienti come un database di produzione o dati che devono essere condivisi tra applicazioni diverse. In questi casi la persistenza dei dati è fondamentale, così come la necessità che gli stessi siano archiviati e condivisi in un sistema di archiviazione che offra disponibilità e protezione mission-critical.

infrastructure-as-code-csi-plugin
infrastructure-as-code-csi-plugin (click to enlarge)

La gestione di uno spazio di archiviazione persistente per i container presenta una serie di sfide. Ad esempio, quando i container sono riprogrammati (scheduling), può risultare che siano eliminati da un host e riprogrammati su uno diverso. In tali casi, anche il volume di archiviazione deve cambiare ed essere disponibile sul nuovo host affinché il contenitore possa avviarsi correttamente. In altre parole, è necessario un metodo per Kubernetes che sia in grado di gestire il sistema di storage.

infrastructure-as-code-csi-powermax
infrastructure-as-code-csi-powermax (click to enlarge)

Container Storage Interface (CSI) è uno standard che offre un livello di astrazione per la connessione tra i volumi logici dell’ambiente Kubernetes e i volumi di archiviazione (LUN). Grazie al plugin CSI è possibile gestire l’archiviazione senza conoscere i dettagli del sistema di storage fornendo semplicità all’implementazione di applicazioni basate su microservizi.

Dell EMC offre il plug-in CSI per le sue principali piattaforme di archiviazione.  CSI plugin para PowerMax, CSI plugin para Unity.

Per concludere

IaC è un approccio all’automazione dell’infrastruttura basato su best-practices di sviluppo software (DevOps) che offre numerosi vantaggi all’IT:

Processi automatizzati e coerenti. Un sistema di storage gestito da un orchestrator e API significa gestione agile, flessibile e controllo dettagliato delle operazioni.

infrastructure-as-code-summary
infrastructure-as-code-summary (click to enlarge)

IaC consente agli ambienti applicativi di gestire sistemi complessi su larga scala.

Le modifiche all’infrastruttura possono essere eseguite in modo continuo e sicuro senza la necessità di definire un intero progetto prima di applicarle

Mantenere un TCO basso perché la gestione dell’ambiente è semplificata e veloce grazie all’utilizzo di plugin/codice

infrastructure-as-code-big-picture
infrastructure-as-code-big-picture (click to enlarge)
Per maggiori informazioni

Dell EMC Storage Automation and Developer Resources

VMware & PowerMax

Dell EMC PowerMax & IaC

#IWork4Dell

Este post también está disponible en: Español (Spagnolo)