GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer et configurer Chef Workstation sous Linux

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

Linux
  1. Comment installer Elasticsearch et Kibana sur Linux

  2. Comment installer et tester Ansible sur Linux

  3. Comment installer et utiliser Flatpak sous Linux

  4. Comment installer et utiliser Traceroute sous Linux

  5. Comment installer et configurer cPanel sur un serveur Linux

Comment installer et utiliser la commande fd sous Linux

Comment installer et utiliser Nu Shell sous Linux

Comment installer Chef Workstation sur CentOS 8

Comment installer et configurer Let's Encrypt (Certbot) sous Linux

Comment installer et configurer la console Web Cockpit sur le système Linux

Comment installer et configurer les conteneurs Linux LXC sur CentOS / RHEL / Ubuntu