Créer une machine virtuelle avec l'API

De Ikoula Wiki
Jump to navigation Jump to search


Comment créer une machine virtuelle avec l'API de VMWare Cloud Director

Nous allons voir comment créer une machine virtuelle depuis un script en python avec l'API de VMWare Cloud Director.

Voici les liens utiles à votre bonne lecture:

La documentation de l'API

Script Python

Ici nous allons créer notre VM depuis un template de vapp présent en catalogue.

import requests
import json

# On demande une session
header = {"Accept":"application/*;version=36.0","Authorization":"Basic YWRtaW46YWRtaW4gOik="}
req = requests.post("https://vmware.ikoula.com/api/sessions", headers=header)

# On parse la réponse pour récupérer les tokens
rsp = req.headers
xresult = json.loads(str(rsp).replace("'",'"'))
token = xresult["X-VMWARE-VCLOUD-ACCESS-TOKEN"]
xauth = xresult["x-vcloud-authorization"]

# On définie de nouveau le header avec les tokens
header = {"Accept":"application/*;version=36.0","X-VMWARE-VCLOUD-ACCESS-TOKEN":"{}".format(token),"X-VMWARE-VCLOUD-TOKEN-TYPE":"Bearer","x-vcloud-authorization":"{}".format(xauth)}

# On prépare notre body xml pour la requête de création de vapp
xml = """<?xml version="1.0" encoding="UTF-8"?> <vcloud:InstantiateVAppTemplateParams
     xmlns:ovf = "http://schemas.dmtf.org/ovf/envelope/1"
     xmlns:vcloud = "http://www.vmware.com/vcloud/v1.5"
     deploy = "false"
     name = "Debian11"
     powerOn = "true">
     <vcloud:Description> VApp Description </vcloud:Description>
     <vcloud:InstantiationParams>
         <vcloud:NetworkConfigSection>
             <ovf:Info> NetInfo </ovf:Info>
             <vcloud:NetworkConfig
                 networkName = "{mon-network}">
                 <vcloud:Configuration>
                     <vcloud:ParentNetwork
                         href = "https://vmware.ikoula.com/api/network/{id-network}"
                         name = "{mon-network}"
                         type = "application/vnd.vmware.vcloud.network+xml"/>
                     <vcloud:FenceMode>bridged</vcloud:FenceMode>
                 </vcloud:Configuration>
             </vcloud:NetworkConfig>
         </vcloud:NetworkConfigSection>
     </vcloud:InstantiationParams>
     <vcloud:Source
         href = "https://vmware.ikoula.com/api/vAppTemplate/vappTemplate-{id-vapp}"
         name = "imported"
         type = "application/vnd.vmware.vcloud.vAppTemplate+xml"/>
</vcloud:InstantiateVAppTemplateParams>"""

# On envoie la requête
req = requests.post("https://vmware.ikoula.com/api/vdc/{id-vdc}/action/instantiateVAppTemplate", headers=header, data=xml)
Note: Veillez à remplacer les valeur entre accolades et le token Basic par vos propre valeur

Conclusion

A noter que l'utilisation de l'API ne se limite pas à la création de machines virtuelles et qu'il existe différents outils pour mettre en œuvre ces actions.



Cet article vous a semblé utile ?

0



Vous n'êtes pas autorisé à publier de commentaire.