Chef - Configuration Solo

Chef-Solo est un outil open source qui s'exécute localement et permet de provisionner des machines invitées à l'aide des livres de cuisine Chef sans la complication de la configuration du client et du serveur Chef. Il permet d'exécuter des livres de recettes sur un serveur auto-créé.

Avant d'exécuter Chef-Solo sur la machine locale, il faut installer les deux fichiers suivants sur la machine locale.

  • Solo.rb - Ce fichier indique à Chef où trouver les livres de recettes, les rôles et les sacs de données.

  • Node.json - Ce fichier définit la liste des tirages et tout attribut spécifique au nœud, si nécessaire.

Configuration de solo.rb

Voici les étapes pour configurer solo.rb.

Step 1 - Créez un fichier solo.rb dans le repo chef.

current_dir       = File.expand_path(File.dirname(__FILE__)) 
file_cache_path   "#{current_dir}" 
cookbook_path     "#{current_dir}/cookbooks" 
role_path         "#{current_dir}/roles" 
data_bag_path     "#{current_dir}/data_bags"

Step 2 - Ajoutez le fichier à git repo.

$ git add solo.rb

Step 3 - Créez un fichier node.json dans le repo chef avec le contenu suivant.

{ 
   "run_list": [ "recipe[ntp]" ] 
}

Step 4 - Obtenez le livre de recettes ntp dans le repo du chef à l'aide d'un couteau.

[email protected]:~/chef-repo $ knife cookbook site install ntp 
Installing ntp to /Users/mma/work/chef-repo/cookbooks 
…TRUNCATED OUTPUT… 
Cookbook ntp version 1.3.0 successfully installed

Step 5 - Ajoutez le fichier node.json à Git.

$ git add node.json

Step 6 - Validez et poussez les fichiers vers git repo.

[email protected]:~/chef-repo $ git commit -m "initial setup for Chef Solo" 
[email protected]:~/chef-repo $ git push 
Counting objects: 4, done. 
Delta compression using up to 4 threads. 
...TRUNCATED OUTPUT... 
To [email protected]:mmarschall/chef-repo.git 
b930647..5bcfab6 master -> master

Exécution du livre de recettes sur le nœud

Step 1 - Connectez-vous au nœud où l'on souhaite provisionner le Chef-Solo.

Step 2 - Clonez le repo Chef sur la machine.

$ git clone $URL_PATH

Step 3 - cd au repo chef.

$ cd chef-repo

Enfin, exécutez le Chef-Solo pour faire converger le nœud -

$ sudo chef-solo -c solo.rb -j node.json 
[2017-20-08T22:54:13+01:00] INFO: *** Chef 11.0.0 *** 
[2017-20-08T22:54:13+01:00] INFO: Setting the run_list to 
["recipe[ntp]"] from JSON 
...TRUNCATED OUTPUT... 
[2012-12-08T22:54:16+01:00] INFO: Chef Run complete in 2.388374 
seconds 
[2012-12-08T22:54:16+01:00] INFO: Running report handlers

solo.rb configure Chef-Solo pour rechercher ses livres de recettes, ses rôles et ses sacs de données dans le répertoire actuel: le référentiel Chef.

Chef-Soloprend sa configuration de nœud à partir d'un fichier JSON. Dans notre exemple, nous l'avons appelé node.json. Si vous comptez gérer plusieurs serveurs, vous aurez besoin d'un fichier distinct pour chaque nœud. Ensuite, Chef-Solo exécute simplement une exécution de Chef en fonction des données de configuration trouvées dans solo.rb et node.json.