Voici un exemple d'industrialisation avec Ansible. Cet outil permet de réaliser un déploiement rapide et sans erreur de votre cluster. En utilisant le playbook que j'ai réalisé, vous installer un cluster Docker fonctionnel en moins de 40 minutes avec l'installation du monitoring dans Centreon. Ce temps honorable d'installation est malheureusement incompressible du fait du peu de puissance des PI Zero. Le playbook est compatible Debian Strech et Buster. Il est même possible de panacher les versions pour les PI Zero même si ce n'est pas forcément conseillé.
Préparation des images
On choisira les images en mode bridge. Il suffira de copier chaque image dans les cartes SDRam respectives. Choisissez un plan d'adressage pour votre cluster. Pour exemple, voici le fichier d'inventaire pour mon playbook.
all: vars: ip_master: 192.168.1.220 children: clusterhat: hosts: clusterhatctrl: ansible_host: 192.168.1.224 nodes: hosts: p1: ansible_host: 192.168.1.225 p2: ansible_host: 192.168.1.226 p3: ansible_host: 192.168.1.227 p4: ansible_host: 192.168.1.228
Pour chaque carte, créez un fichier ssh dans la partition boot. Pour l’adresse IP, modifiez le fichier /etc/dhcpcd.conf comme ceci.
Pour le PI 3
interface br0 static ip_address=192.168.1.224/24 #ClusterCTRL static routers=192.168.1.1 static domain_name_servers=192.168.1.1 8.8.8.8 fallback clusterctrl_fallback_br0Pour les PI Zero
interface usb0 static ip_address=192.168.1.[225 à 228]/24 #ClusterCTRL static routers=192.168.1.1 static domain_name_servers=192.168.1.1 8.8.8.8 fallback clusterctrl_fallback_usb0
Si vous utilisez Ubuntu, vous pouvez monter chaque SDRam et utilisez ces commandes :
touch /media/`echo $USER`/boot/ssh sudo vim /media/`echo $USER`/rootfs/etc/dhcpcd.conf
Démarrage du cluster
Placez les cartes dans le clusterhat, démarrez le système et vérifiez la connectivité réseau du master.
ping 192.168.0.224
Connectez-vous en ssh et démarrez les PI Zero. user pi et mdp par défaut clusterctrl
ssh pi@192.168.1.224
sudo clusterhat on
Au bout d'un certain temps, vous devriez pouvoir pinger vos PI Zero. Copiez votre clé publique sur tous les serveurs.
ssh-copy-id pi@192.168.1.[224 à 228]
Préparation Centreon
Les raspberry seront automatiquement ajouté à Centreon. Il faudra préparer les templates correspondants.
Le template htpl_cluster_pi pour tous les rapsberry, il sera basé sur le template linux et ajoutera un template pour la température du cpu. Le template htpl_docker qui ajoutera un template spécifique au docker et servira pour le master PI3.
htpl_cluster_pi : Template de service
On ajoutera le template de service SVC_temperature_ssh
Voici la commande check_temperature_ssh
htpl_docker : Template de service
On ajoutera le template de service stpl_docker_node
Voici la commande check_docker_nodes
Déploiement Ansible
Préparez votre machine Ansible en récupérant le playbook clusterhat
git clone https://github.com/kermith72/clusterhat.git
Voici un organigramme décrivant les rôles et la description des principales tâches :
Adaptez le fichier inventaire en fonction de votre architecture. Ne tenez pas compte de la variable ip_master qui servira ultérieurement.
all: vars: ip_master: 192.168.1.220 children: clusterhat: hosts: clusterhatctrl: ansible_host: 192.168.1.224 nodes: hosts: p1: ansible_host: 192.168.1.225 p2: ansible_host: 192.168.1.226 p3: ansible_host: 192.168.1.227 p4: ansible_host: 192.168.1.228
Adaptez le fichier vars/main.yml du roles monitoring.
--- # vars file for common snmp_community: 'public' srv_monitoring: '192.168.x.xxx' srv_master: '192.168.x.xxx' user_local: 'user' user_centreon: 'admin' passwd_centreon: 'mon_password' alias_centreon: 'clusterhat raspberry' hostgroup_centreon: 'LaboCluster' template_raspberry: 'htpl_cluster_pi' template_docker: 'htpl_docker' poller_centreon: 'poller1' ip_monitoring: - 192.168.x.xx1 - 192.168.x.xx2
snmp_community : nom de communauté SNMP
srv_community: serveur Centreon
srv_master: master raspberry PI 3
user_local: nom d'utilisateur sur la machine hôte Linux pour exécuter les scripts Centreon
user_centreon: nom utilisateur de l'IHM Centreon
passwd_centreon: mot de passe de l'IHM Centreon
hostgroup_centreon: Hostgroup à créer dans Centreon
template_raspberry: template des PI pour la température
template_docker: template pour le PI 3 master
poller_centreon: nom du poller
ip_monitoring: liste des pollers Centreon qui pourront accéder à l'API Docker.
srv_community: serveur Centreon
srv_master: master raspberry PI 3
user_local: nom d'utilisateur sur la machine hôte Linux pour exécuter les scripts Centreon
user_centreon: nom utilisateur de l'IHM Centreon
passwd_centreon: mot de passe de l'IHM Centreon
hostgroup_centreon: Hostgroup à créer dans Centreon
template_raspberry: template des PI pour la température
template_docker: template pour le PI 3 master
poller_centreon: nom du poller
ip_monitoring: liste des pollers Centreon qui pourront accéder à l'API Docker.
Lancez le déploiement
cd clusterhat ansible-playbook -i hosts.yml -u pi -b install-clusterhat.yml
Normalement au bout de 25 à 30 minutes pour Stretch, 40 minutes pour Buster, vous devriez avoir ce résulat
PLAY RECAP *************************************************************************************************************************** clusterhatctrl : ok=52 changed=46 unreachable=0 failed=0 p1 : ok=43 changed=38 unreachable=0 failed=0 p2 : ok=43 changed=38 unreachable=0 failed=0 p3 : ok=43 changed=38 unreachable=0 failed=0 p4 : ok=43 changed=38 unreachable=0 failed=0
Vous pouvez vérifier le bon fonctionnement de votre docker swarm avec Debian Stretch :
$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION pkbk2tp6vt5hyvy3nbion1516 * cbridge Ready Active Leader 19.03.3 tdnycu8oqiyidooy93na4ec5d p1 Ready Active Reachable 18.06.1-ce d0wtrejbqa37n1lt6ks65sieb p2 Ready Active Reachable 18.06.1-ce lqzlg5zsrtjicouo5i3evl90m p3 Ready Active Reachable 18.06.1-ce nxnlbn0kjh9bgibk1h8fbnrhw p4 Ready Active Reachable 18.06.1-ce
Et pour Debian Buster :
$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION v7m6r2id0wugcn7hi032qtlyc * cbridge Ready Active Leader 19.03.3 rfooko9mxfq4tea4kzwdb2j8v p1 Ready Active Reachable 19.03.3 h0vwqegdymfn6ekjkrusps3mj p2 Ready Active Reachable 19.03.3 m5macj9t0jv51zxitp2t56h9w p3 Ready Active Reachable 19.03.3 9pzuiwwkeicdh9gvzt02xe0k6 p4 Ready Active Reachable 19.03.3
Les hôtes sont créés dans Centreon
Supervision de notre Cluster Hat
Exporter la configuration
Il restera à configurer la connexion ssh pour envoyer la commande de vérification de température. Pour cela se connecter en centreon-engine sur le poller. Créez une clé publique et envoyer celle-ci sur chaque machine à superviser.
$ ssh-keygen ssh-copy-id pi@192.168.1.[224 à 228]
La supervision est complète
Encore un peu de patience, bientôt d'autres informations pour superviser notre Cluster Hat.