Introduction
Consul est un outil développé par
HashiCorp pour gérer des services réseaux
dynamiques. On pourrait résumer l'outil à un serveur DNS dynamique.
Tests
Objectifs
Comprendre comment fonctionne Consul pour savoir dans quel mesure je peux
l'utiliser pour déployer des servies accessibles depuis plusieurs sites.
Matériel
Pur étudier Consul, j'utilise ce que j'ai sous a main.
- 1 PI3 avec Raspbian (raspbian)
- 1 PC qui me sert de NAS (CentOS7)
- 1 PC qui me sert de serveur de Virtualisation (CentOS 8)
- 1 Portable (Archlinux)
Installations
J'ai pour habitude de préférer les installations de logiciels présents dans les
distributions ou procéder à l'installation depuis les sources. Ici, les
différents OS que j'utilise n'ont pas la même version de consul et je ne
souhaite pas mettre en place un chaîne de compilation Goland. Aussi j'ai choisi
la solution container.
Sur les CentOS, il faut utiliser podman à la place de docker.
# Podman
podman pull docker.io/library/consul
# docker
docker pull consul
# all
useradd -s /sbin/nologin -r -u 100 -g 100 -M -c 'Consul server' -d /var/lib/consul consul
mkdir -p /var/lib/consul/{config,data}
echo '{"skip_leave_on_interrupt": true, "enable_local_script_checks": true}' > /var/lib/consul/config/local.json
chmod -R 700 /var/lib/consul
chown -R consul:consul /var/lib/consul
# CentOS avec selinux
chcon -R system_u:object_r:container_file_t:s0 /var/lib/consul/{config,data}
# COnfiguration fw
Exécution
Étant en phase de découverte, j'utilise l'option -dev de consul. Cette option
active plusieurs fonctionnalités peu sécurisées, comme par exemple
l'utilisation d'un CA autonome. Il ne faut pas utiliser cette option et
production.
Par ce qu'il faut commencer par une machine, j'en choisi une qui sera la
première :
podman run --rm -d --net=host --name=dev-consul \
-v /var/lib/consul/data:/consul/data \
-v /var/lib/consul/config:/consul/config \
docker.io/library/consul agent -server -bind= -dev --datacenter=dc-cagou
# ou
docker run --rm -d --net=host --name=dev-consul \
-v /var/lib/consul/data:/consul/data \
-v /var/lib/consul/config:/consul/config \
consul agent -server -bind= -dev --datacenter=dc-cagou
Sur les autres machines, il faut simplement lancer la même commande en ajoutant
l'option
-join @IP_PREMIERE_MACHINE
Quand on a des dns locaux, il est aussi possible d'ajouter plusieurs fois
l'option -recursor @ip_DNS.
tips: récupérer ceux de la machne courante.