VMware NSX : Créer un Logical Switch en API

VMware NSX : Créer un Logical Switch en API


NSX Manager embarque une RESTFul API qui permet d’interagir avec l’environnement NSX.
Il est ainsi possible à l’aide de l’API NSX de récupérer des informations sur une configuration précise, de récupérer l’état d’un « objet » (controller, logical switch, edge, etc..) mais aussi de les modifier ou d’en créer de nouveaux.

Petite information : Le protocole de communication est HTTPS et la lecture/écriture des données est au format XML.

Dans cet article nous allons voir comment créer un Logical Switch en utilisant l’API NSX.


Installation RESTClient

Il est dans un premier temps nécessaire d’installer un RESTClient.
Le plus simple est d’utiliser celui disponible via Mozilla Firefox : https://addons.mozilla.org/en-US/firefox/addon/restclient/

Une fois installée, il suffit de le lancer.

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_73.png

Dans un second temps, on doit configurer le RESTClient, pour cela :
Choisir Authentificaton > Basic Authentification

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_74.png

Renseigner les credentials de votre NSX Manager
Cocher « Remember me ».

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_75.png

Header > Custom Header

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_76.png

C’est ici qu’on indique le format d’échange des données (XML).
Cocher « Save to favorite »

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_77.png

Récupérer des Informations en API

Les tâches fréquentes rencontrées avec NSX sont :

GET: pour récupérer des informations depuis NSX Manager
POST: pour créer une nouvelle configuration, un objet sur NSX Manager
PUT : pour modifier une configuration sur NSX Manager
DELETE: pour supprimer une configuration sur NSX Manager


Important à savoir : Tout est OBJET !
Les Controllers, transport zone, logical switchs, logical routers, perimeters gateway, rules firewall, etc.., ne sont jamais identifiés à leur nom, mais à un ID qui leur est unique.

Voici une capture de mon environnement NSX, ou j’ai qu’un Transport Zone : GLOBAL
Chaque Transport Zone est référencé à un objet unique : une scopeID unique

screenshot_86
Pour la première requête,on va récupérer la scopeID du Global Transport Zone.
Qui dit récupérer des informations, dit Method GET.

L’URL utilisée est : https://192.168.110.42/api/2.0/vdn/scopes
Ceci va permettre de récupérer tous les scopes, donc tous les Transports Zones disponibles.

En appuyant sur SEND (à droite), on note le statut retour de la requête : 200 OK.
Celle-ci semble s’être bien exécutée.

screenshot_78
Quand on clique sur Reponse Body, on obtient a réponse à notre requête au format XML.

En regardant le début de la réponse, on voit 2 éléments :

– L’objet ID vdnscope-1
– le nom de ma zone GLOBAL

On comprend donc que ma zone GLOBAL (configuré sur NSX) a pour ObjectID « vdncsope-1 »
C’est l’objectID qui est utilisé pour toutes requêtes (GET/PUT/POST/DELETE) car il est unique à chaque objet.
Le nom d’un objet lui peut potentiellement changer.

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_79.png

La requête suivante permet de récupérer tous les Logical Switchs présents au sein du vdnscope-1, donc au sein du GLOBAL Transport Zone.

On voit le Status code de la requête : 200 OK.

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_80.png

À la ligne 18, on observe la présence du Logical Switch LS-APP.
Comme pour la Zone, LS-APP est référencé à un objectID unique, « virtualwire-1 »  .
Noté qu’il est important de récupérer le tenantID « virtual wire tenant » (ligne 24), nécessaire lors de la création d’un Logical Switch.

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_81.png

Création d’un Logical Switch en API

Passons à la création d’un Logical Switch : LS-TESTAPI

On va tenter de créer le Logical Switch LS-TESTAPI sur le Global Transport Zone et on va y joindre une petite description.
Il est nécessaire de connaître l’ID du Transport Zone dans laquelle on souhaite créer un logical Switch, d’où l’étape juste au-dessus.

La méthode est un POST, car cette fois-ci, on va créer un nouvel objet sur l’environnement NSX. Si avait voulu modifier un Logical Switch existant, on aurait utilisé la méthode PUT.
URL : https://192.168.110.42/api/2.0/vdn/scopes/vdnscope-1/virtualwires

On souhaite interagir au niveau des logicals switchs sur le vdnscope-1 (Global Transport Zone)

Body : le corps de la requête

<virtualWireCreateSpec>
<name>LS-TESTAPI</name>
<description>Logical Switch via REST API</description>
<tenantId>virtual wire tenant</tenantId>
<controlPlaneMode>UNICAST_MODE</controlPlaneMode>
</virtualWireCreateSpec>

Les informations name, tenantID et controlPlaneMode sont obligatoires.
La description peut ne pas être indiquée.

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_83.png

La requête semble s’être bien exécutée : 201 Created

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_84.png


On voit que le Logical Switch LS-TESTAPI a bien été créé sur le Transport Zone Global avec sa petite description.

C:\Users\igor\Desktop\vinception\Screenpresso\screenshot_85.png

Leave a Reply

Your email address will not be published. Required fields are marked *