Chef est une plate-forme puissante d'automatisation, simplifiant la gestion, le déploiement ou la configuration de l'infrastructure sur un réseau. Chef fonctionne en transformant l'infrastructure en code. Le développeur peut ensuite déployer ou gérer des ressources sur plusieurs serveurs ou nœuds, mais avant de déployer le code sur un autre environnement, il doit d'abord le créer et le tester sur un poste de travail. Dans l'ensemble, Chef est l'un des meilleurs outils pour administrer l'infrastructure à partir d'un poste de travail.
Pour la conformité, la visibilité des nœuds et le flux de travail, Chef Automate met à disposition une suite complète de fonctionnalités d'entreprise. Le logiciel s'intègre aux produits open source tels que Habitat, InSpec et Chef.
Dans ce tutoriel, nous allons vous montrer comment installer le serveur et le client Chef sur Ubuntu 20.04.
Prérequis
- Deux de nouveaux VPS Ubuntu 20.04 sur la plate-forme cloud Atlantic.Net.
Un seul client
Un seul serveur
- Un mot de passe root configuré sur votre serveur
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 20.04 comme système d'exploitation avec au moins 4 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur Ubuntu 20.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
apt-get update -y
Étape 2 - Configurer le nom d'hôte
Avant de commencer, vous devrez configurer un nom d'hôte complet et une résolution de nom d'hôte sur votre serveur Chef.
Tout d'abord, configurez le nom d'hôte avec la commande suivante :
hostnamectl set-hostname chef.example.com
Ensuite, ouvrez le fichier /etc/hosts et liez l'adresse IP de votre serveur avec le nom d'hôte :
nano /etc/hosts
Ajoutez la ligne suivante :
chef-server-ip chef.example.com
Enregistrez et fermez le fichier lorsque vous avez terminé.
Étape 3 :Installer le serveur Chef
Tout d'abord, installez les dépendances requises en exécutant la commande suivante sur le serveur Chef :
apt-get install curl wget gnupg2 -y
Ensuite, téléchargez le package Chef avec la commande suivante :
wget https://packages.chef.io/files/stable/chef-server/13.1.13/ubuntu/18.04/chef-server-core_13.1.13-1_amd64.deb
Une fois le package téléchargé, installez-le en exécutant la commande suivante :
dpkg -i chef-server-core_13.1.13-1_amd64.deb
Une fois le package installé, vous devrez reconfigurer le serveur Chef. Vous pouvez le reconfigurer avec la commande suivante :
chef-server-ctl reconfigure
Il vous sera demandé d'accepter la durée de la licence comme indiqué ci-dessous :
+---------------------------------------------+ Chef License Acceptance Before you can continue, 3 product licenses must be accepted. View the license at https://www.chef.io/end-user-license-agreement/ Licenses that need accepting: * Chef Infra Server * Chef Infra Client * Chef InSpec Do you accept the 3 product licenses (yes/no)? > yes
Tapez oui pour accepter la licence et appuyez sur Entrée pour continuer. Une fois l'installation terminée, vous devriez obtenir le résultat suivant :
Running handlers: Running handlers complete Chef Infra Client finished, 482/1032 resources updated in 04 minutes 34 seconds Chef Server Reconfigured!
Remarque :L'installation prendra plus de 5 minutes
Étape 4 – Créer un compte administrateur et une organisation
Tout d'abord, créez un répertoire pour stocker toutes les clés.
mkdir ~/.chef_key
Ensuite, exécutez la commande suivante pour créer un compte administrateur :
chef-server-ctl user-create atlanticuser Atlantic User [email protected] 'mypassword' --filename ~/.chef_key/atlantic.pem
La commande ci-dessus créera un compte administrateur avec le nom atlanticuser, le nom complet "Atlantic User", le mot de passe "mypassword" et générera le fichier clé à ~/.chef_key/atlantic.pem.
Ensuite, créez une organisation avec la commande suivante :
chef-server-ctl org-create atlantic "atlantic cloud" --association_user atlanticuser --filename ~/.chef_key/atlantic-org.pem
La commande ci-dessus créera une organisation avec le nom atlantic, le nom complet "atlantic cloud", l'utilisateur associé "atlanticuser" et générera un fichier clé à ~/.chef_key/atlantic-org.pem.
Vous pouvez maintenant vérifier les clés générées avec la commande suivante :
ls ~/.chef_key/
Vous devriez voir le résultat suivant :
atlantic.pem hitjethva.pem
Étape 5 - Installer la console de gestion Web Chef
Ensuite, vous devrez installer Chef manage sur votre serveur. Chef manage est un module complémentaire qui peut être utilisé pour gérer le serveur Chef à partir de l'interface Web.
Vous pouvez installer Chef manage avec la commande suivante :
chef-server-ctl install chef-manage
Ensuite, reconfigurez le serveur Chef et Chef manage avec la commande suivante :
chef-server-ctl reconfigure chef-manage-ctl reconfigure
Il vous sera demandé d'accepter le contrat de licence comme indiqué ci-dessous :
Press any key to continue. Type 'yes' to accept the software license agreement or anything else to cancel. yes
Tapez oui et appuyez sur Entrée pour terminer l'installation.
Étape 6 :Installer le client Chef
Ensuite, vous devrez vous connecter à l'ordinateur client Chef et installer le package client Chef.
Exécutez la commande suivante pour télécharger le package du poste de travail Chef :
wget https://packages.chef.io/files/stable/chef-workstation/20.6.62/debian/10/chef-workstation_20.6.62-1_amd64.deb
Une fois le package téléchargé, installez-le avec la commande suivante :
dpkg -i chef-workstation_20.6.62-1_amd64.deb
Après avoir installé le client Chef, vous devrez créer un référentiel Chef dans votre système. Le répertoire chef-repo stockera vos livres de cuisine Chef et d'autres fichiers associés.
Vous pouvez le créer avec la commande suivante :
chef generate repo chef-repo
Il vous sera demandé d'accepter la licence comme indiqué ci-dessous :
+---------------------------------------------+ Chef License Acceptance Before you can continue, 3 product licenses must be accepted. View the license at https://www.chef.io/end-user-license-agreement/ Licenses that need accepting: * Chef Workstation * Chef Infra Client * Chef InSpec Do you accept the 3 product licenses (yes/no)? > yes
Tapez oui et appuyez sur Entrée pour accepter la licence. Vous devriez obtenir le résultat suivant :
Persisting 3 product licenses... ✔ 3 product licenses persisted. +---------------------------------------------+ Generating Chef Infra repo chef-repo - Ensuring correct Chef Infra repo file content Your new Chef Infra repo is ready! Type `cd chef-repo` to enter it.
Vous pouvez répertorier tous les fichiers et répertoires générés dans le référentiel Chef avec la commande suivante :
ls chef-repo
Vous devriez obtenir le résultat suivant :
chefignore cookbooks data_bags LICENSE policyfiles README.md
Ensuite, vous devrez créer un répertoire .chef pour stocker tous les fichiers de configuration de Knife et les fichiers .pem utilisés pour l'authentification de la paire de clés RSA avec le serveur Chef.
Vous pouvez le créer avec la commande suivante :
mkdir ~/chef-repo/.chef
Ensuite, générez une paire de clés SSH avec la commande suivante :
ssh-keygen -b 4096
Ne fournissez aucun mot de passe, appuyez simplement sur Entrée pour générer une paire de clés SSH comme indiqué ci-dessous :
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa Your public key has been saved in /root/.ssh/id_rsa.pub The key fingerprint is: SHA256:OvOCW9vNnVfs8II8TKJnRxv9vwRu5R4JqRxWPVU1rTY [email protected] The key's randomart image is: +---[RSA 4096]----+ | .B| | . +| | . + | | . E .| | S o * + | | . + B B +| | .= . O * @ | | ...*.oo.O.= =| | ....ooo.oo ++| +----[SHA256]-----+
Ensuite, copiez la clé générée sur la machine serveur Chef avec la commande suivante :
ssh-copy-id [email protected]
Ensuite, vous devrez copier tous les fichiers .pem du serveur Chef vers la machine cliente. Vous pouvez les copier avec la commande suivante :
scp [email protected]:~/.chef_key/*.pem ~/chef-repo/.chef/
Vous devriez obtenir le résultat suivant :
atlantic.pem 100% 1674 2.2MB/s 00:00 hitjethva.pem 100% 1678 2.4MB/s 00:00
Étape 7 - Configurer le couteau et générer le livre de recettes
Ensuite, vous devrez configurer Knife et générer un livre de recettes sur la machine cliente.
Tout d'abord, accédez au référentiel avec la commande :
cd ~/chef-repo
Ensuite, générez votre premier livre de recettes avec la commande suivante :
chef generate cookbook my_cookbook
Une fois le livre de recettes généré, créez un nouveau fichier de configuration Knife :
nano ~/chef-repo/.chef/config.rb
Ajoutez les lignes suivantes :
current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name 'hitjethva' client_key "hitjethva.pem" validation_client_name 'atlantic-validator' validation_key "atlantic-validator.pem" chef_server_url 'https://chef.example.com/organizations/atlantic' cache_type 'BasicFile' cache_options( :path => "#{ENV['HOME']}/.chef/checksums" ) cookbook_path ["#{current_dir}/../cookbooks"]
Enregistrez et fermez le fichier.
Assurez-vous que tous les noms correspondent au nom de votre organisation et au nom d'utilisateur de l'administrateur.
Ensuite, modifiez le fichier /etc/hosts et ajoutez le nom complet de votre serveur Chef.
nano /etc/hosts
Ajoutez la ligne suivante :
chef-server-ip chef.example.com
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, récupérez le certificat SSL du serveur Chef avec la commande suivante :
cd ~/chef-repo knife ssl fetch
Vous devriez obtenir le résultat suivant :
WARNING: Certificates from chef.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. Adding certificate for chef_example_com in /root/chef-repo/.chef/trusted_certs/chef_example_com.crt
Vous pouvez également vérifier le SSL avec la commande suivante :
knife ssl check
Vous devriez obtenir le résultat suivant :
Connecting to host chef.example.com:443 Successfully verified certificates from `chef.example.com'
Étape 8 – Amorcer un nœud client
Ensuite, vous devrez installer le client Chef sur le nœud et valider le nœud. Cela permet au nœud de lire à partir du serveur Chef et d'extraire et d'appliquer toutes les mises à jour de configuration nécessaires détectées par le chef-client à partir du poste de travail.
Sur la machine cliente Chef, modifiez le répertoire en .chef avec la commande suivante :
cd ~/chef-repo/.chef
Ensuite, démarrez le client avec la commande suivante :
knife bootstrap chef.example.com -x root -P rootpassword --node-name clientnode
Une fois l'installation terminée, vous devriez obtenir le résultat suivant :
Patents: https://www.chef.io/patents [chef.example.com] resolving cookbooks for run list: [] [chef.example.com] Synchronizing Cookbooks: [chef.example.com] Installing Cookbook Gems: [chef.example.com] [chef.example.com] Compiling Cookbooks... [chef.example.com] [2020-10-02T07:56:21+00:00] WARN: Node clientnode has an empty run list. [chef.example.com] Converging 0 resources [chef.example.com] [chef.example.com] Running handlers: Running handlers complete Chef Infra Client finished, 0/0 resources updated in 02 seconds
Vous pouvez maintenant lister tous les nœuds avec la commande suivante :
knife client list
Vous devriez obtenir le résultat suivant :
atlantic-validator clientnode
Étape 9 – Accéder à la console Chef Manage
Maintenant, ouvrez votre navigateur Web et accédez à la console de gestion Chef à l'aide de l'URL http://chef.server-ip/login. Vous devriez voir la page de connexion Chef :
Fournissez votre nom d'utilisateur et votre mot de passe d'administrateur et cliquez sur Signer dans bouton. Vous devriez voir le tableau de bord Chef sur la page suivante :
Conclusion
Dans le guide ci-dessus, vous avez appris à installer le serveur et le client Chef sur le serveur Ubuntu 20.04. Vous avez également appris ses composants avec les paramètres d'installation et de configuration. Pour plus d'informations, vous pouvez consulter la documentation de Chef. Essayez Chef sur votre serveur privé virtuel d'Atlantic.Net !