La structure de déploiement mise en oeuvre comporte l'architecture
Vagrant est un logiciel libre et open-source pour la création et la configuration des environnements de développement virtuel. Il peut être considéré comme un wrapper autour de logiciels de virtualisation comme KVM/libvirt.
Chef est un logiciel de gestion de configuration open-source permettant d’automatiser la création, le déploiement et la gestion des infrastructures informatiques. Il simplifie le déploiement de serveurs et applications sur n’importe quel emplacement physique, virtuel ou cloud (appelé nœud) quelque soit la taille de l'infrastructure..
Chef suit le concept d'architecture client-serveur, donc pour travailler avec Chef, il faut configurer une workstation Chef pour y développer la configuration localement, puis déployer sur le serveur Chef les configurations pour les faire fonctionner sur les nœuds Chef.
Chef Server joue le rôle de centre d’information. Il stocke tous les ‘cookbooks’ et politiques qui seront appliqués aux nœuds, ainsi que les ‘node objects’ décrivant chaque nœud géré par ce Chef Server.
Les ‘node objects’ comportent deux aspects importants : les attributs et les ‘run-lists’. Les attributs permettent de stocker des données spécifiques sur un nœud, comme par exemple un fichier système.
Les ‘run-lists’ sont des listes ordonnées de recettes de recettes et de rôles qui sont exécutés dans un ordre précis sur un nœud par chef-client afin de mettre le nœud en conformité avec la politique définie.
De cette manière, les détails de configuration décrite dans un livre de cuisine sont appliqués aux nœuds auxquels s'applique le scénario décrit dans le livre de recettes . Un inconvénient notable de Chef : les ‘cookbooks’ sont en push only du Chef Server vers les chef-client. Cette situation ne posera aucun soucis en utilisation normale, mais peut s’avérer critique si les nœuds ont besoin d’être souvent mis à jour.
Un poste de travail est un ordinateur exécutant le kit Chef Development Kit (Chef DK) utilisé pour créer des cookbooks, interagir avec le serveur Chef et interagir avec les nœuds.
Le poste de travail est l'endroit où les utilisateurs font la plupart de leur travail :
Pour certains projets, il est souhaitable de ne pas travailler avec un chef-serveur comme un référentiel de code chef. Pour ce faire, on peut utiliser chef-solo ou utiliser le chef en mode local.
Chef-client va permettre de récupérer les informations du Chef Server et de mettre à jour localement le nœud en fonction de ces informations sont transmises via les ‘cookbooks’ et recettes associées (indiquant les ressources nécessaires et leurs états désirés). Ce sont ces mêmes recettes qui permettent d’installer et de configurer des composants logiciels, de déployer des applications…
knife-solo ajoute des commandes qui visent à rendre le travail avec chef-solo aussi puissant que chef-server. Il ajoute actuellement 5 sous-commandes à knife :