Puppet - Panoramica

Puppet è uno strumento di gestione della configurazione sviluppato da Puppet Labs per automatizzare la gestione e la configurazione dell'infrastruttura. Puppet è uno strumento molto potente che aiuta nel concetto di infrastruttura come codice. Questo strumento è scritto in linguaggio Ruby DSL che aiuta a convertire un'infrastruttura completa in formato codice, che può essere facilmente gestito e configurato.

Puppet segue il modello client-server, in cui una macchina in qualsiasi cluster funge da server, nota come burattinaio e l'altra funge da client nota come slave sui nodi. Puppet ha la capacità di gestire qualsiasi sistema da zero, a partire dalla configurazione iniziale fino alla fine del ciclo di vita di una determinata macchina.

Caratteristiche di Puppet System

Di seguito sono elencate le caratteristiche più importanti di Puppet.

Idempotenza

Puppet supporta Idempotency che lo rende unico. Simile a Chef, in Puppet, è possibile eseguire in sicurezza lo stesso set di configurazione più volte sulla stessa macchina. In questo flusso, Puppet verifica lo stato corrente della macchina di destinazione e apporterà modifiche solo in caso di modifiche specifiche nella configurazione.

Idempotency aiuta a gestire qualsiasi macchina particolare durante il suo ciclo di vita a partire dalla creazione della macchina, i cambiamenti di configurazione nella macchina, fino alla fine del suo ciclo di vita. La funzione Puppet Idempotency è molto utile per mantenere la macchina aggiornata per anni piuttosto che ricostruire la stessa macchina più volte, in caso di modifiche alla configurazione.

Cross-platform

In Puppet, con l'aiuto di Resource Abstraction Layer (RAL) che utilizza le risorse Puppet, è possibile indirizzare la configurazione del sistema specificata senza preoccuparsi dei dettagli di implementazione e di come il comando di configurazione funzionerà all'interno del sistema, che sono definiti nella configurazione sottostante file.

Puppet - Flusso di lavoro

Puppet utilizza il seguente flusso di lavoro per applicare la configurazione al sistema.

  • In Puppet, la prima cosa che fa il Puppet master è raccogliere i dettagli della macchina di destinazione. Utilizzando il fattore presente su tutti i nodi Puppet (simile a Ohai in Chef) si ottengono tutti i dettagli di configurazione a livello di macchina. Questi dettagli vengono raccolti e rispediti al burattinaio.

  • Quindi il burattinaio confronta la configurazione recuperata con i dettagli di configurazione definiti e con la configurazione definita crea un catalogo e lo invia agli agenti Puppet di destinazione.

  • L'agente Puppet applica quindi tali configurazioni per portare il sistema in uno stato desiderato.

  • Infine, una volta che il nodo di destinazione si trova nello stato desiderato, invia un rapporto al Puppet master, che aiuta il Puppet master a capire dove si trova lo stato corrente del sistema, come definito nel catalogo.

Puppet - Componenti chiave

Di seguito sono riportati i componenti chiave di Puppet.

Risorse dei burattini

Le risorse Puppet sono i componenti chiave per modellare una macchina particolare. Queste risorse hanno il proprio modello di implementazione. Puppet utilizza lo stesso modello per ottenere una particolare risorsa nello stato desiderato.

Fornitori

I provider sono fondamentalmente i soddisfacenti di qualsiasi risorsa particolare utilizzata in Puppet. Ad esempio, il tipo di pacchetto "apt-get" e "yum" sono entrambi validi per la gestione dei pacchetti. A volte, più di un provider sarebbe disponibile su una particolare piattaforma. Sebbene ogni piattaforma abbia sempre un provider predefinito.

Manifesto

Manifest è una raccolta di risorse che vengono accoppiate all'interno della funzione o delle classi per configurare qualsiasi sistema di destinazione. Contengono un set di codice Ruby per configurare un sistema.

Moduli

Il modulo è l'elemento costitutivo chiave di Puppet, che può essere definito come una raccolta di risorse, file, modelli, ecc. Possono essere facilmente distribuiti tra diversi tipi di sistemi operativi essendo definiti che hanno lo stesso sapore. Poiché possono essere facilmente distribuiti, un modulo può essere utilizzato più volte con la stessa configurazione.

Modelli

I modelli utilizzano espressioni Ruby per definire il contenuto personalizzato e l'input delle variabili. Sono utilizzati per sviluppare contenuti personalizzati. I modelli vengono definiti nei manifesti e vengono copiati in una posizione nel sistema. Ad esempio, se si desidera definire httpd con una porta personalizzabile, è possibile farlo utilizzando la seguente espressione.

Listen <% = @httpd_port %>

La variabile httpd_port in questo caso è definita nel manifest che fa riferimento a questo modello.

File statici

I file statici possono essere definiti come file generali che a volte sono necessari per eseguire attività specifiche. Possono essere semplicemente copiati da una posizione all'altra utilizzando Puppet. Tutti i file statici si trovano nella directory dei file di qualsiasi modulo. Qualsiasi manipolazione del file in un manifest viene eseguita utilizzando la risorsa file.