GNU/Linux >> Tutoriels Linux >  >> Cent OS

Créez des livres de cuisine simples pour gérer votre infrastructure CentOS / RHEL

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 :

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.


Cent OS
  1. Comment créer un fichier Kickstart pour CentOS/Fedora/RedHat (RHEL)

  2. Surveillez et gérez vos services avec Monit sur CentOS 6 / RHEL 6

  3. Comment créer un pont réseau sur CentOS 7 / RHEL 7

  4. Installez PartKeepr (système de gestion d'inventaire) dans CentOS et RHEL

  5. Comment créer et activer la partition d'échange sur Centos / RHEL 8

Auditez votre infrastructure - Installez Rudder Agent sur CentOS / Ubuntu / Debian

Auditez votre infrastructure - Installez Rudder Server sur CentOS 7 / Ubuntu 16.04 / Debian

Comment créer votre premier programme Java sur CentOS 8

Comment créer un utilisateur Sudo dans RHEL, CentOS, Rocky et AlmaLinux

Configurez votre propre serveur VPN WireGuard sur CentOS/RHEL

3 façons de créer un pont réseau dans RHEL/CentOS 8