Il peut s’avérer utile pour certains services de reposer sur une image « up to date ». Pour cela, nous allons mettre en place le service Shepherd qui va automatiser ce processus de mise à jour.
Pour son fonctionnement, Shepherd utilise un certain nombre de variables d’environnement:
– SLEEP_TIME: par défaut, Shepherd recherche les mises à jour d’image toutes les 5 minutes. C’est un rythme un peu élevé à mon gout et je vais adopter une mise à jour toutes les heures en définissant la variable à « 60m »
– BLACKLIST_SERVICES: Shepherd ne fera pas la mise à jour des services définis dans cette variable d’environnement. Par exemple, la mise à jour de Plex en plein visionnage d’un film peut-être énervante. Pour l’instant, je vais black-lister le service « shepherd »
– IMAGE_AUTOCLEAN_LIMIT: Shepherd procèdera au nettoyage des anciennes images qui peuvent représenter une taille non négligeable. Je vais fixer la limite à « 5 »
– APPRISE_SIDECAR_URL: active un système de notifications lors de la mise à jour de services. Ce système de notification utilise le microservice « apprise ».
Nous allons maintenant ouvrir un terminal sur le manager de notre Docker Swarm et créer le service:
Swarmpit (à ne pas confondre avec Brad Pitt …) est une interface Web légère et relativement intuitive permettant de gérer un cluster Docker Swarm.
L’installation de Swarmpit est relativement simple: on va se connecter sur le manager de notre cluster Docker Swarm et nous allons exécuter la commande ci-dessous:
Nous pouvons maintenant nous connecter sur le tableau de bord Swarmpit via l’URL suivante:
http://managercentos8:888
Tableau de bord Swarmpit
Déploiement d’un service
Nous allons déployer un service tout simple qui va nous permettre de vérifier que notre Swarm fonctionne correctement.
Dans le menu « Services », nous allons donc cliquer sur « New service »:
Création d’un premier service
Ensuite, nous allons rechercher l’image « topmonks/docker-napp » dans le « repository » public:
Installation service docker-napp
Sur la page suivante, nous allons définir quelle version de l’image utiliser. La dernière version semble la plus indiquer. Nous allons donc choisir « latest ».
Pour le nom du service, vous avez la possibilité de ne pas le renseigner et un nom aléatoire sera attribué au service. Pour ma part, je préfère le renseigner avec un nom intelligible.
Nous allons ensuite choisir le mode de déploiement: – « global »: un service va être mis en place sur chaque noeud du cluster – « replicated » : permet d’obtenir plusieurs instances d’un même service sur un même noeud
Configuration du service docker-napp
L’étape suivante va consister à définir les paramètres réseau de notre service: nous allons exporter le port 8080 de notre container au travers du port 9001:
Configuration réseau pour le service docker-napp
On peut ensuite configurer divers éléments très importants mais qui ne sont d’aucun intérêt pour ce container: – des variables d’environnement – des points de montage – des configurations – des secrets
Configuration des variables et des points de montage pour le service docker-napp
Nous allons ensuite définir les ressources processeur et mémoire nécessaires à l’exécution du service. Dans notre cas, nous allons tout laisser par défaut:
Définition des ressources pour le service docker-napp
La page suivante va nous permettre d’ajouter des « labels » à notre service et surtout de définir la stratégie de déploiement.
Dans mon cas, j’ai choisir de déployer le service uniquement sur des noeuds de type « worker ». Cela se traduit donc par la contrainte : « node.role == worker ».
Définition de l’emplacement du service docker-napp
Enfin, nous allons définir la méthode de log du service en laissant les paramètres par défaut:
Définition de la log du service docker-napp
Le service va alors se déployer sur les 2 noeuds.
Nous allons maintenant tester la distribution des requêtes au sein de notre cluster en appelant plusieurs fois le service (192.168.0.105 est l’adresse IP du manager :
curl http://192.168.0.105:9001
On voit bien ci-dessous que les appels du service sont traités indifféremment par les 2 noeuds du cluster. Well done!
J’ai décidé de migrer mes 30 containers Docker hébergés sur mon NAS Synology sur une solution plus sécurisée et plus performante basée sur un Docker Swarm lui même hébergé sur ESXi.
Un Docker Swarm peut-être vu comme un essaim de machines exécutant Docker. Au sein d’un Swarm, on distingue 2 types de noeuds: – le manager – le ou les workers
Le manager a pour rôle d’intégrer de nouveaux noeuds au sein du Swarm et de piloter l’installation de containers.
Les workers servent uniquement à exécuter les précédents containers.
Mon architecture va donc se composer de: – 1 manager CentOS 8 – 2 workers CentOS 8
Les 3 noeuds seront des machines virtuelles CentOS 8 hébergées sur ESXi. Nous allons donc voir maintenant comment installer les 3 noeuds.
Nous allons ensuite choisir de télécharger l’ISO de la version 8 pour l’architecture x86/x64:
Page de téléchargement des images ISO de CentOS 8
Il faut ensuite déterminer le miroir depuis lequel nous allons télécharger l’image ISO. Dans mon cas, j’ai choisi le premier miroir français:
Téléchargement de l’image ISO depuis le site miroir
Une fois arrivé sur le miroir français, il faudra choisir ISO DVD qui servira à l’installation sur ESXi:
Téléchargement de l’image ISO DVD
Téléchargement de l’image de CentOS 8 dans un DataStore de l’ESXi
Une fois l’image ISO CentOS 8 téléchargée, nous allons la mettre à disposition dans une des banques de données (DataStore) de notre ESXi. Pour cela, nous allons donc nous connecter à notre ESXi et ouvrir le navigateur de banque de données:
Exécution du navigateur de banque de données
Je vais donc télécharger l’ISO dans le répertoire ISO de mon DataStore SSD:
Choix du répertoire accueillant l’ISO CentOS 8 dans le DataStore
Le téléchargement va commencer et durera quelques minutes:
Téléchargement de l’ISO CentOS 8 dans le DataStore
Création des machines virtuelles CentOS 8 sur ESXi
Nous allons donc passer à la création des machines virtuelles CentOS 8 sur notre ESXi. Il suffit donc de se connecter à l’ESXi et de cliquer sur « Créer/Enregistrer une machine virtuelle »:
Création d’une machine virtuelle CentOS 8
Nous n’allons pas déployer de machine virtuelle à partir d’un fichier OVF mais la créer depuis le début:
Création d’une machine virtuelle « from scratch »
Il faut ensuite choisir un nom pour notre VM ainsi que: – La compatibilité – Le système d’exploitation utilisé par la VM – La version du système d’exploitation utilisé par la VM
Définition des paramètres de la VM
Ensuite, il faut définir le DataStore sur lequel sera stocké la VM:
Choix du DataStore servant de support à la VM
La prochaine étape consiste à définir le matériel virtuel. Ici, rien d’exceptionnel: je vais juste augmenter la quantité de RAM à 4Go et la taille du disque dur à 40Go:
Définition des paramètres matériels de la VM
Il ne reste plus qu’à valider le récapitulatif des paramètres:
Récapitulatif des paramètres de la VM
La prochaine étape va consister à faire démarrer la machine virtuelle sur l’image ISO CentOS 8 téléchargée précédemment. Pour cela, nous allons revenir modifier les paramètres de la VM:
Modification des paramètres de la VM
Nous allons donc router le lecteur de CD/DVD virtuel vers un fichier ISO:
Modification du lecteur de CD/DVD virtuel
Et nous allons chercher l’image ISO CentOS 8 téléchargée précédemment dans un des DataStore de l’ESXi:
Choix de l’image ISO de démarrage
Pour finir, il faudra ne pas oublier de cocher « connecter lors de la mise sous tension »:
Connecter le lecteur virtuel dès la mise sous tension de la VM
Démarrage de la machine virtuelle et paramétrage de CentOS
Nous pouvons maintenant démarrer le premier noeud:
Mise sous tension de la VM
La VM va alors présenter un menu de démarrage dans lequel nous allons choisir la première option; à savoir, l’installation de CentOS Linux 8:
Menu de démarrage de la VM CentOS 8
Au bout de quelques minutes, le programme d’installation va nous proposer de définir la langue utilisée:
Définition de la langue
L’étape suivante consiste à définir la partition d’installation de CentOS 8:
Choix de la partition d’installation
On va simplement choisir le disque local et laisser la configuration du stockage en automatique:
Sélection du disque de destination et de la méthode de stockage
La prochaine étape consiste à choisir quelle version de CentOS nous allons installer:
Sélection de la version de l’OS
Nous allons donc choisir la version la plus légère de l’OS: à savoir une installation serveur sans interface graphique:
Choix de la version serveur sans interface graphique
La prochaine étape consiste à définir le nom de la VM sur le réseau et à configurer les paramètres réseau:
Configuration des paramètres réseau
La première étape consiste à définir le nom sur le réseau. Le nom de cette première VM sera donc « node1centos8 ». Nous créerons ensuite 2 autres VM identiques nommées « node2centos8 » et « managercentos8 ».
Définition du nom de la VM
En ce qui concerne les paramètres réseau, je laisse tout par défaut donc la gestion se fait via mon DHCP puis j’active le réseau:
Activation du réseau
L’étape suivante consiste à définir la date et l’heure:
Définition de la date et de l’heure
Je vais utiliser le serveur de temps français « fr.pool.ntp.org »:
Définition du serveur NTP français
Nous allons spécifier que le système doit utiliser uniquement ce serveur NTP:
Activation du serveur NTP français
Voilà, nous allons pouvoir commencer l’installation en cliquant sur « Commencer installation »:
Lancement de l’installation
Les 2 dernières étapes à effectuer avant l’installation proprement dite sont la définition d’un mot de passe administrateur:
Définition du mot de passe administrateur
Nous allons donc créer un mot de passe pour l’utilisateur « root »:
Création du mot de passe pour l’utilisateur « root »
Last but not least, nous allons créer un utilisateur doté des privilèges administrateur:
Création d’un utilisateur administrateur
Donc, on crée un nouvel utilisateur en n’oubliant pas de cocher « Faire de cet utilisateur un administrateur »:
Définition du nouvel utilisateur
On peut maintenant cliquer sur « Terminer la configuration »:
Fin de la configuration
Au bout de quelques minutes, le système va nous demander de redémarrer:
Premier redémarrage
A l’issue du redémarrage, nous allons obtenir un bel écran de connexion où nous allons nous identifier avec l’utilisateur précédemment créé:
Première authentification
Pour plus de confort, nous allons activer l’interface Web Cockpit en entrant la commande suivante: systemctl enable --now cockpit.socket
Activation de la console Cockpit
Nous pouvons désormais nous connecter à l’interface Web en utilisant l’URL https://node1centos:9090
Authentification sur la console Web
Personnalisation de l’installation
Nous allons commencer par désactiver « SELinux » en éditant le fichier « /etc/selinux/config ».
Désactivation de SELinux
Il suffit de modifier la ligne débutant par SELINUX et en l’initialisant à « DISABLED »:
Modification du fichier de configuration
Nous allons vérifier que la désactivation est bien effective:
Vérification de la désactivation de SELinux
La deuxième étape consiste à désactiver le firewall en utilisant la commande sudo systemctl disable firewalld
Désactivation du firewall
Nous allons vérifier que le firewall a bien été désactivé:
Vérification de la désactivation du firewall
Le paramétrage suivant consiste à installer « yum-utils » via la ligne de commande suivant : sudo yum install yum-utils
Installation de yum-utils
Nous allons ensuite ajouter le repository Docker-ce via la commande sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Ajout du repository Docker-ce
Nous allons maintenant supprimer PODMAN qui pourrait interférer avec Docker via la commande sudo yum -y remove podman
Suppression de PODMAN
Idem avec BUILDAH via la commande sudo yum -y remove buildah
Suppression de BUILDAH
Nous allons maintenant procéder à l’installation de Docker-ce via la commande sudo yum install -y --nobest docker-ce
Installation de Docker-ce
Une fois l’installation terminée, nous allons activer Docker via la commande sudo systemctl enable --now docker
Activation de Docker
Voilà, notre premier noeud est fin prêt. Il va maintenant falloir créer : – un deuxième noeud que je baptiserai « node2centos8 » – un manager dénommé « managercentos8 »
Une fois les 3 VM créées, nous allons pouvoir passer à l’initialisation du manager via la ligne de commande ci-dessous:
Nous allons d’abord télécharger l’image ISO de VMware vCenter Server 7.0 Update 1 sur le site du fabricant :
Téléchargement de l’image ISO de VMware vCenter Server 7.0 Update 1
Si vous êtes sur Windows alors il vous suffit maintenant de monter l’image ISO et de vous rendre dans le répertoire « vcsa-ui-installer » puis « win32 » et enfin double-cliquer sur « installer.exe ».
Si vous êtes comme moi sur macOS Catalina, il faut d’abord entrer la commande suivante avant de monter l’image ISO :
sudo xattr -r -d com.apple.quarantine <Chemin vers l'image ISO>
Dans mon cas, l’image ISO étant sur le bureau, il faut donc faire ceci:
cd /Users/thierry/Desktop/ sudo xattr -r -d com.apple.quarantine VMware-VCSA-all-7.0.1-16860138.iso
Double-cliquez ensuite sur l’image ISO et celle-ci va être montée sur le bureau.
Naviguez maintenant vers le répertoire « vcsa-ui-installer » puis « mac » et double-cliquez sur « Installer ».
La fenêtre d’installation va s’ouvrir et nous allons donc sélectionner la première option : « install a new vCenter Server »:
Installation d’un nouveau vCenter Server
Nous allons donc exécuter la première étape de l’installation : le déploiement de vCenter Server.
Etape 1 : déploiement de vCenter Server
Nous allons ensuite accepter le « End User license agreement » :
Etape 1 : End User License Agreement
Puis spécifier l’hôte ESXi sur lequel nous souhaitons déployer vCenter Server :
Etape 1 : choix de la cible de déploiement de vCenter Server
Il nous faut donc renseigner: – L’IP ou le nom de l’hôte ESXi : ici « esxi.home » – Le port HTTPS de l’hôte ESXi : 443 – User name : ici « root » – mot de passe
Le programme d’installation va alors afficher un warning sur les certificats que nous allons ignorer :
Etape 1 : Certificate warning
Nous allons maintenant choisir un nom pour la machine virtuelle et un mot de passe :
Etape 1 : configuration des paramètres de la VM vCenter Server
Il faut ensuite choisir la taille du déploiement: dans mon cas, je vais me contenter du premier choix « Tiny » :
Etape 1 : sélection de la taille du déploiement
Et finalement, choisir le DataStore qui va héberger notre vCenter Server :
Etape 1 : sélection du DataStore
La dernière partie consiste à renseigner les paramètres réseau :
Etape 1 : configuration des paramètres réseau
Le programme d’installation nous présente ensuite un récapitulatif des paramètres d’installation :
Etape 1 : récapitulatif des paramètres d’installation
Et l’installation débute :
Etape 1 : lancement de l’installation
Au bout de quelques minutes, vous allez obtenir un message vous indiquant que la première étape est terminée :
Etape 1 : fin de l’installation
Nous allons maintenant entamer la 2ème étape de l’installation : le paramétrage de notre vCenter Server.
Etape 2 : début du paramétrage de vCenter Server
Le programme d’installation va ensuite nous demander de préciser les paramètres du serveur de temps. C’est un paramètre très important et à ne pas négliger. Pour ma part, la synchronisation se fera avec l’hôte ESXi. Attention à bien avoir activé la synchronisation de temps sur l’hôtel ESXi.
Etape 2 : configuration de vCenter Server
La page suivante va nous permettre de configurer le Single Sign-On (SSO) :
Etape 2 : configuration du Single Sign-On
Pour finir, VMware vous demande si vous souhaitez rejoindre le « Customer Experience Improvement Program » (CEIP) :
Etape 2 : configuration du CEIP
Un dernier récapitulatif de la configuration et c’est parti :
Hewlett Packard Enterprise (HPE) offre la possibilité de récupérer des images ISO d’ESXi à destination de leurs serveurs. Ces images sont enrichies de pilotes de cartes réseau et de contrôleurs de stockage qui ne figurent pas dans l’image ESXi « de base » fournie par VMware.
Nous allons donc intéresser à la mise en œuvre de la version la plus récente d’ESXi sur le HP ProLiant MicroServer Gen8.
La première étape est donc de déterminer quelle version d’ESXi est éligible à l’installation sur le HP ProLiant MicroServer Gen8. D’après la matrice de compatibilité officielle HPE (https://techlibrary.hpe.com/us/en/enterprise/servers/supportmatrix/vmware.aspx#ml), la dernière version d’ESXi éligible à l’installation sur cette machine est ESXi 6.5 :
Matrice de compatibilité HPE pour ESXi et ML/MicroServer
Le MicroServer Gen10 Plus est compatible avec ESXi 7.0 mais il est un peu hors budget pour l’instant (en ce qui me concerne …). Cependant, nous allons voir que l’installation d’ESXi 7.0 sur le MicroServer Gen8 est possible et relativement simple.
La première étape est donc d’aller récupérer le programme d’installation sur le site Web de HPE :
Récupération de l’image ISO ESXi 7.0 sur le site HPE
En route pour l’installation …
Installation d’ESXi sur une carte microSD
Le MicroServer Gen8 présente la particularité intéressante d’offrir un lecteur microSD interne qui peut servir à démarrer notre ESXi. Évidemment, la fiabilité d’une carte microSD n’est pas fantastique (J’en ai mis 2 à l’équerre en peu de temps …) mais cela suffira pour l’instant.
Si vous êtes fortunés alors vous pouvez vous laisser tenter par les cartes microSD commercialisées par HP (HPE 32GB microSD Flash Memory Card (700139-B21)) mais le tarif (plus de 100€) pourrait rapidement vous refroidir.
J’ai donc opté pour une magnifique carte microSD de 4Go qui a déjà eu plusieurs vies à l’intérieur d’une liseuse Kobo. Cela fera parfaitement l’affaire dans un premier temps. Nous réfléchirons ensuite à une alternative plus sûre.
Voici ze bébète :
And ze bébète in ze bobox :
Installation de la carte microSD dans le MicroServer Gen8
Le MicroServer Gen8 offre une interface d’administration intégrée baptisée iLO extrêmement pratique (On retrouve la même chose chez DELL sous le nom d’iDRAC). iLO permet de réaliser des taches d’administration et/ou d’installation depuis un navigateur Web; ce qui se révèle extraordinairement pratique.
Attention à un détail d’importance : le navigateur Web utilisé pour iLO. Si comme moi, vous êtes sous MacOS alors évitez d’utiliser Safari car vous serez potentiellement confrontés à quelques problèmes. J’ai donc utilisé Chrome.
Nous allons maintenant nous connecter à l’Integrated Remote Console. Je vais choisir celle en HTML5 mais vous pouvez tout aussi bien utiliser celle en .NET ou en Java. cette console va nous permettre de surveiller les opérations comme si nous étions en face de l’écran du serveur.
Lancement de l’Integrated Remote Console depuis iLO
Nous allons ensuite monter l’ISO d’installation en cliquant sur la rondelle en haut de l’Integrated Remote Console :
Montage de l’image ISO dans iLO
Une fois l’image ISO montée, on peut démarrer le serveur en appuyant sur « Momentary Press » :
Démarrage du serveur via iLO
Quelques minutes après, l’image ISO va se lancer :
Démarrage de l’installation d’ESXi
Et l’installation d’ESXi débute :
Quelques minutes encore après, l’hyperviseur va se lancer :
Il suffit maintenant d’appuyer sur la touche « Entrée ». Le programme d’installation va maintenant nous demander où installer ESXi : il faut donc choisir la carte microSD précédemment installée et valider votre choix :
Choix du support d’installation
Et là, patatras, il s’avère que la carte microSD n’a pas la capacité requise pour installer ESXi 7.0 :
Notre carte microSD est malheureusement trop petite …
Nous allons donc recommencer avec une carte microSD de plus grande capacité (en l’occurrence 16Go car c’est la seule qu’il me reste en stock).
Balles neuves et relance de l’installation sans soucis jusqu’au choix du périphérique d’installation. Nous allons donc choisir notre carte microSD 16Go :
Choix du support d’installation. Ici, notre carte microSD (Ultra Fast Media)
Ensuite, nous allons devoir choisir une disposition de clavier. Dans notre cas, nous allons choisir un clavier français :
Choix de la disposition du clavier
Et enfin, le programme d’installation va nous demander de choisir un mot de passe pour l’utilisateur « root ».
Choix du mot de passe de l’utilisateur root
Le programme d’installation va nous prévenir que le CPU ne sera plus supporté dans les prochaines versions d’ESXi mais on peut ignorer ce warning :
Warning pour CPU non supporté dans les futures versions
C’est parti pour l’installation :
Finalisation de l’installation
Au bout de quelques minutes, l’installation est enfin terminée.
Et voilà!
Encore un redémarrage et nous voilà sur ESXi 7.0 :
Nous allons maintenant accéder à l’interface d’administration d’ESXi :
Notre ESXi est désormais fonctionnel: il ne reste plus qu’à créer des banques de données et des machines virtuelles.