Table of Contents

CHEF: Mise en oeuvre d'une architecture de déploiement

La structure de déploiement mise en oeuvre comporte l'architecture

Présentation des composants

Hyperviseur

Vagrant

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

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.

Le serveur 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.

Station de travail (workstation)

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 :

Chef-solo

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

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

knife est un outil de ligne de commande qui fournit une interface entre un chef-repo local et le serveur Chef.

Knife aide les utilisateurs à gérer:

Liste des dépôts du serveur Chef

Dépôts gérés par APACHE

Entrée Contenu
root /var/www/html/repo/pub
Centos, augeas, kickstarts, lenses dépôts locaux
chef-repo dépôt contenant la procédure de bootstrap locale et les données décrivant chaque nœud gérés par le serveur Chef (livres de recettes, stratégies appliquées aux nœuds et métadonnées)

   ├── repo
   │   └── pub
   │       ├── 404.html
   │       ├── 50x.html
   │       ├── augeas
   │       ├── Centos
   │       │   ├── 6
   │       │   │   ├── i386
   │       │   │   ├── SRPMS
   │       │   │   └── x86_64
   │       │   └── 7
   │       │       ├── i386
   │       │       ├── SRPMS
   │       │       └── x86_64
   │       ├── chef-repo
   │       │   ├── bootstrap
   │       │   │   ├── install.sh
   │       │   │   └── template.erb
   │       │   ├── chefignore
   │       │   ├── cookbooks
   │       │   ├── data_bags
   │       │   ├── environments
   │       │   └── roles
   │       ├── kickstarts
   │       └── lenses

Dépôts gérés par RUBY

Pour faciliter l'installation des GEMS un dépôts RUBYGEMS doit être accessible depuis un serveur gem local serveur gem local

   ├── rubygems

Dépôts gérés par NGINX

Entrée Contenu
root /var/www/html/vagrant
boxes dépôt local de box vagrant
/<organization>/<distribution> catalogue du dépôt local contenant un fichier <distribution>.json et un Vagrantfile de test

les répertoires sandbox et prod où sont exécutées les VM ne sont pas accessibles via l'url

     ├── vagrant
     │   ├── boxes
     │   │   ├── dgfipbase_1.0.0.box
     │   │   └── dgfip-rhel7-0.4.0.box
     │   ├── dgfip
     │   │   ├── centos6
     │   │   |   ├── centos6.json   
     │   │   |   └── Vagrantfile
     │   │   └── centos7
     │   │       ├── centos7.json   
     │   │       └── Vagrantfile
     │   ├── prod
     │   └── sandbox
     │       └── Vagrantfile