Table des matières

Version : 2023.01

Dernière mise-à-jour : 2023/11/12 11:41

LDF701 - Présentation de Progress Chef

Contenu du Module

Présentation

Chef est un logiciel libre de gestion de configuration sous la licence Apache 2.0 qui permet l'automatisation de la plupart des tâches de la gestion d'une infrastructure IT. En tant que tel, c'est un outil IAC ( Infrastructure as Code ).

Chef a été créé par Adam Jacob. Une société appelée OpsCode a été créée en 2008 par Adam Jacob, Jesse Robbins, Barry Steinglass, Nathan Haneysmith et Joshua Timberman pour développer Chef avec la première version sortie en janvier 2009.

Les fondateurs étaient, pour la plupart, des individus des équipes des data centers d'Amazon™ et de Microsoft™.

Chef a été développé en utilisant Ruby et Erlang.

Chef était disponible en trois versions :

En avril 2019, OpsCode a annoncé que le code source des logiciels serait toujours sous la licence Apache 2.0 mais que les binaires seraient disponibles sous licence propriétaire. A cette date, le projet Cinc ( Cinc Is Not Chef ) a commencé à sortir des versions des binaires Chef sous la licence Apache 2.0.

En 2020, la société OpsCode a été achetée par la société Progress pour $220 millions. La société est devenue ansuite Progress Chef.

A faire - Pour plus d'information concernent Progress Chef et son offre actuelle, consultez le site https://www.chef.io/.

Actuellement, Chef est disponible en deux modèles :

Chef supporte de multiples OS en tant que clients :

L'Organisation de Chef

Chef organise les systèmes IT dans des Organisations. Une organisation peut être :

Chef peut gérer de multiples organisations au sein du même Chef Infra Server.

Chef est Multi-Tenancy qui implique que l'infrastructure dans un Chef Infra Server peut être gérée par de multiples administrateurs.

Les différentes étapes dans le cycle de vie d'une application, par exemple Développement, Test, User Accepting Testing ( UAT ) et Production, sont représentées par des Environnements au sein de Chef. L'Environnement par défaut de Chef s'appelle _default.

Chaque serveur dans une infrastructure remplit une fonction spécifique. Chacune des ces fonctions est appelée un Rôle sous Chef. Les serveurs sont appelés des Nœuds de >Chef ou encore des Clients.

Chaque serveur dans l'infrastructure ne peut être associé à :

Par contre un serveur peut avoir de multiples Rôles.

L’Écosystème de Chef

L'écosystème de Chef comprend trois éléments :

Chef Infra Server

Le Chef Infra Server nécessite une des distributions Linux suivantes :

Important - Notez que Chef Infra Server ne peut pas être installé sur Windows™.

La configuration minimale de Chef Infra Server est :

Le Chef Infra Server contient :

Chef Workstation

Chef Workstation contient les exécutables suivantes :

La configuration minimale de Chef Workstation est :

La configuration recommandée de Chef Workstation est :

Le Chef Workstation contient aussi :

Chef Nœuds

Un Chef Nœud contient :

Cookbooks, Recettes, Ressources et Attributs

Rappelez-vous que les Cookbooks contiennent des Recettes, Ressources, Attributs, Versions, Gabarits et Bibliothèques.

Recettes

Une Recette :

Les Recettes sont exécutées par la commande chef-run dans l'ordre qu'elles apparaissent dans la Run-List.

Ressources

Une Ressource :

Attributs

Chaque Ressource définie dans une Recette possède un état désiré ou une valeur associée.

Un Attribut :

Création d'un Cookbook et d'une Recette

Un Cookbook est créé sur un Chef Workstation dans un répertoire appelé chef-repo/cookbooks. La commande utilisée pour créer un Workbook est :

# chef generate cookbook <chemin>/<name>

Par exemple, dans le cas de la création d'un Cookbook nommé apache, la commande devient :

root@workstation:~/chef-repo# chef generate cookbook cookbooks/apache
Generating cookbook apache
- Ensuring correct cookbook content

Your cookbook is ready. Type `cd cookbooks/apache` to enter it.

There are several commands you can run to get started locally developing and testing your cookbook.
Type `delivery local --help` to see a full list of local testing commands.

Why not start by writing an InSpec test? Tests for the default recipe are stored at:

test/integration/default/default_test.rb

If you'd prefer to dive right in, the default recipe can be found at:

recipes/default.rb

A faire - Pour plus d'information concernant la commande chef generate cookbook, consultez cette page.

Lors de la création du Cookbook, une arborescence est créée dans le répertoire chef-repo/cookbooks/apache :

root@workstation:~/chef-repo# ls -l cookbooks/apache
total 40
-rw-r--r-- 1 root root  150 nov.   6 10:11 CHANGELOG.md
-rw-r--r-- 1 root root 1176 nov.   6 10:11 chefignore
-rw-r--r-- 1 root root  741 nov.   6 10:11 kitchen.yml
-rw-r--r-- 1 root root   70 nov.   6 10:11 LICENSE
-rw-r--r-- 1 root root  676 nov.   6 10:11 metadata.rb
-rw-r--r-- 1 root root  507 nov.   6 10:11 Policyfile.rb
-rw-r--r-- 1 root root   54 nov.   6 10:11 README.md
drwxr-xr-x 2 root root 4096 nov.   6 10:11 recipes
drwxr-xr-x 3 root root 4096 nov.   6 10:11 spec
drwxr-xr-x 3 root root 4096 nov.   6 10:11 test

Une Recette par défaut, appelé default.rb a été créée dans le sous-répertoire recipes :

root@workstation:~/chef-repo# ls -l cookbooks/apache/recipes/
total 4
-rw-r--r-- 1 root root 97 nov.   6 10:11 default.rb

Ce fichier prend la forme suivante :

root@workstation:~/chef-repo# cat cookbooks/apache/recipes/default.rb 
#
# Cookbook:: apache
# Recipe:: default
#
# Copyright:: 2023, The Authors, All Rights Reserved.

Étudions maintenant une Recette destinée à installer, activer et démarrer le service httpd sur un système CentOS :

root@workstation:~/chef-repo# cat cookbooks/apache/recipes/default.rb 
#
# Cookbook:: apache
# Recipe:: default
#
# Copyright:: 2023, The Authors, All Rights Reserved.
package "httpd" do
  action :install
end

service "httpd" do
  action [:start, :enable]
end

Dans ce fichier deux types de Ressources sont définies :

Dans le cas de la Ressources package, le nom de la Ressource est le nom du paquet à installer tandis que dans le cas de la Ressources service, le nom de la Ressource est le nom du service.

Important - Notez que, comme les noms son variables, ceux-ci doivent être entourés des caractères .

Chaque Ressource contient une ou plusieurs actions. Chaque action est précédée par un caractère :. Dans le cas de plusieurs actions, celles-ci doivent être entourées des caractères [] et séparées par des virgules.

Après avoir téléversé le Workbook apache vers le Chef Infra Server pour l'inclure dans la Run-List du Nœud concerné, la commande chef-run peut être exécutée sur les Nœud.

Le Processus chef-run

Quand la commande chef-run est exécutée sur le Nœud, OHAI est exécutée et les Attributs Automatiques sont collectés. L'information collectée est retournée au format JSON.

Ensuite chef-run s'authentifie auprès du Chef Infra Server en utilisant la cléf /etc/chef/client.pem. Si ce fichier n'est pas présent, chef-run recherche le fichier /etc/chef/validation.pem.

Une fois la connexion authentifiée, chef-client demande au Chef Infra Server les Cookbooks à appliquer au Nœud.

Le Chef Infra Server consulte les objets concernant le Nœud. Un de ces objets contient la Run-List applicable au Nœud et contient des objets Recettes et Rôles. Le Chef Infra Server envoie ensuite la Run-List et ces objets au Nœud sous forme d'objets JSON.

A la réception des objets, le Nœud identifie les Recettes et les Rôles à appliquer. Une fois l'identification terminée, le Nœud télécharge du Chef Infra Server tous les Cookbooks contenants des références à ces mêmes Recettes et Rôles, sauf dans le cas où des Cookbooks identiques existent déjà sur le Nœud.

Si dans les Recettes téléchargées, il existe des dépendances, le Nœud télécharge les Recettes dépendantes. Les Recettes sont stockées dans le répertoire /var/chef/cache du Nœud.

La commande chef-run charge ensuite toutes les bibliothèques requises par Ruby et les autres langages invoqués.

Une fois la commande chef-run terminée sans erreurs, un message est envoyée au Message Queue. Dans le cas d'erreurs, celles-ci sont envoyées à l'administrateur.

Types de Ressources Chef

La déclaration d'une Ressource dans Chef prend la forme suivante :

type "name" do
  attribute "value"
  attribute "value"
  action :type_action
  action :type_action
end

Important - Notez qu'un Attribut est aussi connu sous le nom Propriété.

Les Ressources les plus courantes sous Chef sont :

La Ressource Package

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.

La Ressource Service

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

Dans le cas de l'utilisation du dernier Attribut, l'exemple suivant est un exemple :

service "httpd" do
  supports :status => true, :restart => true, :reload=> true
  action [ :enable, :start ]
end

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.

La Ressource Directory

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.

La Ressource File

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.

La Ressource Bash

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.

La Ressource Execute

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.

La Ressource Cron

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.

La Ressource Cookbook_File

Cette Ressource est utilisée pour transférer des fichiers se trouvant dans le sous-répertoire files du Cookbook du Chef Workstation vers les Nœuds.

Les actions les plus courantes disponibles pour cette Ressource sont :

Les attributs disponibles pour cette Ressource sont :

A faire - Pour plus d'informations concernant cette Ressource, consultez cette page.


Copyright © 2023 Hugh Norris.