VDI VMware (Horizon)
Avertissement : Projet open-source maintenu par la communauté, non affilié, approuvé ou parrainé par VMware, Inc., Broadcom Inc. ou Omnissa, LLC. « VMware », « Horizon » et « Omnissa » sont des marques déposées de leurs propriétaires respectifs. La source est publiquement vérifiable sous licence MIT.
Opérations intelligentes pour Horizon VDI de la famille de compétences VMware — pools de postes de travail, farms RDS, sessions utilisateur, machines de bureau, droits d'accès, événements/santé/statistiques et poussée d'image instant-clone, via l'API REST du serveur de connexion Horizon 8 (principal ; cible également la dernière version Omnissa Horizon, qui partage la même lignée d'API /rest/v1).
Compétences associées : vmware-aiops (les VM vCenter qui hébergent les postes de travail), vmware-monitor (vSphere en lecture seule), vmware-nsx-security (microsegmentation des postes de travail).
Statut : v1.0.0 (bêta). Les points d'accès sont vérifiés par rapport à l'API officielle du serveur Horizon ; les projections de champs de réponse GET sont défensives et en attente de validation sur un serveur de connexion réel (exécutez
vmware-vdi initsur un Horizon réel une fois pour confirmer). Régies par le harnais de la famille (audit + politique + erreurs d'enseignement) ; l'autorisation est déléguée au rôle du compte administrateur Horizon.
Ce Que Fait Cette Compétence
| Catégorie | Outils | Nombre | Lecture/Écriture |
|---|---|---|---|
| Supervision | résumé santé, liste/obtenir session, liste/obtenir machine, liste événements | 6 | 6 R |
| Statistiques | stats de concurrence des sessions, utilisation par pool | 2 | 2 R |
| Gestion | liste/obtenir pool, liste farm, liste pool d'applications, liste droits, liste images, recherche AD ; activer/désactiver pool, ajouter/supprimer droits | 9 | 7 R / 2 W |
| Actions Ops | déconnexion/déconnexion forcée/message session, réinitialisation/maintenance/suppression machine | 6 | 6 W |
| Tâches | statut tâche ; poussée image, annulation tâche | 3 | 1 R / 2 W |
27 outils MCP (16 lecture / 11 écriture). Les lectures sont strictement non destructrices. Les écritures prévisualisent leur périmètre d'impact, sont doublement confirmées en CLI et sont enregistrées dans le journal d'audit.
Installation Rapide
uv tool install vmware-vdi
vmware-vdi init # configuration conviviale : connexion à un serveur de connexion + découverte de vos pools
vmware-vdi doctor # vérifier la configuration / les identifiants / la connectivité
Quand Utiliser Cette Compétence
Utilisez vmware-vdi pour la couche broker Horizon : pools de postes de travail, farms RDS, applications publiées, sessions utilisateur (déconnexion/déconnexion forcée/message), état des machines de bureau (réinitialisation/maintenance/suppression), droits d'accès, événements/santé/statistiques Horizon, et poussée d'image instant-clone — lorsque le contexte est explicitement Horizon / Omnissa / VDI / pool-de-postes-de-travail / farm-RDS.
N'UTILISEZ PAS lorsque : la tâche concerne la VM vCenter sous-jacente (alimentation/instantané/clonage/migration → vmware-aiops), l'inventaire/les alarmes vSphere en lecture seule (→ vmware-monitor), ou la microsegmentation NSX des postes de travail (→ vmware-nsx-security). La VM de soutien d'un poste de travail Horizon relève d'aiops ; la session/pool/broker relève de vdi.
Compétences Connexes — Routage des Compétences
| L'utilisateur veut… | Compétence |
|---|---|
| Déconnecter/réinitialiser/ré-imager un poste de travail ou une session Horizon | vmware-vdi (ceci) |
| Alimentation/instantané/clonage/migration de la VM de soutien vCenter | vmware-aiops |
| Inventaire/alarmes/santé de l'hôte vSphere en lecture seule | vmware-monitor |
| Microsegmenter le réseau du pool de postes de travail | vmware-nsx-security |
| Workflow VDI multi-étapes avec approbation + restauration | vmware-pilot |
Workflows Courants
1. Help-desk : le poste de travail d'un utilisateur est bloqué.
vmware-vdi session list --user alice # trouver sa session + son état
vmware-vdi machine list --state AGENT_UNREACHABLE # le poste de travail est-il cassé ?
vmware-vdi session logoff --user alice --dry-run # prévisualiser le périmètre d'impact (quelles sessions)
vmware-vdi session logoff --user alice # double confirmation, puis déconnexion + audit
Branche d'échec : si session list renvoie une erreur 404/auth d'enseignement, exécutez vmware-vdi doctor — un rôle Horizon en lecture seule suffit pour les lectures mais le compte doit pouvoir atteindre le serveur de connexion.
2. Nuit de correctifs : pousser une nouvelle image dorée vers un pool.
vmware-vdi image list # trouver la VM de base + l'instantané
vmware-vdi pool push-image --id pool-fin --dry-run # PÉRIMÈTRE D'IMPACT : N postes de travail, M utilisateurs connectés
vmware-vdi pool set-enabled --id pool-fin --disable # optionnel : arrêter les nouvelles connexions d'abord
vmware-vdi pool push-image --id pool-fin # double confirmation ; renvoie une tâche
vmware-vdi task status --pool pool-fin # suivre la progression
Branche d'échec : si l'aperçu montre des utilisateurs connectés que vous n'attendiez pas, session send-message --user … pour les avertir, ou poussez avec --force-logoff seulement après avoir confirmé l'impact.
3. Intégrer un groupe à un pool.
vmware-vdi ad-search "Finance" # résoudre le groupe AD → son SID
vmware-vdi entitlement add --pool pool-fin --sid <SID>
vmware-vdi entitlement list --pool pool-fin # vérifier
Branche d'échec : ad-search qui ne retourne rien signifie généralement que le domaine dans ~/.vmware-vdi/config.yaml est faux — réexécutez vmware-vdi init --force.
Mode d'Utilisation
- CLI — travail interactif help-desk, script, petits modèles locaux (coût de contexte réduit).
- MCP — opérations pilotées par agent avec sortie structurée ; exécutez
vmware-vdi mcp(un script console installé, donc pas de re-résolution réseauuvx— fonctionne via les proxies TLS d'entreprise).
Outils MCP (27 — 16 lecture, 11 écriture)
| Catégorie | Outils | L/E |
|---|---|---|
| Supervision | health_summary, session_list, session_get, machine_list, machine_get, event_list | Lecture |
| Statistiques | session_stats, pool_utilization | Lecture |
| Gestion (lecture) | pool_list, pool_get, farm_list, app_pool_list, entitlement_list, image_list, ad_user_search | Lecture |
| Tâches (lecture) | task_status | Lecture |
| Actions Ops | session_logoff, session_disconnect, session_send_message, machine_reset, machine_maintenance, machine_remove | Écriture |
| Gestion (écriture) | pool_set_enabled, entitlement_add, entitlement_remove | Écriture |
| Tâches (écriture) | pool_push_image, task_cancel | Écriture |
Enveloppe de liste : chaque outil *_list renvoie {items, returned, limit, total, truncated, hint} — lisez les lignes de items et vérifiez truncated avant de conclure qu'une liste est complète ; items vides avec truncated:false signifie vérifié-et-rien, pas un échec. Les listes sont récupérées avec une pagination côté serveur.
Périmètre d'impact (normatif) : pool_push_image recrée chaque poste de travail dans le pool — le plus grand périmètre d'impact en un seul appel de la famille. Son aperçu indique les nombres de postes de travail affectés et d'utilisateurs en session avant toute confirmation. session_logoff / machine_reset / machine_remove indiquent leurs utilisateurs/machines affectés et exigent une double confirmation en CLI.
Séparation lecture/écriture : 16 outils en lecture seule (marqueur [READ] dans la docstring), 11 modifient l'état. Toutes les écritures sont enregistrées dans le journal d'audit ; les écritures destructrices (session_logoff, machine_reset, machine_remove, pool_set_enabled désactivation, entitlement_remove, pool_push_image, task_cancel) nécessitent une double confirmation en CLI et supportent --dry-run.
Référence Rapide CLI
vmware-vdi init # configuration conviviale + découverte des pools
vmware-vdi health # santé VDI en un coup d'œil
vmware-vdi stats # statistiques de concurrence des sessions
vmware-vdi utilization # utilisation des postes de travail par pool
vmware-vdi session list [--user U] [--pool P] [--state CONNECTED]
vmware-vdi session logoff --user U [--dry-run] # double confirmation
vmware-vdi machine list [--pool P] [--state AGENT_UNREACHABLE]
vmware-vdi machine reset --id M [--dry-run] # réinitialisation matérielle ; double confirmation
vmware-vdi machine maintenance --id M --enter|--exit
vmware-vdi pool list
vmware-vdi pool set-enabled --id P --enable|--disable
vmware-vdi pool push-image --id P [--force-logoff] [--dry-run] # périmètre d'impact le plus élevé
vmware-vdi task status --pool P [--task T]
vmware-vdi ad-search "<nom>" # résoudre le SID AD pour les droits
vmware-vdi entitlement add|remove --pool P --sid <SID>
Liste complète : references/cli-reference.md.
Dépannage
Mot de passe non trouvé. Définissez la variable d'environnement : VMWARE_VDI_<TARGET>_PASSWORD— exécutezvmware-vdi init(écrit~/.vmware-vdi/.env, 0600), ou exportez la variable manuellement.- Échec de connexion (HTTP 401/400) — vérifiez
username/domaindans~/.vmware-vdi/config.yaml; Horizon authentifie par rapport audomainAD. Un administrateur local du serveur de connexion laissedomainvide. le certificat n'a pas pu être vérifié— pour un certificat de laboratoire auto-signé, définissezverify_ssl: falsepour cette cible dans la configuration.- Une écriture est refusée avec « rôle en lecture seule » — c'est le RBAC qui fonctionne comme conçu. Pointez la cible vers un rôle administrateur Horizon avec privilège d'écriture, ou conservez le compte en lecture seule pour les commandes de lecture uniquement.
session list --poolou un aperçu de poussée d'image affiche 0 là où vous attendez des utilisateurs — sur votre version d'Horizon, un nom de champ peut différer ; il s'agit d'une limitation connue de la version bêta, veuillez soumettre un problème avec la sortie brute desession_getafin que la projection puisse être corrigée.
Audit & Sécurité
- Code Source — https://github.com/vmware-skills/VMware-VDI (MIT).
- Contenu du Fichier de Configuration —
config.yamlcontient uniquement l'hôte/nom d'utilisateur/domaine ; les mots de passe résident dans~/.vmware-vdi/.env(0600, obscurcis enb64:au repos — obscurcissement, pas chiffrement). - Portée des Données Webhook — aucune. Cette compétence n'effectue aucun appel sortant autre que vers le serveur de connexion configuré.
- Vérification TLS — activée par défaut ;
verify_ssl: falseest par cible et uniquement pour les laboratoires auto-signés. - Protection contre l'Injection de Prompt — tout le texte fourni par le serveur de connexion (noms d'utilisateur, noms de machine/pool, messages d'événement) passe par
vmware_policy.sanitize()(troncature + suppression des caractères de contrôle). - Moindre Privilège — l'autorisation est le travail du compte Horizon : un rôle administrateur Horizon en lecture seule refuse toute écriture au niveau du serveur de connexion, de manière incontournable. Toutes les écritures sont enregistrées dans
~/.vmware/audit.db. Voirreferences/setup-guide.md.
Licence
MIT