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.
Dans un second temps, on doit configurer le RESTClient, pour cela :
Choisir Authentificaton > Basic Authentification
Renseigner les credentials de votre NSX Manager
Cocher « Remember me ».
Header > Custom Header
C’est ici qu’on indique le format d’échange des données (XML).
Cocher « Save to favorite »
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
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.
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.
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.
À 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.
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.
La requête semble s’être bien exécutée : 201 Created
On voit que le Logical Switch LS-TESTAPI a bien été créé sur le Transport Zone Global avec sa petite description.