Puppet: cos’è e come usarlo per DevOps, automazione e orchestrazione
Puppet definisce il suo omonimo strumento di automazione lanciato sul mercato nel 2005 come standard di fatto per automatizzare la consegna e il funzionamento continuo di un’infrastruttura ibrida. Questo era vero fino a un po’ di tempo fa e anche ora Puppet è utilizzato da 40.000 organizzazioni in tutto il mondo, tra cui il 75% delle aziende Fortune 100. Mentre Puppet è ancora un prodotto molto forte e ha aumentato la sua velocità e capacità nel corso degli anni, i suoi concorrenti, in particolare Chef, hanno ridotto non poco il divario.
Come ci si potrebbe aspettare quando si parla di automazione IT, Puppet ha una vasta gamma di moduli e copre la gamma da CI/CD all’infrastruttura cloud-nativa, anche se molte di queste funzionalità sono fornite attraverso prodotti aggiuntivi. Mentre Puppet è principalmente un sistema basato su modelli con agenti, supporta le operazioni push con Puppet Tasks. Puppet Enterprise è persino disponibile come servizio su Amazon.
I prodotti di Puppet
Le offerte attuali di Puppet includono Puppet Open Source, Puppet Enterprise, Puppet Pipelines, Puppet Discovery, Puppet Bolt, Puppet Container Registry e Puppet Forge. Puppet Open Source, un motore di amministrazione automatizzato per i sistemi Linux, Unix e Windows, esegue attività amministrative (come l’aggiunta di utenti, l’installazione di pacchetti e l’aggiornamento delle configurazioni del server) in base a una specifica centralizzata.
Puppet Enterprise aggiunge funzionalità di orchestrazione, una console web e supporto professionale a Puppet Open Source. Aiuta a scalare l’automazione in modo ampio e approfondito sull’infrastruttura e a mantenerla conforme. Puppet Discovery va invece alla scoperta dell’infrastruttura tradizionale, delle risorse native del cloud e dei container e consente di gestire il tutto.
Puppet & DevOps
Puppet Pipelines è una piattaforma di integrazione continua e di distribuzione continua disponibile come servizio in hosting e on-premises. Esistono due versioni separate di Pipelines, per applicazioni e per container con Kubernetes.
La funzione agent-less Puppet Task consente di eseguire attività ad hoc, al contrario dell’automazione basata su modelli con agenti. Le attività sono disponibili in due versioni: Puppet Bolt open source e Puppet Enterprise Task Management. Bolt è destinato a infrastrutture più piccole, mentre Enterprise Task Management, un componente di Puppet Enterprise, è destinato a infrastrutture su larga scala che richiedono controllo degli accessi basato sui ruoli, audit trail e workflow orientati al team.
Puppet Container Registry (precedentemente conosciuto come Distelli Europa), disponibile in versioni gratuite, premium (o team) e aziendali, fornisce una vista unificata dei registri locali e remoti per i container Docker. La versione premium aggiunge supporto multiutente e controllo degli accessi; la versione Enterprise aggiunge single sign-On.
Puppet Forge
Puppet Forge è un repository di moduli per Puppet Open Source e Puppet Enterprise. Attualmente contiene oltre 5.500 moduli prefabbricati. Alcuni moduli hanno Puppet Tasks (ma non tutti) e altri moduli sono testati e supportati da Puppet come parte di Puppet Enterprise e alcuni sono approvati solo da Puppet.
Ogni modulo ha propri prerequisiti e proprie procedure di installazione. L’installazione dei moduli è un’area in cui Puppet non tenta nemmeno di camuffare le sue radici come strumento per gli amministratori di sistema Linux/Unix, anche se Windows funziona abbastanza bene in questi giorni (tranne come Master).
Puppet Enterprise
Puppet Enterprise è una piattaforma unificata che combina un approccio di configurazione basato sul modello con l’esecuzione imperativa delle attività, in modo da poter gestire l’infrastruttura ibrida. Supporta pratiche devops quali controllo della versione, revisione del codice, test automatici, integrazione continua e distribuzione automatizzata. È inoltre possibile utilizzare Puppet per migrare carichi di lavoro in cloud, container e cloud ibrido. Puppet consente di far rispettare lo stato desiderato delle configurazioni, correggere automaticamente eventuali modifiche impreviste e automatizzare le attività ad hoc.
Puppet Enterprise aiuta a ridurre i rischi associati alle errate configurazioni di sicurezza e ai controlli non riusciti applicando continuamente le vostre policy di sicurezza e dimostrando la conformità. Fondamentalmente, il Puppet Master invia automaticamente (tramite push) i cataloghi ai propri clienti ogni mezz’ora, e gli agenti Puppet sui client confrontano il catalogo con i fatti relativi alla sua configurazione esistente e applicano le modifiche se necessario. Quindi gli agenti restituiscono un rapporto di stato al master, che può generare un rapporto di conformità generale. La sicurezza e la conformità sono gestite come parte del core management di configurazione di Puppet e non in un componente separato.
Puppet nel cloud
Puppet Enterprise è integrato con i principali fornitori di servizi cloud tra cui Amazon, Microsoft, VMware e Google. Consente di semplificare la gestione delle risorse di elaborazione, storage e rete e di scalare i carichi di lavoro in ambienti eterogenei. La funzionalità si trova principalmente nei moduli specifici del cloud come puppetlabs/aws, che fornisce un’interfaccia all’API AWS e consente non solo di fornire istanze, ma anche di descrivere l’intera infrastruttura AWS e di modellare le relazioni tra diversi componenti.
Puppet Enterprise attualmente non supporta funzioni serverless. Puppet Pipelines, un altro componente del portfolio di Puppet, è uno strumento per gestire il ciclo di vita del rilascio del codice dell’app, che può includere funzioni serverless.
Kit di sviluppo di Puppet
Puppet offre un profondo sviluppo personalizzato che consente di scrivere i vostri moduli. Ora offre un kit di sviluppo che semplifica la generazione di nuovi moduli e rende possibile la conversione di vecchi moduli compatibili con il Puppet Development Kit (PDK). Il PDK include strumenti di test, un modello di modulo completo (come YAML, Ruby e file Ruby incorporati) e strumenti da riga di comando per aiutarti a creare, convalidare ed eseguire test sui moduli Puppet.
Installazione e configurazione di Puppet
Esistono due modi principali per l’installazione di Puppet Enterprise: l’utilizzo di AWS OpsWorks o il download e l’installazione in locale o in una o più istanze cloud (la gestione di un massimo di 10 nodi è gratuita). Prima di provare una di queste installazioni, potreste voler conoscere meglio Puppet con Puppet Learning VM o l’emulatore online di Puppet mostrato qui sotto.
Utilizzando AWS OpsWorks for Puppet Enterprise, un servizio gestito, potete avere un master Puppet pienamente configurato attivo su AWS in meno di 20 minuti. OpsWorks è una buona scelta per piccoli team che non possono o non vogliono gestire la propria infrastruttura Puppet. I passaggi di base per la creazione di un’istanza di AWS OpsWorks for Puppet Enterprise iniziano con il download e l’installazione degli strumenti AWS CLI, Git e Puppet Enterprise.
A questo punto create una chiave SSH, configurate un account GitHub usando la chiave SSH, accedete alla console AWS, andate al servizio OpsWorks e fate clic su Create Puppet Enterprise Server. Assegnate un nome breve al vostro server, scegliete una regione e selezionate il tipo di istanza c4.large. Accettate i valori predefiniti nella pagina delle impostazioni avanzate, avviate l’istanza del server e scaricate sia le credenziali, sia lo Starter Kit prima che l’istanza termini l’inizializzazione. Il resto di ciò che vi serve è nello Starter Kit, ma a questo punto avrete già un Master funzionante che sta applicando la propria configurazione.
L’installazione fai da te di Puppet Enterprise è un’operazione molto più lunga e complicata e consente di eseguire un aggiornamento ogni volta che Puppet rilascia una nuova versione. D’altra parte, potete sfruttare le risorse del server che già possedete.
È possibile installare Puppet Enterprise con un programma di installazione basato sul web o su testo su un sistema RHEL, Ubuntu LTS o Suse Linux, dopo aver scaricato il tarball appropriato e verificato l’impronta digitale. Dovrete fornire la vostra email per ottenere il link. Suggeriamo di iniziare con un’installazione mono basata sul web (tutto su un nodo) scegliendo tutti i valori predefiniti. Potete sempre apportare modifiche in seguito.
Costo
Open Source Puppet: gratuito. Puppet Enterprise: 10 nodi gratuiti, 120 dollari all’anno fino a 500 nodi con supporto standard. Puppet Discovery è attualmente in anteprima tecnica. Puppet Pipelines: cinque nodi gratuiti, 29,99 al mese fino a 100 nodi con supporto standard.
Piattaforma
Master: Red Hat, SUSE o Ubuntu Linux. Agenti: Linux, Windows Vista o successivo, MacOS 10.10 o successivo, Solaris 10 o 11. Cloud master disponibile come AWS OpsWorks for Puppet Enterprise.