Epic 6 : Gestion des serveurs¶
E6-1 : Implémentation d’un service de gestion des entités “Server”¶
Contexte¶
L’application Zéphir doit pouvoir manipuler des références vers un certain nombre de “serveurs” (voir entité serverdomain.server), hôtes physiques ou virtuels hébergeant des services applicatifs. Chacun de ces serveurs doit être attaché à un modèle de serveur (voir entité ServerModel).
Proposition¶
Implémenter un service dont le rôle sera la gestion et la persistance des entités “Server” dans l’application Zéphir.
Voir
- server.delete
- server.find
- server.update
Critères d’acceptation¶
- Un message transmis sur le bus de messages permet d’interroger le service concernant les serveurs enregistrés
- Un message transmis sur le bus de messages permet d’enregistrer un nouveau serveur
- Un identifiant sera automatiquement attribué à ce serveur
- Ce serveur devra être attaché à un modèle de serveur à sa création
- Un message transmis sur le bus de messages permet de supprimer un serveur existant
- Pour chacune des opérations modifiant l’état d’un serveur, un événement correspondant est envoyé sur le bus de messages
E6-2 : Liaison entre un “minion” Saltstack et un “Server” Zéphir¶
Contexte¶
L’application Zéphir devrait avoir un lien logique entre les instances de Server et les machines (“minions”) appairées avec le processus salt-master
.
Il existe plusieurs cinématiques possibles :
- le serveur génère la clé : https://docs.saltstack.com/en/latest/topics/tutorials/walkthrough.html#using-salt-key
- le Zéphir génère la clé : https://docs.saltstack.com/en/latest/topics/tutorials/preseed_key.html
Proposition¶
(proposition retenue : le Zéphir génère la clé)¶
- Sur le Zéphir, l’utilisateur créait un nouveau Server sur Zéphir (avec le bon ServerModel associé)
- Le service
saltmaster
réagit à la création de ce nouveau Server et créait un paire de clés cryptographiques à destination du minion. La paire de clé est dédiée/liée au Server. - L’utilisateur récupère cette paire de clés et la déploie manuellement sur la machine avec le minion
Une partie du traitement pourrait être automatisée via un script (comme c’est le cas dans le Zéphir actuel). Cette solution permet de garantir que la personne qui appaire le serveur à vraiment le droit de le faire mais nécessite un ensemble d’action non automatisé par Salt.
Voir également¶
- salt.minion.unregistered
- salt.minion.registered
E6-3 : Exécution de commandes sur les serveurs enregistrés¶
Contexte¶
L’application Zéphir devrait permettre d’exécuter une commande sur un serveur en utilisant la clé “Zéphir” de ce serveur et non la clé “Salt” du minion.
Proposition¶
Implémenter un mécanisme (service ?) permettant de transformer un message d’exécution de commande utilisant la clé d’un serveur en message d’exécution Salt.
Voir
- exec.salt
Critères d’acception¶
- Un nouveau message est défini, permettant de lancer l’exécution d’une commande sur un serveur donné.
- Ce message est automatiquement “traduit” en message d’exécution de commande “v1.salt.exec” si et seulement si le serveur est effectivement géré par Salt.