Chef - Panoramica

Chef è una tecnologia open source sviluppata da Opscode. Adam Jacob, co-fondatore di Opscode è conosciuto come il fondatore di Chef. Questa tecnologia utilizza la codifica Ruby per sviluppare elementi costitutivi di base come ricette e libri di cucina. Chef viene utilizzato nell'automazione dell'infrastruttura e aiuta a ridurre le attività manuali e ripetitive per la gestione dell'infrastruttura.

Chef ha una propria convenzione per diversi elementi costitutivi, necessari per gestire e automatizzare l'infrastruttura.

Perché Chef?

Chef è una tecnologia di gestione della configurazione utilizzata per automatizzare il provisioning dell'infrastruttura. È sviluppato sulla base del linguaggio Ruby DSL. Serve per snellire l'attività di configurazione e gestione del server aziendale. Ha la capacità di integrarsi con qualsiasi tecnologia cloud.

In DevOps, utilizziamo Chef per distribuire e gestire server e applicazioni internamente e sul cloud.

Caratteristiche dello chef

Di seguito sono riportate le caratteristiche più importanti di Chef:

  • Chef utilizza il popolare linguaggio Ruby per creare un linguaggio specifico del dominio.

  • Chef non fa ipotesi sullo stato corrente di un nodo. Utilizza i suoi meccanismi per ottenere lo stato corrente della macchina.

  • Chef è l'ideale per la distribuzione e la gestione del server cloud, dello storage e del software.

Vantaggi dello chef

Lo chef offre i seguenti vantaggi:

  • Lower barrier for entry - Poiché Chef utilizza il linguaggio Ruby nativo per la configurazione, un linguaggio di configurazione standard può essere facilmente acquisito da chiunque abbia una certa esperienza di sviluppo.

  • Excellent integration with cloud- Utilizzando l'utilità coltello, può essere facilmente integrato con qualsiasi tecnologia cloud. È lo strumento migliore per un'organizzazione che desidera distribuire la propria infrastruttura in ambiente multi-cloud.

Svantaggi di Chef

Alcuni dei principali svantaggi di Chef sono i seguenti:

  • Uno degli enormi svantaggi di Chef è il modo in cui vengono controllati i libri di cucina. Ha bisogno di babysitter costante in modo che le persone che lavorano non debbano incasinare i libri di cucina degli altri.

  • È disponibile solo Chef solo.

  • Nella situazione attuale, è adatto solo per il cloud AWS.

  • Non è molto facile imparare se la persona non ha familiarità con Ruby.

  • La documentazione manca ancora.

Elementi fondamentali di Chef

Ricetta

Può essere definito come una raccolta di attributi che vengono utilizzati per gestire l'infrastruttura. Questi attributi presenti nella ricetta vengono utilizzati per modificare lo stato esistente o impostare un particolare nodo dell'infrastruttura. Vengono caricati durante l'esecuzione del client Chef e compartati con l'attributo esistente del nodo (macchina). Quindi arriva allo stato definito nella risorsa nodo della ricetta. È il principale cavallo di battaglia del libro di cucina.

Ricettario

Un libro di cucina è una raccolta di ricette. Sono gli elementi costitutivi di base che vengono caricati sul server Chef. Quando lo Chef run ha luogo, assicura che le ricette presenti al suo interno ottengano una data infrastruttura allo stato desiderato come elencato nella ricetta.

Risorsa

È il componente base di una ricetta utilizzata per gestire l'infrastruttura con diversi tipi di stati. Ci possono essere più risorse in una ricetta, che aiuteranno a configurare e gestire l'infrastruttura. Ad esempio:

  • package - Gestisce i pacchetti su un nodo

  • service - Gestisce i servizi su un nodo

  • user - Gestisce gli utenti sul nodo

  • group - Gestisce i gruppi

  • template - Gestisce i file con il modello Ruby incorporato

  • cookbook_file - Trasferisce i file dalla sottodirectory files nel ricettario a una posizione sul nodo

  • file - Gestisce il contenuto di un file sul nodo

  • directory - Gestisce le directory sul nodo

  • execute - Esegue un comando sul nodo

  • cron - Modifica un file cron esistente sul nodo

Attributo

Sono fondamentalmente delle impostazioni. Possono essere pensati come una coppia di valori chiave di tutto ciò che si desidera utilizzare nel libro di cucina. Esistono diversi tipi di attributi che possono essere applicati, con un diverso livello di precedenza sulle impostazioni finali con cui opera il nodo.

File

È una sottodirectory all'interno del ricettario che contiene qualsiasi file statico che verrà posizionato sui nodi che utilizzano i libri di cucina. Una ricetta può quindi essere dichiarata come una risorsa che sposta i file da quella directory al nodo finale.

Modelli

Sono simili ai file, ma non sono statici. I file modello terminano con l'estensione .ebr, il che significa che contengono Ruby incorporato. Vengono utilizzati principalmente per sostituire un valore di attributo nei file per creare la versione finale del file che verrà posizionata sul nodo.

Metadata.rb

Viene utilizzato per gestire i metadati relativi al pacchetto. Ciò include dettagli come il nome e i dettagli del pacchetto. Include anche cose come le informazioni sulle dipendenze che indicano quali libri di cucina questo libro di cucina deve funzionare. Ciò consente al server Chef di creare correttamente l'elenco di esecuzione del nodo e garantisce che tutti i pezzi vengano trasferiti correttamente.

Struttura predefinita del ricettario

C:\chef\cookbooks\nginx>tree 
Folder PATH listing for volume Local Disk 
Volume serial number is BE8B-6427 
C: ├───attributes 
├───definitions 
├───files 
│   └───default 
├───libraries 
├───providers 
├───recipes 
├───resources 
└───templates 
    └───default

Chef - Tecnologie correlate

Di seguito è riportato l'elenco delle tecnologie correlate a Chef.

Fantoccio

Puppet fornisce un modo standard di fornire e utilizzare il software, indipendentemente da dove viene eseguito. È un motore amministrativo automatizzato per sistemi Linux, Unix e Windows che esegue attività amministrative basate su specifiche centralizzate.

Il primario features of Puppet sono i seguenti -

  • Implementazione di nuovi sistemi con una configurazione uniforme.
  • Aggiornamento dei sistemi e aggiornamento della sicurezza e dei pacchetti software.
  • Incorporando nuove funzionalità e aggiungendo capacità abili.
  • Personalizzazione delle configurazioni per garantire la disponibilità delle origini dati.
  • Ottimizzazione delle risorse disponibili e riduzione al minimo dei costi.
  • Semplificare i ruoli e consentire al team di concentrarsi su questioni fondamentali e produttive.
  • Ottenere una vista a volo d'uccello dell'infrastruttura disponibile.

Ansible

Ansible è una piattaforma di automazione IT radicalmente semplice che semplifica l'implementazione delle applicazioni e dei sistemi. Evita di scrivere script o codice personalizzato per distribuire e aggiornare le tue applicazioni: automatizza in una lingua che si avvicina al semplice inglese, utilizzando SSH, senza agenti da installare su sistemi remoti.

Il primario features of Ansible sono i seguenti -

  • Semplice e facile da imparare
  • Scritto in Python
  • Agentless
  • Playbook basati su YAML
  • Galassia Ansible

SaltStack

SaltStack viene utilizzato per la configurazione basata sui dati. È un nuovo approccio alla gestione dell'infrastruttura basato su bus di comunicazione dinamico. Viene utilizzato per l'orchestrazione basata sui dati, l'esecuzione remota per qualsiasi infrastruttura e la gestione della configurazione per qualsiasi stack di app.

Tessuto

Fabric è un linguaggio di programmazione basato su Python, sviluppato come API di Python che deve essere importato nel codice Python per configurare e gestire un'infrastruttura.