Etude de Consul

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.