Les livres de recettes sont l'un des composants importants du système de gestion de configuration Chef ; il nous permet de configurer et d'effectuer des tâches spécialisées (pousser les modifications) sur des nœuds chefs distants.
Dans ce guide, nous allons créer des livres de recettes, puis demander à Chef de les pousser, c'est-à-dire d'exécuter les étapes décrites dans le livre de recettes sur les nœuds.
Ce guide suppose que vous disposez d'un environnement Chef fonctionnel qui comprend un serveur, un poste de travail et au moins un nœud sur lequel envoyer les modifications de configuration.
LIRE : Comment configurer un Chef 12 sur CentOS 7 / RHEL 7
Livre de cuisine :
Chef Cookbooks est une unité qui contient les détails de configuration et de politique pour amener un nœud dans un état particulier. Les livres de cuisine sont créés sur un poste de travail, puis téléchargés sur le serveur Chef. Un livre de recettes est ensuite attribué aux nœuds "run-list" qui est une liste séquentielle d'actions qui doivent être exécutées sur un nœud pour amener le nœud dans l'état souhaité.
Créer des livres de cuisine de chef simples :
Dans cette partie, nous allons créer un livre de recettes simple pour installer et configurer un serveur Web Apache.
LIRE :Configurer LAMP sur CentOS 7 / RHEL 7
Connectez-vous à votre poste de travail Chef, accédez à votre ~/chef-repo/cookbooks répertoire.
cd ~/chef-repo/cookbooks/
Créez le livre de recettes appelé "httpd “. Remplacez "httpd ", si vous voulez le nommer différemment.
chef generate cookbook httpd
Sortie :
Generating cookbook httpd - Ensuring correct cookbook file content - Ensuring delivery configuration - Ensuring correct delivery build cookbook content Your cookbook is ready. Type `cd httpd` 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. Why not start by writing a test? Tests for the default recipe are stored at: test/recipes/default_test.rb If you'd prefer to dive right in, the default recipe can be found at: recipes/default.rb
Accédez au répertoire de votre livre de recettes nouvellement créé, c'est-à-dire httpd .
cd httpd
Lorsque vous accédez au répertoire du nouveau livre de recettes, vous pouvez voir ci-dessous la structure du répertoire.
Sortie :
-rw-r--r--. 1 root root 47 Nov 12 21:18 Berksfile -rw-r--r--. 1 root root 1133 Nov 12 21:18 chefignore -rw-r--r--. 1 root root 568 Nov 12 21:18 metadata.rb -rw-r--r--. 1 root root 53 Nov 12 21:18 README.md drwxr-xr-x. 2 root root 23 Nov 12 21:18 recipes drwxr-xr-x. 3 root root 38 Nov 12 21:18 spec drwxr-xr-x. 3 root root 20 Nov 12 21:18 test
Recette :
Une recette consiste en une série de ressources qui définissent l'état d'un service particulier ou d'une application, par exemple, une ressource peut dire "le service NTP doit être en cours d'exécution", une autre peut dire "le service telnet doit être arrêté"
La recette ne se limite pas seulement à gérer les services; il peut également être utilisé pour exécuter les commandes, la gestion des utilisateurs, bien plus encore.
LIRE :Différents types de ressources.
Allez dans le répertoire des recettes. Là, vous pouvez voir un fichier appelé "default.rb “. Nous allons utiliser ce fichier pour ajouter les ressources nécessaires au fonctionnement du serveur Apache.
cd recipes cat default.rb
Sortie :
Par défaut, le fichier contient des lignes d'en-tête.
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved.
Installer Apache :
Pour commencer, ajoutons une ressource pour installer le package apache.
package 'httpd' do action :install end
Où,
forfait – Définit la ressource de package
httpd – Le nom du package que vous souhaitez installer doit être un nom de package légitime.
action :installer – Ceci spécifie l'action pour la ressource "package ", dans notre cas, l'installation de httpd .
Lorsque cette recette s'exécute sur le nœud, le chef vérifie si Apache est installé, si c'est le cas, il ignore cette ressource et passe à la ressource suivante. Sinon, il installera Apache à l'aide du programme d'installation du système.
Gérer le service Apache :
Ensuite, faites en sorte que le service Apache démarre automatiquement au démarrage du système et que le service soit opérationnel. Le code ci-dessous fait ce dont nous avions besoin.
service 'httpd' do action [ :enable, :start ] end
Où,
service – Définit la ressource de service.
httpd – Le nom du service doit être un nom de service légitime.
action [ :activer, :démarrer ] – Spécifiez les actions que vous souhaitez effectuer. Dans notre cas, cette ressource commencera "httpd ” et activez-le au démarrage.
Fichier d'index :
Notre prochaine ressource est de placer le index.html fichier à la racine du document du serveur Apache. Tout ce dont vous avez besoin pour spécifier l'emplacement où vous voulez le fichier et d'où l'obtenir.
cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end
Où,
cookbook_file – Ressource pour transférer des fichiers depuis un sous-répertoire de httpd/files à un chemin mentionné situé sur un nœud chef.
source – Spécifiez le nom du fichier source. Les fichiers se trouvent normalement dans COOK_BOOKS/files .
mode – Définit les autorisations pour le fichier.
Création du fichier d'index :
Puisque nous avons défini un "cookbook_file ", nous devons créer un fichier source "index.html ” à l'intérieur des fichiers sous-répertoire de votre livre de recettes.
cd ~/chef-repo/cookbooks
Créez un sous-répertoire "fichiers " sous votre livre de cuisine.
mkdir httpd/files
Ajoutez un texte simple dans le index.html .
echo "Installed and Setup Using Chef" > httpd/files/index.html
Pare-feu :
Notre dernière ressource sera de configurer le pare-feu pour autoriser http et https trafic provenant de machines externes.
execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Où,
exécuter – Ressource pour exécuter une seule commande.
commande – Définit une commande réelle que vous souhaitez exécuter sur le nœud.
ignore_failure - Continuez à exécuter une recette même si une ressource échoue pour une raison quelconque, cela sera utile lorsque le système n'a pas activé le pare-feuD.
La version finale de default.rb ressemblera à ci-dessous.
vi ~chef-repo/cookbooks/httpd/recpies/default.rb
Sortie :
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved. package 'httpd' do action :install end service 'httpd' do action [ :enable, :start ] end cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
Téléchargez le livre de recettes :
Une fois votre livre de recettes terminé, vous pouvez le télécharger sur votre serveur Chef.
knife cookbook upload httpd
Sortie :
Uploading httpd [0.1.0] Uploaded 1 cookbook.
Vérifiez si vous pouvez répertorier le livre de cuisine que vous venez d'importer.
knife cookbook list
Sortie :
httpd 0.1.0
Pour supprimer le livre de recettes (facultatif ).
knife cookbook delete cookbook_name
Ajoutez le livre de recettes à votre nœud :
Vous pouvez ajouter un livre de recettes à la run_list d'un nœud particulier à l'aide de la commande suivante. Remplacez chefclient.itzgeek.local avec le nom de votre nœud client.
knife node run_list add chefclient.itzgeek.local httpd
Sortie :
chefclient.itzgeek.local: run_list: recipe[httpd]
Pour supprimer la recette particulière de run_list (facultatif ).
knife node run_list remove chefclient.itzgeek.local recipe[cookbook_name]
Récupération de la configuration :
Connectez-vous au nœud client sur lequel le logiciel client Chef est exécuté.
LIRE :Amorcer un nouveau nœud avec un couteau
Exécutez le chef-client commande sur le nœud client pour vérifier auprès du serveur Chef toute nouvelle run_list et exécutez ces run_list qui lui a été attribué.
chef-client
Sortie :
Starting Chef Client, version 12.16.42 resolving cookbooks for run list: ["httpd"] Synchronizing Cookbooks: - httpd (0.1.0) Installing Cookbook Gems: Compiling Cookbooks... Converging 5 resources Recipe: httpd::default * yum_package[httpd] action install - install version 2.4.6-40.el7.centos.4 of package httpd * service[httpd] action enable - enable service service[httpd] * service[httpd] action start - start service service[httpd] * cookbook_file[/var/www/html/index.html] action create (up to date) * execute[httpd_firewall] action run - execute /usr/bin/firewall-cmd --permanent --zone public --add-service http * execute[reload_firewall] action run - execute /usr/bin/firewall-cmd --reload Running handlers: Running handlers complete Chef Client finished, 5/6 resources updated in 24 seconds
Vous pouvez vérifier que cela fonctionne en visitant l'adresse IP ou le nom de domaine de votre nœud via un navigateur Web.
http://votre-adresse-ip/Sortie :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042710292315.png)
Extras :
Chef Cookbook pour créer un utilisateur :
Vous pouvez utiliser le livre de recettes suivant pour créer un nouvel utilisateur. Remplacez le vert valeurs en fonction de votre environnement.
group "raj" do gid 9999 end user 'raj' do comment 'Admin [at] ITzGeek' uid '9999' gid '9999' manage_home true home '/home/raj' shell '/bin/bash' password '$6$89lC6OcN$xGO/4ia1j8YXY5TytLFccCjeITSCkgCgQbFMloF4O/kUWFOWhQBH5/BavEkvMj.0fuGx1pMxoUkKF6s9Tpnoj/' end
C'est tout.