Environnement de développement CoreOS avec Vagrant et VirtualBox
20 juin 2018
- Catégories
- Hack
- Infrastructure
- Tags
- Arch Linux
- CoreOS
- Linux
- VirtualBox
- etcd
- Vagrant [plus][moins]
Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.
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.