8 votes

Comment renommer de manière transparente un serviteur ?

J'envisage de déménager à salt (actuellement en utilisant ansible ) pour gérer un ensemble de dispositifs IoT autonomes (Raspberry Pi en termes pratiques).

Les appareils seraient installés avec une image générique, à laquelle j'ajouterais l'installation de salt (côté client) ainsi qu'un fichier de configuration pointant vers salt-master qui va servir des fichiers d'état qui seront consommés par les minions.

Les fichiers d'état comprennent une requête HTTP pour un nom, qui est ensuite appliqué à l'appareil (en tant que nom d'hôte). Le problème évident est qu'à ce stade, le serviteur s'est déjà enregistré auprès de salt-master sous le nom (générique) précédent.

Comment gérer une telle situation ? Plus précisément : comment propager le nouveau nom d'hôte à salt-master ? (changer le nom d'hôte et redémarrer n'a pas aidé, je suppose que le nom d'hôte est lié, sur le serveur, à l'ID du minion).

La question plus générale est de savoir si salt est le bon produit pour une telle situation (où la modification de l'état du minion change son nom, entre autres)

13voto

Gijs Brandsma Points 658

Votre identifiant Minion est basé sur le nom d'hôte lors de l'installation. Si vous changez de nom d'hôte après avoir installé salt-minion, l'identifiant Minion ne changera pas.

L'identifiant du minion est spécifié dans /etc/salt/minion_id . Lorsque vous modifiez l'ID du minion :

  • Le minion s'identifie auprès du maître avec le nouvel identifiant et cesse d'écouter l'ancien identifiant.
  • Le maître détectera le nouveau Minion Id comme un nouveau Minion et affichera une nouvelle clé dans Unaccepted Keys .
  • Après avoir accepté la clé sur le Maître, vous ne pourrez utiliser le Minion qu'avec la nouvelle clé. L'ancienne clé est toujours acceptée par le Maître mais ne fonctionne plus.

Je peux vous proposer deux solutions pour votre situation :

  1. Utilisez le sel pour approvisionner vos serviteurs. Le maître se connectera à votre Raspberry PI en utilisant SSH. Il configurera le nom d'hôte correct, installera et configurera salt-minion. Une fois ces opérations terminées, votre minion se connectera au maître avec l'identifiant correct. Mais cela nécessite que le maître sache quand et où un minion est disponible...
  2. Vous avez mentionné l'état dans lequel le nom d'hôte est défini. Modifiez l'ID du minion et redémarrez le service minion dans le même état. Cela modifiera l'ID du minion, mais vous devrez ensuite accepter la nouvelle clé. Notez que le minion ne signalera jamais un état comme étant terminé avec succès lorsque vous redémarrez le service salt-minion dans cet état.

2voto

deput_d Points 1

Voici un petit script pour changer le hostname/minion_id. Il devrait également fonctionner pour les travaux par lots. Appelez simplement le script comme suit : sudo ./change-minion-id oldminionid newminionid

change-minion-id :

#! /bin/bash

newserver="$(echo $2)"
salt "$1" cmd.run "echo $newserver > /etc/hostname && hostname $newserver && hostname > /etc/salt/minion_id" && salt "$1" service.restart "salt-minion" && salt-key -d $1 -y && salt-key -a $newserver -y

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X