Chef est un logiciel d'automatisation d'infrastructure informatique, qui peut être utilisé pour gérer tous vos serveurs et équipements réseau dans votre organisation .
Vous avez besoin d'un poste de travail chef lorsque vous souhaitez interagir avec le serveur chef ou tout nœud physique (serveurs, équipements réseau, etc.) de votre infrastructure.
Sur un poste de travail chef, à l'aide de plusieurs commandes liées au chef (par exemple, couteau), vous pouvez créer des livres de cuisine ou créer des recettes qui seront exécutées sur les nœuds individuels. Vous pouvez également démarrer un nouveau nœud à partir du poste de travail chef.
Ce didacticiel explique comment installer et configurer le poste de travail Chef sur un serveur Linux.
Télécharger ChefDK
ChefDK signifie Kit de développement Chef. ChefDK est disponible pour presque toutes les plates-formes, y compris les distributions basées sur Debian, Ubuntu, les distributions basées sur RedHat comme CentOS, Mac OS X et Windows.
La version stable actuelle de ChefDK est 0.11.2. Pour les systèmes basés sur RHEL, elle est disponible pour les versions 6 et 7 (c'est-à-dire CentOS 6 et CentOS 7). La version RPM packagée n'est disponible que pour la version 64 bits.
Téléchargez-le à partir d'ici ou utilisez l'URL directe comme indiqué ci-dessous.
Pour CentOS 7, utilisez les éléments suivants :
cd ~ wget https://packages.chef.io/stable/el/7/chefdk-0.11.2-1.el7.x86_64.rpm
Pour CentOS 6, utilisez les éléments suivants :
cd ~ wget https://packages.chef.io/stable/el/6/chefdk-0.11.2-1.el6.x86_64.rpm
Installer ChefDK
Installez le ChefDK en utilisant le RPM que nous avons téléchargé ci-dessus.
# rpm -ivh chefdk-0.11.2-1.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:chefdk-0.11.2-1.el7 ################################# [100%] Thank you for installing Chef Development Kit!
Cela installera ChefDK sous /opt/chefdk comme indiqué ci-dessous.
# ls -l /opt/chefdk/ drwxr-xr-x. 2 root root 4096 Mar 3 13:50 bin drwxr-xr-x. 7 root root 62 Mar 3 13:50 embedded -rw-r--r--. 1 root root 13249 Feb 22 14:26 version-manifest.json -rw-r--r--. 1 root root 8233 Feb 22 14:26 version-manifest.txt
Vérifier l'installation de ChefDK
Exécutez la vérification du chef, qui vérifiera tous les différents composants fournis avec ChefDK pour s'assurer qu'ils fonctionnent tous correctement sans aucun problème, comme indiqué ci-dessous.
# chef verify Running verification for component 'berkshelf' Running verification for component 'test-kitchen' Running verification for component 'tk-policyfile-provisioner' Running verification for component 'chef-client' Running verification for component 'chef-dk' Running verification for component 'chef-provisioning' Running verification for component 'chefspec' Running verification for component 'generated-cookbooks-pass-chefspec' Running verification for component 'rubocop' Running verification for component 'fauxhai' Running verification for component 'knife-spork' Running verification for component 'kitchen-vagrant' Running verification for component 'package installation' Running verification for component 'openssl' Running verification for component 'inspec' ....... --------------------------------------------- Verification of component 'test-kitchen' succeeded. Verification of component 'chef-dk' succeeded. Verification of component 'chefspec' succeeded. Verification of component 'rubocop' succeeded. Verification of component 'knife-spork' succeeded. Verification of component 'openssl' succeeded. Verification of component 'berkshelf' succeeded. Verification of component 'chef-client' succeeded. Verification of component 'fauxhai' succeeded. Verification of component 'inspec' succeeded. Verification of component 'tk-policyfile-provisioner' succeeded. Verification of component 'kitchen-vagrant' succeeded. Verification of component 'chef-provisioning' succeeded. Verification of component 'package installation' succeeded. Verification of component 'generated-cookbooks-pass-chefspec' succeeded.
Voici un exemple de cas où la vérification du chef a échoué. Veuillez également noter que Ruby est requis par Chef, qui est intégré à ChefDK.
# chef verify .. /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/mixlib-shellout-2.2.6/lib/mixlib/shellout.rb:289:in `invalid!': Expected process to exit with [0], but received '1' (Mixlib::ShellOut::ShellCommandFailed) ---- Begin output of /usr/bin/ohai -v ---- STDOUT: STDERR: /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:319:in `to_specs': Could not find 'chef-config' (= 12.8.0) - did find: [chef-config-12.7.2] (Gem::LoadError)
Nous recevons ce message d'erreur :"Impossible de trouver 'chef-config' (=12.8.0) - a trouvé :[chef-config-12.7.2] (Gem::LoadError)"
Dans le message d'erreur ci-dessus, le chef-config fourni avec le ChefDK était 12.7.2, qui est une version plus ancienne, qui n'était pas compatible dans cette configuration. Donc, dans ce cas, j'ai installé manuellement la version 12.8.0 de chef-config.
Après cela, lorsque j'ai exécuté la vérification du chef, le message d'erreur ci-dessus n'a pas été affiché.
Vérifiez la version de ChefDK
Lorsque vous exécutez la commande chef –version, elle affiche le numéro de version de ChefDK et tous les composants qui l'accompagnent, comme indiqué ci-dessous.
# chef --version Chef Development Kit Version: 0.11.2 chef-client version: 12.7.2 berks version: 4.2.0 kitchen version: 1.5.0
Configurer les variables ENV de Chef
Vous devez également configurer les variables d'environnement liées à Chef. Par exemple :GEM_ROOT, GEM_HOME, GEM_PATH.
export GEM_ROOT="/opt/chefdk/embedded/lib/ruby/gems/2.1.0" export GEM_HOME="/root/.chefdk/gem/ruby/2.1.0" export GEM_PATH="/root/.chefdk/gem/ruby/2.1.0:/opt/chefdk/embedded/lib/ruby/gems/2.1.0"
De plus, si vous avez déjà installé ruby sur votre système, vous devez mettre à jour votre variable PATH en conséquence pour utiliser le ruby fourni avec le chefDK, comme indiqué ci-dessous.
export PATH="/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/opt/chefdk/bin:/root/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/embedded/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
La commande suivante vous montrera toutes les variables d'environnement Chef qui doivent être définies.
chef shell-init bash
Le moyen rapide de définir ces variables d'environnement consiste à ajouter la ligne ci-dessus à votre fichier .bash_profile comme indiqué ci-dessous.
echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile
Règles de pare-feu pour accéder à Chef Manage
Ensuite, vous devez télécharger le kit de démarrage Chef à partir de votre serveur Chef qui est déjà en cours d'exécution.
Pour accéder à votre interface graphique Chef Manage, sur le serveur Chef, ajoutez les règles de pare-feu suivantes pour ouvrir les ports appropriés sur le serveur Chef.
firewall-cmd --direct --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \ --dport 443 -j ACCEPT firewall-cmd --direct --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \ --dport 80 -j ACCEPT firewall-cmd --direct --add-rule ipv4 \ filter INPUT_direct 0 -i eth0 -p tcp \ --dport 9683 -j ACCEPT firewall-cmd --reload
Télécharger le kit de démarrage à partir de l'interface graphique de Chef Manage
Connectez-vous à Chef Manage GUI et cliquez sur l'onglet "Administration" en haut. Ensuite, sélectionnez l'organisation dans la liste. Dans cet exemple, le nom de l'organisation est "exemple". Une fois l'organisation sélectionnée, cliquez sur "Kit de démarrage" dans le menu de gauche, comme indiqué ci-dessous.
Lorsque vous cliquez sur "Télécharger", vous obtenez ce message d'avertissement :Êtes-vous certain ? :Vos clés d'utilisateur et d'organisation seront réinitialisées. Es-tu sûr de vouloir faire ça?.
Cliquez sur Continuer. Cela téléchargera le fichier chef-starter.zip sur votre machine locale.
Décompressez le kit de démarrage
Transférez le fichier chef-starter.zip sur le poste de travail Chef et décompressez-le sous le répertoire d'accueil de root comme indiqué ci-dessous.
# cd ~ # unzip chef-starter.zip Archive: chef-starter.zip creating: chef-repo/cookbooks/ creating: chef-repo/cookbooks/starter/ creating: chef-repo/cookbooks/starter/templates/ creating: chef-repo/cookbooks/starter/templates/default/ inflating: chef-repo/cookbooks/starter/templates/default/sample.erb creating: chef-repo/cookbooks/starter/files/ creating: chef-repo/cookbooks/starter/files/default/ inflating: chef-repo/cookbooks/starter/files/default/sample.txt creating: chef-repo/cookbooks/starter/recipes/ inflating: chef-repo/cookbooks/starter/recipes/default.rb creating: chef-repo/cookbooks/starter/attributes/ inflating: chef-repo/cookbooks/starter/attributes/default.rb inflating: chef-repo/cookbooks/starter/metadata.rb inflating: chef-repo/cookbooks/chefignore inflating: chef-repo/README.md inflating: chef-repo/.gitignore creating: chef-repo/.chef/ creating: chef-repo/roles/ inflating: chef-repo/.chef/knife.rb inflating: chef-repo/roles/starter.rb inflating: chef-repo/.chef/ramesh.pem inflating: chef-repo/.chef/example-validator.pem
Si vous configurez manuellement le dossier chef-repo, vous devez créer manuellement les sous-répertoires ci-dessus et copier le fichier knife.rb, le fichier organization-validator.pem (par exemple :example-validator.pem) et username.pem (par exemple :ramesh.pem) dans les répertoires indiqués ci-dessus.
Obtenez le certificat SSL du serveur Chef
À ce stade, si vous exécutez la liste des clients du couteau, vous obtiendrez ce message d'erreur comme indiqué ci-dessous :"ERREUR :Échec de la validation SSL lors de la connexion à la vérification du certificat de l'hôte"
# cd ~/chef-repo # knife client list ERROR: SSL Validation failure connecting to host: centos.example.com - SSL_connect returned=1 errno=0 state=error: certificate verify failed ERROR: Could not establish a secure connection to the server. Use `knife ssl check` to troubleshoot your SSL configuration. If your Chef Server uses a self-signed certificate, you can use `knife ssl fetch` to make knife trust the server's certificates. Original Exception: OpenSSL::SSL::SSLError: SSL Error connecting to https://centos.example.com/organizations/example/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed
La vérification du certificat a échoué, car nous n'avons pas encore téléchargé le certificat SSL à partir du serveur Chef.
Pour cela, exécutez la commande suivante "knife ssl fetch" comme indiqué ci-dessous.
# cd ~/chef-repo # knife ssl fetch WARNING: Certificates from centos.example.com will be fetched and placed in your trusted_cert directory (/root/chef-repo/.chef/trusted_certs). Knife has no means to verify these are the correct certificates. You should verify the authenticity of these certificates after downloading.
Cela téléchargera le certificat dans le répertoire truster_certs suivant.
# ls -l /root/chef-repo/.chef/trusted_certs -rw-r--r--. 1 root root 1379 Mar 20 20:17 centos_example_com.crt # cat /root/chef-repo/.chef/trusted_certs/centos_example_com.crt -----BEGIN CERTIFICATE----- MIIDzDCCArSgAwIBAgIBADANBgkqhkiG9w0BAQsFADBRMQswCQYDVQQGEwJVUzEQ MA4GA1UECgwHWW91Q29ycDETMBEGA1UECwwKT3BlcmF0aW9uczEbMBkGA1UEAwwS ZXJhdGlvbnMxGzAZBgNVBAMMEmNlbnRvcy5leGFtcGxlLmNvbTCCASIwDQYJKoZI .. .. WLyr2ORLMcck/OGsubabO/koMNTqhl2JJPECNiDJh06MeZ/2+BOwGZSpXDbw+vFE NJAsLfsTzihGWZ58einMFA== -----END CERTIFICATE-----
Vérification finale du poste de travail Chef
Si le poste de travail chef fonctionne correctement, lorsque vous exécutez la "liste des clients du couteau", il affichera tous les clients qui sont connectés à ce poste de travail. Puisque nous venons de l'installer, nous ne verrons que le validateur de votre organisation, comme indiqué ci-dessous.
# cd ~/chef-repo # knife client list example-validator
Si vous exécutez cette commande sur un poste de travail chef existant auquel plusieurs serveurs sont déjà connectés, vous verrez une liste de tous les serveurs gérés par le chef.
Dans l'exemple suivant, nous voyons 5 serveurs connectés à ce poste de travail de chef.
# knife client list example-validator node1 node2 node3 node4 node5