Environnement de développement CoreOS avec Vagrant et VirtualBox

Environnement de développement CoreOS avec Vagrant et VirtualBox

By BUSSER Arthur

20 juin 2018

Suivre les instructions de CoreOS sur la façon de configurer un environnement de développement dans VirtualBox n’a pas bien fonctionné pour moi. Voici les étapes que j’ai suivies pour que Container Linux fonctionne avec Vagrant.

J’ai commencé par lire les instructions sur le site Web de CoreOS mais celles-ci se sont avérées trop compliquées et, parfois, inexactes.Je me suis ensuite tourné vers le fichier README du dépôt officiel qui contenait les informations dont j’avais besoin pour que tout fonctionne.Cependant, trouver des informations spécifiques nécessite de lire la plupart des paragraphes deux ou trois fois.

Cet article a pour but de fournir un guide court et minimaliste afin de mettre en place un environnement de développement CoreOS fonctionnel.

Clonez le projet GitHub

Pour commencer, clonez le dépôt coreos/coreos-vagrant depuis Github :

# en SSH
git clone git@github.com:coreos/coreos-vagrant.git
# ou HTTPS
git clone https://github.com/coreos/coreos-vagrant.git

Une fois le projet cloné, déplacez vous dans le dossier du projet :

cd coreos-vagrant

Ajustez la configurations Vagrant

Le Vagrantfile est écrit afin qu’il lise un fichier config.rb pour tous les paramètres utiles. Le dépôt contient un fichier config.rb.sample que vous pouvez utiliser pour créer votre fichier config.rb :

cp config.rb.sample config.rb

Ouvrez le fichier config.rb avec votre éditeur de texte favori et modifiez la variable $num_instances pour définir le nombre de nœuds dans votre cluster CoreOS. Si vous voulez 3 nœuds, indiquez $num_instances=3.

Plus bas dans le fichier, vous pouvez modifier d’autres variables pour personnaliser les ressources des VM, les ports redirigés, les dossiers partagés, et cetera, mais c’est complètement facultatif.

Obtenez un jeton de découverte etcd

Pour que les différents nœuds de votre cluster puissent être configurés pour communiquer correctement entre eux, vous avez besoin du jeton de découverte (discovery token) etcd. Vous pouvez en obtenir un à https://discovery.etcd.io/new?size=X où X est le nombre de nœuds dans votre cluster.

curl https://discovery.etcd.io/new\?size\=3

Voici à quoi le résultat devrait ressembler (avec un jeton différent à la fin) :

https://discovery.etcd.io/d0362849eaed24304db7f6c9f23b6faf

Note : Vous devrez recommencer après chaque vagrant destroy.

Générez votre configuration Ignition

Les systèmes CoreOS sont créés à l’aide de Ignition, vous devez donc générer votre fichier une configuration Ignition.

Pour ce faire, vous devez installer Container Linux Config Transpiler. La plupart des distributions ont un paquet ct et, si comme moi vous utilisez Arch Linux, vous pouvez installer le paquet AUR avec yaourt :

yaourt -S ct

Le dépôt coreos-vagrant fournit un fichier cl.conf que vous pouvez éditer puis transpiler en une configuration Ignition valide pour cet environnement Vagrant.

Ouvrez le fichier cl.conf dans l’éditeur de votre choix et recherchez la ligne commençant par discovery:. Vous devez remplacer l’URL sur cette ligne par celle contenant votre jeton de découverte etcd. La ligne devrait ressembler à ceci :

discovery: "https://discovery.etcd.io/d0362849eaed24304db7f6c9f23b6faf"

Enregistrez votre fichier cl.conf puis utilisez ct pour générer votre fichier de configuration Ignition config.ign.

ct --platform=vagrant-virtualbox < cl.conf > config.ign

Note : Vous devrez recommencer après chaque vagrant destroy.

(Optionnel) Utilisez la dernière version stable de CoreOS

Par défaut, le fichier Vagrantfile créera des machines virtuelles basées sur la dernière version alpha de CoreOS Container Linux. Si vous souhaitez utiliser la dernière version stable, remplacer tout mention de alpha par stable dans votre Vagrantfile.

sed -i 's/alpha/stable/' Vagrantfile

À l’origine, ce dépôt prenait en charge la variable $update_channel dans config.rb, mais celle-ci a été temporairement supprimée, ce qui crée une incompatibilité avec la documentation officielle. Les responsables du projet apportent des changements qui rendent l’utilisation de cette variable quelque peu risquée ; ils l’ajouteront à nouveau une fois que tout sera stable. Si la variable est présente lorsque vous lisez ceci, vous pouvez simplement la définir en stable au lieu d’utiliser la commande ci-dessus.

Montez votre cluster

Vous pouvez maintenant créer votre cluster.

vagrant up

Une fois le cluster créé, connectez-vous à votre premier noeud.

vagrant ssh core-01

Le service etcd-member doit être en marche.

systemctl status etcd-member

Définissez une clé dans etcd.

etcdctl set /message "Hello, World!"

Si la découverte etcd s’est déroulée correctement, vous devriez être capable de lire la valeur de la clé depuis tous vos nœuds.

etcdctl get /message

Commnencez à utiliser votre cluster

Votre cluster est prêt.

Vous disposez maintenant d’un cluster CoreOS Container Linux fonctionnel pour faire vos tests. Chaque noeud a été configuré et activé. Amusez-vous bien !

Notes

Après avoir préparé cet article, j’ai ouvert une Pull Request pour mettre à jour la configuration afin qu’elle corresponde à la documentation officielle. Elle est toujours en attente.

Canada - Morocco - France

International locations

10 rue de la Kasbah
2393 Rabbat
Canada

Nous sommes une équipe passionnées par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Sciencem le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.