Table of Contents
knife: Bootstrap avec des Modèles personnalisés
Table of Contents
Le modèle par défaut de chef-full utilise le programme d'installation de Chef. Pour la plupart des opérations d'amorçage, quelle que soit la plate-forme sur laquelle le nœud cible est exécuté, l'utilisation de la distribution chef-full est la meilleure approche pour installer le chef-client sur un nœud cible.
Cependant l'opération d'amorçage par défaut repose sur une connexion Internet pour obtenir la distribution sur le nœud cible. Si un nœud cible ne peut pas accéder à Internet, on peut utiliser un modèle personnalisé pour définir un emplacement spécifique pour la distribution afin que le nœud cible puisse y accéder pendant l'opération d'amorçage.
Dans les cas où vous avez une configuration avec pare-feu qui ne permet pas d’obtenir des paquets sur Internet, il y a deux façons de résoudre ce problème.
Utilisation de --bootstrap-install-command
Pour les distributions utilisant apt
$ knife bootstrap chefnode -N MyNewNode --bootstrap-install-command "curl http://your-internal-server/chef.deb -o /tmp/chef.deb && dpkg -i /tmp/chef.deb
Pour les distributions utilisant yum
$ knife bootstrap chefnode -N MyNewNode --bootstrap-install-command "yum install -y http://your-internal-server/chef.rpm"
Cette méthode est un bon choix pour les machines uniques ou pour un très petit nombre de machines, mais si on gère plus, l'option la plus appropriée consiste à créer un modèle de bootstrap.
Utilisation d'un modèle de bootstrap personnalisé
Les modèles d'amorçage sont simplement des fichiers erb utilisés par Chef pour déterminer comment amorcer un nœud. On peut remplacer celui par défaut avec l'option de knife –bootstrap-template
Les modèles d'ammorçage doivent être placés dans ~/chef-repo/.chef/bootstrap.
Le moyen le plus simple de créer un modèle consiste à utiliser le modèle par défaut de Chef et à le modifier pour qu'il contienne les commandes d'amorçage dont on a besoin,
Création du magazin d'atefacts
Prérequis
Un magasin d'artefacts doit contenir au minimum, les packages suivants:
- ChefDK
- Chef client
- Chef Supermarket
- Un script d'installation pour le client Chef
Créer le script d'installation
Le script d'installation est utilisé pour installer le client Chef lors de l'amorçage d'un nouveau noeud. Il extrait simplement le package client Chef de votre magasin d'artefacts, puis l'installe. Par exemple, sur les systèmes Linux basés sur Debian, cela ressemblerait à ceci:
#!/bin/bash cd /tmp/ wget http://packages.example.com/chef_13.2.20-1_amd64.deb dpkg -i chef_13.2.20-1_amd64.deb
Le script d'installation doit être accessible à partir du magasin d'artefacts.
Création du modèle d'ammorçage
Créer le dossier bootsrap/
Pour que les clients puissent utiliser le fichier de modèle d'amorçage personnalisé, celui-ci doit être situé dans un répertoire .chef/bootstrap du poste de travail (workstation) :
$ mkdir ~/.chef/bootstrap
Note de sécurité: Lorsqu'on veut permettre aux utilisateurs l'accès aux dossiers dans le répertoire .chef, on ne doit pas exposer le contenu de celui-ci car il contient des clés privées. Au lieu de créer le répertoire dans le dossier.chef on peut utiliser les liens symboliques:
$ ln -s /path/to/chef-repo/client.d ~/.chef/
Créer le modèle d'ammorçage
Dans le répertoire client.d et créer un fichier modèle vierge. Cet exemple utilisera template.erb comme nom de modèle:
touch template.erb
Copier la configuration chef-full
Toujours dans le répertoire bootstrap, lancer la commande suivante pour copier la configuration chef-full dans votre nouveau modèle:
find /opt/chefdk/embedded/lib/ruby -type f -name chef-full.erb -exec cat {} \; > template.erb
Cette commande recherche le fichier de modèle chef-full sous /opt/chefdk/embedded/lib/ruby, puis renvoie le contenu du fichier dans template.erb.
Modifier le fichier template.erb
Mettre à jour template.erb pour remplacer omnitruck.chef.io par l'URL d'un script install.sh sur le magasin d'artefacts local :
install_sh="<%= knife_config[:bootstrap_url] ? knife_config[:bootstrap_url] : "http://packages.example.com/install.sh" %>"
Localiser la ligne suivante au bas de votre fichier template.erb :
cat > /etc/chef/client.rb <<'EOP' <%= config_content %> EOP
En dessous, ajouter ce qui suit en remplaçant gems.example.com par l’URL de votre miroir gem:
cat >> /etc/chef/client.rb <<'EOP' rubygems_url "http://gems.example.com" EOP
Cela ajoute le paramètre rubygems_url approprié au fichier /etc/chef/client.rb créé lors de l’amorçage, ce qui garantit que les nœuds utiliseront le miroir de gem interne.
Utilisation du modèle d'ammorçage
Une fois créé et enregistré on peut utiliser utiliser l'option –bootstrap-template avec la sous-commande knife bootstrap pour spécifier le nom du fichier de modèle d'amorçage:
$ knife bootstrap 123.456.7.8 -x username -P password --sudo --bootstrap-template "template"
On peut également utiliser l’option knife[:bootstrap_template] dans config.rb pour spécifier le modèle que knife bootstrap utilisera par défaut lors de l’amorçage d’un nœud. Il devrait pointer sur le modèle personnalisé dans le répertoire bootstrap :
knife[:bootstrap_template] = "#{current_dir}/bootstrap/template.erb"