Cywise et Performa¶
Il est possible de mettre en place l'application Performa pour un utilisateur de Cywise.
Cela permet de faire remonter les métriques des serveurs vers ce Performa.
Déploiement d'un Performa¶
Nous avons dupliqué le code de Performa dans notre repo Cywise et dans le sous-dossier performa. Cela nous a permis de modifier la configuration pour les groupes et pour Windows.
Pour déployer un nouveau Performa, les étapes sont :
- générer un sous-domaine composé de 3 groupes de 4 chiffres et lettres minuscules séparés par des tirets (Ex : z6br-ewgz-7v4r)
- générer une clé secrête composée, au minimum, de 24 caractères alphanumériques (Ex : A8z6QbfYNs8mZCXCHYjqBiAd)
- configurer le domaine dans Gandi
- modifier performa/towerify/config.yaml pour ajouter un environnement pour le sous-domaine
config: envs: z6br-ewgz-7v4r: domain: z6br-ewgz-7v4r.cywise.io - ajouter les secrets pour cet environnement
towerify secrets set --env z6br-ewgz-7v4r PERFORMA_BASE_APP_URL=https://z6br-ewgz-7v4r.cywise.io towerify secrets set --env z6br-ewgz-7v4r PERFORMA_EXTERNAL_USER_API=https://app.cywise.io/performa/user/login/z6br-ewgz-7v4r.cywise.io towerify secrets set --env z6br-ewgz-7v4r PERFORMA_SECRET_KEY=A8z6QbfYNs8mZCXCHYjqBiAd - déployer le performa
towerify deploy --env z6br-ewgz-7v4r --profile cywise
La repo GitHub de Performa se trouve ici : https://github.com/jhuckaby/performa.
Configuration du Performa dans Cywise¶
Une fois le Performa déployé, il faut l'affecter à un utilisateur en modifiant
les colonnes performa_domain et performa_secret de la table users pour cet
utilisateur.
UPDATE users
SET performa_domain = 'z6br-ewgz-7v4r.cywise.io',
performa_secret = 'A8z6QbfYNs8mZCXCHYjqBiAd'
WHERE id = <user_id>;
Détails sur le fonctionnement¶
API Cywise pour la connexion de l'utilisateur¶
La doc de Performa,
son README, n'explique pas le fonctionnement pour la connexion des utilisateurs
externes à Performa mais elle précise que Performa utilise le module
pixl-server-user.
Et la doc de ce module détaille la façon dont on peut configurer l'authentification des utilisateurs auprès d'une application externe.
L'application externe doit fournir une API que Performa va appeler, de serveur
à serveur, et en passant les cookies. Pour Cywise, nous avons fait un point
d'entrée /performa/user/login/{performa_domain}. Grâce aux cookies qui sont
passés, nous pouvons retrouver l'utilisateur s'il est authentifié.
Si l'utilisateur est authentifié, nous vérifions qu'il a bien accès au performa_domain
passé dans l'URL et, si c'est le cas, nous renvoyons le détail des informations de cet
utilisateur ce qui permet à Performa de le connecter. Nous envoyons également que
l'utilisateur est admin de Performa donc tout utilisateur ayant accès à un Performa
sera administrateur de ce Performa.
Si l'utilisateur n'est pas authentifié ou s'il n'a pas accès au performa_domain
alors nous demandons à Performa de faire une redirection vers la page de login
de Cywise.
Enfin, nous gérons également la déconnexion (bouton en haut à gauche de l'UI de
Performa) où l'API est appelée avec ?logout=1 et où nous déconnectons
l'utilisateur.
Déploiement du client Performa sur les serveurs¶
Quand un serveur, sur lequel notre client a été installé, appelle notre API pour se mettre à jour, nous testons si ce serveur est lié à un utilisateur ayant accès à un performa. Si c'est le cas, nous installons le client Performa sur le serveur.
Voir app/Models/YnhOsquery.php et YnhOsquery::monitorLinuxServer par exemple.