Outil LazyVMAdmin

Ca fait pas mal de temps que ça commençait à nous titiller, et bien voilà une chose de faite, LazyVMAdmin est là !

Vous êtes peut être dans notre cas où vous devez gérer plusieurs vCenter (et donc forcement plusieurs connexions PowerCLI), et vous êtes dans une structure où votre compte de connexion à votre poste de travail est différent de celui que vous utilisez pour vous connecter sur vos console (typique de l’utilisation d’un compte ++).

Dans notre cas, ça commençait à devenir critique, et comme on dit, « un bon admin est un admin feignant », on est donc arrivé à se poser la question de comment éviter de devoir se réauthentifier à chaque lancement de console vCenter et/ou PowerCLI.

Dans les possibilité, on est passé par du stockage de credential dans des fichiers .db ou de l’utilisation abusive du runas, etc.. bref, rien de bien sexy.

Au final, on s’est dit qu’on est jamais mieux servit que par soit même, et donc on a décidé de faire notre propre tool LazyVMAdmin (un grand merci à RB pour son aide plus que nécessaire histoire de faire quelque chose de pas trop dirty :p).

Donc bon, LazyVMAdmin, qu’est ce que c’est ?

C’est un outil qui va se mettre dans la zone de notification de Windows (aka systray) et permettre 2 choses :

  1. Stocker de manière sécurisée des credentials fournit pas l’utilisateur
  2. Lancer des applications en utilisant le contexte de sécurité des credentials fournit


En gros, ça vous permettra de lancer des applications rapidement sans devoir vous réauthentifier (même principe que runas).

Par exemple avec le client vSphere, on pourra cocher directement la case « Use Windows session credentials » pour ne pas se réauthentifier :

Ce projet a été réalisé en C# (Framework 4.0), les sources disponibles pour Visual Studio 2010 et la documentation associée générée par SandCastle (disponible sur http://shfb.codeplex.com/).

Dans la solution, il y a les fichiers suivants :

  • AboutForm.cs : Fenêtre d’information sur le projet
  • ActiveDirectory.cs : Classe d’interaction avec Active Directory
  • app.config : Fichier de configuration pour l’application
  • AuthForm.cs : Fenêtre d’authentification
  • MainForm.cs : Fenêtre principale, avec la gestion de la zone de notification
  • ProcessManager.cs : Classe de gestion des lancement de processus
  • Program.cs : Classe principale de lancement de l’application
  • SecureStringHandler.cs : Classe de gestion des Secure String (utilisées pour stocker le mot de passe)

Une chose importante est le fichier .config fournit avec l’exécutable.

Ce fichier contient la configuration utilisée par l’application et est nécessaire à son lancement (il y aura un message d’erreur si le fichier .config ne se trouve pas au même niveau du fichier .exe).

Voici la partie du fichier .config qui peut être modifié afin de correspondre à votre environnement :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="LazyVMAdmin.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
      <LazyVMAdmin.Properties.Settings>
        <setting name="CommandShellFileName" serializeAs="String">
          <value>cmd.exe</value>
        </setting>
        <setting name="CommandShellArgs" serializeAs="String">
          <value />
        </setting>
        <setting name="vSphereClientFileName" serializeAs="String">
          <value>C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe</value>
        </setting>
        <setting name="vSphereClientArgs" serializeAs="String">
          <value />
        </setting>
        <setting name="powerCLIFileName" serializeAs="String">
          <value>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</value>
        </setting>
        <setting name="powerCLIArgs" serializeAs="String">
          <value>-psc "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -noe -c ". \"C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1\""</value>
        </setting>
        <setting name="DefaultUsername" serializeAs="String">
          <value>username</value>
        </setting>
        <setting name="DefaultDomain" serializeAs="String">
          <value>domainname</value>
        </setting>
      </LazyVMAdmin.Properties.Settings>
    </userSettings>
</configuration>

Voici à quoi servent les paramètres :

  • CommandShellFileName : Chemin d’accès pour l’exécutable cmd.exe
  • CommandShellArgs : Paramètres pour l’exécutable cmd.exe
  • vSphereClientFileName : Chemin d’accès pour l’exécutable VpxClient.exe
  • vSphereClientArgs : Paramètres pour l’exécutable VpxClient.exe
  • powerCLIFileName : Chemin d’accès pour l’exécutable powershell.exe
  • powerCLIArgs : Paramètres pour l’exécutable powershell.exe
  • DefaultUsername : Utilisateur par défaut qui sera renseigné dans la fenêtre d’authentification
  • DefaultDomain : Domaine par défaut de l’utilisateur

Voici donc à télécharger :

  • LazyVMAdmin_sources : une archive zip des sources (projets Visual Studio 2010, ressources, …) qui peuvent être compilées directement depuis Visual Studio si vous avez, MSBuild ou csc.exe
  • LazyVMAdmin : une archive zip avec le projet compilé (LazyVMAdmin.exe et LazyVMAdmin.exe.config)
  • LazyVMAdmin_documentation : la documentation au format CHM

2 comments

Laisser un commentaire

Required fields are marked *.