VCSIM, un simulateur basé sur les APIs VMware vSphere (vCenter et ESXi) ...
Tags: vcenter, vmware, openapi, docker
Published: 2020-03-19 19:30:58

![](https://cdn-images-1.medium.com/max/1600/1*9otj00C3OaaU7OY2xB3HLw.jpeg)

VCSIM fait partie plus globalement de Gvmomi, une bibliothèque en Go pour interagir avec les APIs VMware vSphere (ESXi et/ou vCenter). Il permet d'implémenter un terminal vSphere Web Services (SOAP) SDK destiné à tester les consommateurs de l'API. Bien que le framework soit écrit dans le langage Go, il peut être utilisé par n'importe quel langage qui peut parler à l'API vSphere :

[**vmware/govmomi**](https://github.com/vmware/govmomi/tree/master/vcsim)

[*Go library for the VMware vSphere API. Contribute to vmware/govmomi development by creating an account on GitHub.*github.com](https://github.com/vmware/govmomi/tree/master/vcsim)

Pour ce test, je commence par lancer une petite instance Ubuntu 18.04 64 bits dans Outscale :

![](https://cdn-images-1.medium.com/max/2400/1*Y9VCX0VBa0vErzBrOg9Gdg.jpeg)

et j'y installe le moteur Docker :

![](https://cdn-images-1.medium.com/max/2400/1*mUo1mY7oNy6OqhsZ82m1iA.png)

![](https://cdn-images-1.medium.com/max/2400/1*Kj1Huw8u2QQwTyod05NIhA.png)

Je vais utiliser ce Dockerfile pour construire mon image de ce simulateur :

![](https://cdn-images-1.medium.com/max/2400/1*UwHQ0uU2OWbRNJmk4QpIvA.png)

Je lance le BUILD et je lance un PUSH vers le Docker Hub de cette image :

![](https://cdn-images-1.medium.com/max/1600/1*ih82aU8T_DfWfmeiqQ8dvA.jpeg)

![](https://cdn-images-1.medium.com/max/2400/1*wuAym3q-HOphEx7CTgxJ1g.png)

Je peux tester la réponse de VCSIM simplement avec cURL localement :

![](https://cdn-images-1.medium.com/max/2400/1*Lgx64SIxk46RSkpKWItMCQ.png)

![](https://cdn-images-1.medium.com/max/1600/0*GG4dgPqC64UKNQmu.jpg)

Je peux récupérer le binaire Govc depuis github pour intéragir avec ce simulateur :

[**vmware/govmomi**](https://github.com/vmware/govmomi/releases)

[*Go library for the VMware vSphere API. Contribute to vmware/govmomi development by creating an account on GitHub.*github.com](https://github.com/vmware/govmomi/releases)

![](https://cdn-images-1.medium.com/max/1600/1*MHmQkfHD1E49qwXIuxXJxw.jpeg)

ou via l'installation locale de Go :

![](https://cdn-images-1.medium.com/max/1600/1*tJsgiGTOm59PvLAVOoP1bg.png)

Je télécharge ici le binaire depuis Github :

![](https://cdn-images-1.medium.com/max/2400/1*XjLxTEkOmANERPgmUjYrhw.png)

et je vérifie l'execution du binaire localement dans mon instance outscale vers l'API du simulateur en exécution dans le container Docker :

![](https://cdn-images-1.medium.com/max/1600/1*3jbRr1P43QQA6MDtvdnm3A.png)

![](https://cdn-images-1.medium.com/max/2400/1*iUs9R_Aj4Zpktx76uHuNwA.png)

Je peux lancer une série de test avec ces commandes (liste des datastores ou des tâches en exécution dans ce simulateur d'un cluster vSphere) :

![](https://cdn-images-1.medium.com/max/2400/1*KdvNxEB7x_atG8UPbj5KcA.png)

ou par le test de création d'une image dans un datastore :

![](https://cdn-images-1.medium.com/max/1600/1*UgvDUiJhS8g_tVgS4Hng3A.jpeg)

ou la création d'un disque de 10 Go :

![](https://cdn-images-1.medium.com/max/1600/1*iFFWC43dfoJNAsDg6tzGrQ.jpeg)

On peut utiliser aussi Pyvmomi (SDK Python pour l'API VMware vSphere qui permet de gérer ESX, ESXi et vCenter) :

[**vmware/pyvmomi**](https://github.com/vmware/pyvmomi)

[*VMware vSphere API Python Bindings. Contribute to vmware/pyvmomi development by creating an account on GitHub.*github.com](https://github.com/vmware/pyvmomi)

Installation dans l'instance Outscale de Pyvmomi :

![](https://cdn-images-1.medium.com/max/2400/1*Sjc9JMjJToCCn2OkgaXCxQ.jpeg)

avec ce test en Python pour récupérer toutes les VMs du cluster :

![](https://cdn-images-1.medium.com/max/1600/1*XahERPKq83_U40zCkCtJrQ.jpeg)

![](https://cdn-images-1.medium.com/max/2400/1*UC2zR9nOLRC9rHGERlhCUg.png)

![](https://cdn-images-1.medium.com/max/1600/1*l3150VFeBfnPYuuh7sh66A.png)

ou cet autre test pour récupérer l'inventaire de l'ensemble des clusters dans ce simulateur :

![](https://cdn-images-1.medium.com/max/2400/1*izQZmN6OtjncfGKF6JrBqw.png)

![](https://cdn-images-1.medium.com/max/1600/1*iQIDgdxBbJFP9A-ZMcSBfQ.jpeg)

Avec d'autres exemples dans ce dépôt sur Github :

[**vmware/pyvmomi-community-samples**](https://github.com/vmware/pyvmomi-community-samples)

[*A place for community contributed samples for the pyVmomi library. - vmware/pyvmomi-community-samples*github.com](https://github.com/vmware/pyvmomi-community-samples)

Sachant que tout cela consomme à peine 216 Mo de RAM 😉

![](https://cdn-images-1.medium.com/max/2400/1*dh8wG3HdQZqbt8F7JBuVIQ.jpeg)

Avec Govmomi, en plus du client API vSphere, ce référentiel comprend :

-   govc --- vSphere CLI
-   vcsim --- vSphere API mock framework
-   toolbox --- VM guest tools framework

Bien évidemment, ceci peut être testé de manière traditionnelle via PowerCLI :

[**Testing vCenter Simulator in Docker Playground - vCloud Vision**](https://vcloudvision.com/2019/01/02/testing-vcenter-simulator-in-docker-playground/)

[*On the 31st of december I read a very nice post over at brianbunke.com on running a simulated vCenter with govcsim...*vcloudvision.com](https://vcloudvision.com/2019/01/02/testing-vcenter-simulator-in-docker-playground/)

[**vCenter Simulator Docker Container**](http://www.brianbunke.com/blog/2018/12/31/vcenter-simulator-ci/)

[*And You Will Know Me by the Trail of Documentation*www.brianbunke.com](http://www.brianbunke.com/blog/2018/12/31/vcenter-simulator-ci/)

À suivre ! ...

![](https://cdn-images-1.medium.com/max/1600/0*efP-0832xJaU7yNd)