Dans cet article de blog, vous examinerez certaines pratiques qui peuvent vous aider à démarrer avec votre automatisation Chef et le principe de la politique en tant que code. Il est destiné à tout professionnel de l’informatique ou chef débutant.
Prologue : que dois-je savoir ?
Cet article est conçu pour être convivial pour les débutants. Vous n’avez besoin d’aucune expérience en codage pour suivre, juste un intérêt pour l’automatisation et une curiosité quant à la meilleure façon de l’implémenter avec Chef. Cela dit, définissons quelques termes avant de plonger :
- Livres de cuisine de chef – Les livres de cuisine sont la façon dont Chef Code est organisé. Un livre de recettes contient de nombreux fichiers et sous-répertoires, y compris les très importants recettes et profils, qui définissent les configurations et les contrôles de conformité que vous souhaitez appliquer aux systèmes que vous gérez.
- Chef serveur – Un serveur Chef Infra stocke des livres de recettes, des profils, des fichiers de stratégie et d’autres codes Chef, et les partage avec les nœuds cibles que vous souhaitez gérer. Il fournit des informations sur chaque système, y compris les livres de recettes et les profils qui lui sont attribués. Il maintient également un index de recherche d’informations sur votre environnement afin que vous puissiez facilement identifier et gérer des sous-ensembles discrets de systèmes selon vos besoins.
- Chef Automate – Chef Automate est la plate-forme d’entreprise de Chef qui permet aux développeurs, aux opérations et aux ingénieurs de sécurité de collaborer pour fournir des changements d’application et d’infrastructure et des statuts de conformité. Chef Automate fournit des informations sur plusieurs centres de données et fournisseurs de cloud et peut être installé avec Chef Infra Server et Habitat Builder pour vous offrir une expérience Chef moderne et complète. Cet article n’entrera pas dans les détails spécifiques à Automate, mais nous avons d’autres ressources pour vous aider à démarrer.
- Chef Client – Le client Chef est un agent qui s’exécute sur chaque système géré, y compris Linux, Windows ou macOS. Il communique avec le serveur Chef et extrait tous les livres de recettes, profils de conformité et configurations requis par son fichier de stratégie ou run_list, exécute ces recettes et analyses de conformité et rapporte ses résultats au serveur Chef.
- Chef InSpec – Chef InSpec fournit les profils d’audit et de conformité qui testent la logique de votre livre de recettes et garantissent que vos systèmes sont dans les états que vous désirez. Comme les livres de recettes Chef, les profils sont déclenchés et appliqués par le client Chef et renvoient les résultats de sortie via l’interface de ligne de commande et dans les tableaux de bord Chef Automate. Les profils appliqués avec succès indiquent si vos systèmes sont ou non conformes.
- Poste de travail du chef – Chef Workstation contient tout ce dont vous avez besoin pour commencer à écrire et à travailler avec les livres de cuisine Chef, y compris des utilitaires de ligne de commande pour communiquer avec le serveur Chef et des outils de test afin que vous puissiez valider les livres de cuisine localement avant de mettre à jour vos environnements. Il peut être installé librement sur les systèmes Linux, macOS et Windows, et inclut Ruby intégré et d’autres dépendances prêtes à l’emploi. Considérez-le comme une boîte à outils utilisée pour créer et construire toutes vos choses de chef. Il remplace le ChefDK désormais obsolète.
- Chef Repo – Dans ce contexte, un dépôt Chef est la structure de répertoires sur votre poste de travail ou ordinateur portable où vous stockez votre contenu Chef. Il est généralement situé à la racine de votre répertoire personnel, tel que
/home/jsmith/chef-repo
sous Linux,/Users/jsmith/chef-repo
sur macOS ouC:Usersjsmithchef-repo
sur Windows. Il peut être créé n’importe où sur votre système, mais le placer dans votre répertoire personnel est facile à mémoriser et à référencer. C’est aussi une bonne pratique d’initialiser le répertoire avec Git ou un autre outil de contrôle de version à la version, d’enregistrer et de partager à distance votre code. - Cuisine d’essai –Test Kitchen utilise une architecture de plug-in de pilote pour vous permettre de tester vos livres de recettes Chef et vos profils de conformité localement à l’aide de Docker (avec des conteneurs spéciaux conçus pour fonctionner comme des systèmes complets), VMware, Hyper-V, VirtualBox et d’autres hyperviseurs. Il vous permet également de tester sur des instances cloud de fournisseurs tels qu’Amazon EC2, Google Compute Engine et Microsoft Azure. L’utilisation de Test Kitchen vous permet de développer, tester et dépanner votre code rapidement.
- Supermarché du chef – Le Supermarché Chef est un référentiel accessible au public de près de 4 000 livres de cuisine créés par les utilisateurs et prêts à l’emploi. Certains sont écrits par des ingénieurs Chef et nos partenaires, et d’autres sont écrits par des membres de la communauté Chef. Dans les deux cas, les livres de cuisine sur le supermarché sont open source et peuvent être utilisés, inspectés ou modifiés pour répondre aux besoins spécifiques d’un individu ou d’une organisation.
Avant que nous commencions
N’hésitez pas à suivre vos propres systèmes. Tous les exemples fournis sont fonctionnels. Si vous avez déjà un serveur Chef et une station de travail Chef installés sur votre ordinateur portable, vous pouvez passer directement à Partie 3 : Le livre de cuisine du chef.
Partie 1 : Chef Infra Server
Il est possible d’utiliser Chef sans exécuter un serveur Chef Infra complet (en utilisant Chef Zero sur un poste de travail), mais pour profiter pleinement de l’expérience moderne, il est préférable d’exécuter votre propre serveur sur site ou dans le cloud. Disposer d’un serveur Chef Infra à part entière ne nécessite pas beaucoup de ressources (une seule machine virtuelle ou une instance cloud modeste fera l’affaire) et vous offre une expérience complète du stockage et de la distribution de votre code entre les nœuds cibles.
Aujourd’hui, l’installation de Chef Infra Server est plus simple que jamais, et il peut être installé côte à côte avec Chef Automate et Chef Habitat Builder, utilisés pour l’intégration continue des applications. Chaque produit Chef peut être installé avec un indicateur –product à l’aide du binaire chef-automate autonome. Cela vous permet d’installer et de configurer votre serveur Chef rapidement, en 15 minutes environ dans la plupart des cas.
Vous pouvez également déployer un serveur Chef dans le cloud à partir des places de marché Amazon ou Azure. Ces systèmes sont préconfigurés avec Chef Automate et Chef Infra Server. Il suffit de créer un administrateur utilisateur et un organisation pour commencer.
Ce dont vous aurez besoin :
- Une machine virtuelle avec au moins 2 CPU, 8 Go de RAM et un disque de 32 Go exécutant une version moderne de Linux, telle que Ubuntu 20.04 ou CentOS 8. (Remarque : c’est bien en deçà du minimum Configuration requise pour un environnement de production)
- Une adresse IP statique pour la VM
- Un utilisateur non root avec les privilèges sudo
- Un sous-réseau qui permet à votre serveur Chef de communiquer avec votre poste de travail et les nœuds cibles Linux, Windows ou macOS. Les nœuds cibles peuvent être d’autres machines virtuelles.
- Une entrée DNS facultative sur votre sous-réseau qui permet à votre serveur, vos nœuds et votre poste de travail de communiquer via FQDN. Sans DNS, vous devrez modifier le fichier hosts sur votre serveur Chef et les nœuds cibles afin qu’ils puissent se joindre par leur nom.
- OU un AWS ou Azure Marketplace déploiement
Avec une machine virtuelle Linux brute en cours d’exécution, connectez-vous via le shell et exécutez les commandes suivantes ou copiez simplement le contenu de ce script deploy-chef-server.sh. Mettez à jour les variables avant de l’exécuter :
$ chmod +x deploy-chef-server.sh $ ./deploy-chef-server.sh
Pour déployer votre serveur Chef sans le script, suivez ces étapes :
Définissez le nom de domaine complet avec hostnamectl set-hostname hostname
. Il est essentiel que la valeur fqdn dans le fichier corresponde à la hostname –f
valeur du système car le processus d’installation configure les certificats avec le nom de domaine complet.
$ hostnamectl set-hostname automate.chef.lab
Installez le chef-automate en téléchargeant le package autonome et en le rendant exécutable.
$ curl https://packages.chef.io/files/current/latest/chef- automate-cli/chef-automate_linux_amd64.zip | gunzip - > chef- automate && chmod +x chef-automate
Ajustez les paramètres de l’environnement :
$ sudo sysctl -w vm.max_map_count=262144 $ sudo sysctl -w vm.dirty_expire_centisecs=20000
Assurez-vous que ceux-ci sont écrits à /etc/sysctl.conf
persister à travers les redémarrages.
Exécuter chef-automate pour déployer Chef Infra Server :
$ sudo ./chef-automate deploy --product infra-server
Créer un utilisateur administrateur et une organisation
Pour utiliser votre serveur Chef, vous devrez créer un utilisateur et au moins un organisation. Ceux-ci fournissent un accès sécurisé entre votre serveur et votre poste de travail (entre autres) et établissent un emplacement pour votre contenu Chef. Remarquez le chef-server org-create
commande utilise le admin
nom d’utilisateur que vous créez en tant que --association-user
:
$ sudo chef-server-ctl user-create jsmith Jack Smith jsmith@gmail.com "password" --filename jsmith.pem $ sudo chef-server-ctl org-create lab "My Lab" --association_user jsmith --filename lab-validator.pem
Les commandes de cet exemple génèrent deux fichiers de certificat, jsmith.pem
et lab-validator.pem
. Dans la partie 2, vous copierez le jsmith.pem
sur votre poste de travail pour permettre une communication sécurisée entre le serveur Chef et votre ordinateur portable.
Partie 2 : Poste de travail du chef
Ce dont vous aurez besoin :
- Un poste de travail Linux, Windows ou macOS
- accès Internet
- Accès réseau au même sous-réseau que votre serveur Chef
Installer la station de travail Chef
Chef Workstation est un ensemble d’outils qui permettent à votre ordinateur portable d’interagir en toute sécurité avec votre serveur Chef. Il comprend chef, couteau, inspecter, cuisine, habitat, et cuisine. Il contient également Ruby intégré et d’autres dépendances afin que vous n’ayez rien d’autre à installer pour commencer immédiatement à utiliser les outils Chef Workstation.
Vous pouvez installer Chef Workstation en téléchargeant un programme d’installation spécifique au système d’exploitation ou en utilisant le script Chef install.sh.
Si vous utilisez le programme d’installation spécifique au système d’exploitation, configurez chef shell-init pour votre environnement et définissez un chemin qui ajoute le répertoire des binaires Chef intégrés. Cela garantit que les outils Workstation utilisent la version intégrée de Ruby et non une autre version sur votre poste de travail. Sur un système Linux, cela ressemblerait à ceci :
$ echo 'eval "$(chef shell-init bash)"' >> /home/$USER/.bash_profile $ echo 'export PATH="/opt/chef-workstation/embedded/bin:$PATH"' >> /home/$USER/.configuration_file
Confirmez l’installation en exécutant la commande suivante à partir d’un terminal :
$ chef -v Chef Workstation version: 21.10.640 Chef CLI version: 5.4.2 Chef Habitat version: 1.6.351 Test Kitchen version: 3.1.0 Cookstyle version: 7.25.6 Chef Infra Client version: 17.6.18 Chef InSpec version: 4.46.13
Créer un dépôt Chef
La création du référentiel Chef où tous vos livres de cuisine Chef et autres fichiers seront hébergés est simplifiée à l’aide de l’un des générateurs Chef :
$ cd ~ $ chef generate repo chef-repo
Le peu audacieux peut être n’importe quoi, mais chef-repo est descriptif et facile à retenir. L’exécution de ce générateur crée un référentiel Chef et plusieurs sous-répertoires, y compris ~/chef-repo/cookbooks
, où vivront vos livres de cuisine et vos recettes de chef.
Initialisez votre système
Afin de permettre à votre poste de travail de communiquer et d’interagir avec votre serveur Chef, vous devez créer un fichier d’informations d’identification. Il se trouve dans un répertoire nommé .chef
dans votre répertoire personnel, comme /home/jsmith/.chef
. Ce dossier et ce fichier d’identifiants peuvent être créés avec un autre générateur :
$ knife configure init-config
L’exécution de cette commande dans un terminal vous posera plusieurs questions, notamment l’URL de votre serveur Chef et le nom d’utilisateur que vous avez créé lors de la configuration de votre serveur. Cela produira un ~/.chef/credentials
fichier avec un contenu qui ressemble à ceci :
[default] client_name = 'jsmith' client_key = '~/.chef/jsmith.pem' chef_server_url="https://automate.chef.lab/organizations/lab"
Modifiez le fichier d’informations d’identification pour ajouter l’emplacement de votre livre de recettes par défaut, dans ce cas, le dossier des livres de recettes dans le ~/chef-repo
répertoire que vous avez créé à l’étape précédente. Vous pouvez ajouter plusieurs chemins, ['/path/to/one', '/path/to/two']
:
cookbook_path = ['~/chef-repo/cookbooks']
Copiez le utilisateur.pem Fichier de votre serveur Chef vers votre poste de travail
Les clé_client entrée ci-dessus .credentials
fichier pointe vers votre utilisateur.pem déposer. Copiez ceci…