Interview d’Erwan Quelin : made in Nantes développe des scripts pour les baies UNITY Dell EMC.
Entretien avec Erwan Quélin sur le développement de ton module PowerShell
Basé sur Nantes, Erwan est depuis près de 6 ans Ingénieur Systèmes chez Cheops Technology. Ses interventions sont multiples et auprès de clients très diversifiés dans la région Ouest. Spécialisé dans la virtualisation autour des produits VMware et dans le stockage autour des gammes VNX, Unity et VPLEX de Dell EMC, Erwan est certifié VMware Certified Professional – Datacenter virtualization 4, 5 et 6 ainsi que EMC Implementation Engineer – VNX et Unity et vient d’intégrer le programme VMware vExpert et Dell EMC Elect pour l’année 2017.
Erwan, pourrais tu nous en dire un peu plus sur le développement de ce script ?
L’automatisation du système d’information est un sujet prépondérant qui ne s’inscrit pas uniquement au sein des GAFA. Dans le cadre de mes missions et de mes prestations je cherche systématiquement à automatiser de façon optimum et permanente les tâches parfois répétitives mais nécessaires à la mise en place d’une baie de stockage ou d’une infrastructure de virtualisation. Cela génère un véritable gain de temps sur des tâches qui n’ont pas de valeur ajoutée pour mes clients (comme créer X LUN…) et me garantit également une cohérence dans mes déploiements en m’assurant par exemple que deux baies sont configurées strictement de manière identique.
Lorsque Dell EMC a mis sur le marché les baies Unity, je me suis rapidement intéressé au fait qu’elles disposaient d’API RESTFul qui permettait de les administrer via de simples requêtes http. Face à ce constat, je me suis lancé dans le développement d’un module PowerShell qui permettra d’administrer entièrement les baies EMC Unity en ligne de commande.
PowerShell
Tu nous donnes plus de détails sur ce module ?
Avant de rentrer dans les détails du module Unity-Powershell, il est peut-être nécessaire d’expliquer ce qu’est PowerShell et quel est son intérêt par rapport aux autres langages.
PowerShell est à la fois un langage de scripting basé sur .NET ainsi qu’une interface en ligne de commande. Il est développé par Microsoft et vient remplacer la vénérable console cmd.exe en proposant des commandes supplémentaires permettant de gérer tout type d’équipements compatibles.
PowerShell est bien évidemment principalement utilisé pour manager l’écosystème Microsoft (Windows Server, Exchange, Sharepoint…) mais certains éditeurs mettent à disposition des commandes supplémentaires sous la forme de modules pour administrer leur produit.
Une des extensions les plus connues est PowerCLI. Développée par VMware, elle permet d’administrer via des lignes de commandes PowerShell tout un ensemble de produits de l’éditeur (vSphere ESXi, vSphere vCenter,…). Il y a quelques mois, Microsoft a rendu le projet PowerShell Open Source et il l’a porté sur les systèmes d’exploitation Linux et Mac OS.
Que signifie alors cmdlet’s ?
Les commandes PowerShell sont appelées Commandlets. Lancées unitairement, elles permettent d’exécuter une action précise, comme par exemple la commande Get-Service qui comme son nom l’indique permet d’afficher des informations concernant les services Windows.
Selon toi, en quoi Powershell se différencie de ses homologues ?
Ce qui fait la puissance et la simplicité d’utilisation de Powershell c’est la notion d’objet et de pipeline. La commande Get-Service n’a pas simplement affiché du texte mais a généré un objet qui peut être manipulé (par exemple appliquer un filtre n’affichant que les services démarrés) ou bien envoyer vers une autre commande au travers d’un pipeline. La commande ci-dessous va permettre en une ligne de redémarrer le service DnsCache :
> Get-Service -Name DnsCache | Restart-Service
En y ajoutant un peu de logique avec des If et autres boucles, il est alors possible de développer des scripts puissants qui permettront d’administrer beaucoup plus simplement un système.
Unity-Powershell
A quoi sert alors précisément ton script ?
Le module Unity-Powershell a été développé en s’appuyant sur les mêmes mécanismes. Il va permettre aux administrateurs de récupérer des informations sur une ou plusieurs baies Unity et de les configurer. Là où la création d’un LUN nécessiterait plus d’une dizaine de clics, le module permet de réaliser la même opération en une seule ligne de commande et de manière consistante pour chaque LUN créé.
Le module peut être utilisé sur n’importe quel poste de travail ou serveur Windows à partir du moment ou Powershell 5 est disponible. Il est possible (et recommandé) de télécharger le module puis de l’activer avec les lignes de commande suivantes :
https://www.powershellgallery.com/packages/Unity-Powershell/0.14.1
> Install-Module -Name Unity-Powershell -Scope CurrentUser > Import-Module -Name Unity-Powershell
Une fois le module disponible, on peut lister les nouvelles commandes qu’il apporte :
En cas de doute, une aide est disponible pour chaque commande :
> Get-Help -Name Get-UnityPool
Maintenant que l’on a fait un premier tour du propriétaire, rentrons dans le vif du sujet et connectons nous à une baie Unity. Il va vous falloir connaitre son FQDN ou son adresse IP ainsi qu’un utilisateur et un mot de passe.
> connect-Unity -Server unity01.okcomputer.lab
Si tout se passe bien, la commande va vous afficher des informations concernant la baie sur laquelle vous vous êtes connecté comme par exemple son nom et le modèle. Essayons maintenant de récupérer des informations concernant les storage pools. Les commandes permettant d’interroger une baie commence toutes par GET. Assez logiquement on pourra lister les pools avec la commande suivante :
> Get-UnityPool
Il est possible de limiter notre recherche à un pool spécifique
Avec ces commandes, on voit apparaître un élément important du fonctionnement des baies Unity : les ID. Chaque élément est référencé non pas par un nom mais par un ID unique. Par conséquent, cette référence est utilisée par pratiquement toutes les commandes du module.
Si vous voulez par exemple ajouter une description au premier pool, il faudra renseigner la commande Set-UnityPool avec son ID ‘pool_1’ :
> Set-UnityPool -ID 'pool_1' -Description 'Pool avec FastVP active'
On a vu qu’avec un peu de pratique, les commandes étaient relativement simples à utiliser et qu’elles pouvaient remplacer avantageusement l’interface graphique. Le fait que le module soit développé en Powershell va vous donner la possibilité de l’intégrer au sein de scripts qui permettront par exemple de créer plusieurs LUN d’un coup, puis d’automatiquement les présenter aux serveurs concernés, on pourrait aussi imaginer développer un programme qui augmenterait automatiquement la taille d’un LUN en fonction de critères que vous auriez définis.
En utilisant d’autres modules Powershell existants comme par exemple Pester (https://github.com/pester/Pester), il est possible de définir un framework de test que vous utiliserez pour vous assurer que vos baies Unity sont toujours configurées suivant un référentiel préétabli.
Il serait difficile de décrire tous les cas d’usages possibles tant les possibilités sont grandes.
J’espère que cet article vous aura permis de voir l’intérêt d’utiliser le module Unity-Powershell pour administrer vos baies Unity et qu’il vous aura donné envie d’aller plus loin avec. Le module est toujours en développement et est ouvert à toutes les contributions, si vous vous sentez l’envie d’écrire du code et de la documentation, signaler un bug ou tout simplement donner votre avis sur le module.
N’hésitez pas à contacter Erwan sur Twitter: ou sur GitHub: https://github.com/equelin Adresse du projet Unity-Powershell: https://github.com/equelin/Unity-Powershell Documentation : http://unity-powershell.readthedocs.io/en/latest/?badge=latest Pour suivre Erwan et pour plus d’informations sur son parcours et ses compétences : |
Bonjour
Quelles sont les differences avec le module powershell mis gratuitement à disposition par Dell EMC sous la reference ESI Powershell toolkit, ce module dispose de plus de 500 commandes, s’interfaçant avec VNX, XIO, VMAX, Unity, Recoverpoint, AppSync, etc…… ?
cordialement
Bonjour,
J’ai surement un avis un peu biaisé mais pour moi ce module est une version moderne d’ESI car il s’appuie directement sur les API des baies Unity alors qu’ESI nécessite des outils additionnels pour pouvoir fonctionner (UEMCLI pour les baies Unity, Solution Enabler pour les baies VMAX, etc…).
Le module possèdes d’ores et déjà 130 fonctions uniquement dédiées aux baies Unity ce qui le rend beaucoup plus complet, a terme il devrait être possible de complètement configurer une baie Unity sans passer par une interface graphique.
Enfin, il est gratuit et open source ce qui à l’avantage de permettre à qui le souhaite de participer à son développement et de le faire évoluer selon ses propres besoins.
Je reste à votre disposition.
Merci Erwan, il est vrai que la solution ESI s’appuie sur Solution Enabler pour VMAX et uemcli pour Unity, l’avantage d’ESI c’est cette capacité a disposer d’un spectre plus large,
En tout cas, beau travail ! Bravo !
Bonjour,
A la recherche d’un plugin Nagios pour monitorer notre baie Unity toute neuve, je suis tombé sur votre site. C’est très instructif. Il est en effet envisageable de se passer d’uemcli pour récupérer des informations en provenance de la baie.
Merci pour votre travail et vos recherches.
Merci beaucoup pour ce commentaire ! C’est très motivant !