Menu


Stacks Image 969879
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_br0
Pour 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.
Stacks Image 969562
Template d'hôtes spécifiques
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
Stacks Image 969851
Voici la commande check_temperature_ssh
Stacks Image 970013

htpl_docker : Template de service

On ajoutera le template de service stpl_docker_node
Stacks Image 970020
Voici la commande check_docker_nodes
Stacks Image 970025

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 :
Stacks Image 970055
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.
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
Stacks Image 970038

Supervision de notre Cluster Hat

Exporter la configuration
Stacks Image 970041
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
Stacks Image 970044
Encore un peu de patience, bientôt d'autres informations pour superviser notre Cluster Hat.
comments powered by Disqus
comments powered by Disqus