cd ~/

Home of Daniel Graf

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

cd ~/

Home of Daniel Graf

Seiten

Suche

Blog Meta

Dynamo Dresden

Galerie

blog:vmware_-_einstieg_in_die_vsphere_rest_api

VMware - Einstieg in die vSphere REST API

Ich weiß eigentlich gar nicht warum, aber irgendwie ist die vSphere REST API an mir vorbeigerauscht 8-O Für mich (und vielleicht auch für manch anderen) möchte ich hier ein paar Befehle dokumentieren :-)

Die beschreibung zur API findet sich übrigens auch in jedem vCenter ab Version 6.5 unter https://vcenter.lab/apiexplorer/ (die Adresse müsst ihr natürlich anpassen ;-)).

Meine Code Beispiele schreibe ich in Bash. Zudem arbeite ich mit den folgenden Variablen…

_VCENTER_HOSTNAME="vcenter.lab"
_VCENTER_USERNAME="administrator@vsphere.local"
_VCENTER_PASSWORD="VMware1!"
 
_CURL_DEFAULTS="--header 'Accept: application/json' --insecure --silent"

Zudem nutze ich noch das Tool jq, um mir den JSON Output in einem Menschen lesbaren Format anzeigen zu lassen.

Auch bei der API gibt es eine Anmeldung. Die Daten sendet man an das vCenter und als Response gibt es einen Session Token, der dann bei den API Requests zur Authentifizierung mit angegeben wird:

_SESSION_TOKEN=$( curl -X POST \
                    ${_CURL_DEFAULTS} \
                    --header "Content-Type: application/json" \
                    --header "vmware-api-session-id: null" \
                    --user   "${_VCENTER_USERNAME}:${_VCENTER_PASSWORD}" \
                    "https://${_VCENTER_HOSTNAME}/rest/com/vmware/cis/session" | jq .value | tr -d '"' )

Um zu prüfen ob man angemeldet ist, lässt sich die Session vom vCenter abfragen:

curl -X POST \
  ${_CURL_DEFAULTS} \
  --header "Accept: application/json" \
  --header "vmware-api-session-id: ${_SESSION_TOKEN}" \
  "https://${_VCENTER_HOSTNAME}/rest/com/vmware/cis/session?~action=get" | jq

Ist man erfolgreich am vCenter authentifiziert, sieht der JSON Response so aus:

{
  "value": {
    "created_time": "2018-07-06T12:10:37.990Z",
    "last_accessed_time": "2018-07-06T12:10:38.560Z",
    "user": "Administrator@VSPHERE.LOCAL"
  }
}

Ist man hingegen nicht (mehr) am vCenter angemeldet:

{
  "type": "com.vmware.vapi.std.errors.unauthenticated",
  "value": {
    "messages": [
      {
        "args": [],
        "default_message": "Authentication required.",
        "id": "com.vmware.vapi.endpoint.method.authentication.required"
      }
    ]
  }
}

Was alles abgefragt, bzw. auch verändert werden kann, findet man in der Doku der vSphere REST API. Ich möchte hier nur ein paar Beispiele bringen…

Mit folgenden Befehl lassen sich alle Datastores ausgeben:

curl -X GET \
     ${_CURL_DEFAULTS} \
     -H "vmware-api-session-id: ${_SESSION_TOKEN}" \
     "https://${_VCENTER_HOSTNAME}/rest/vcenter/datastore" | jq

Möchte man nur die VMFS Datastores gelistet bekommen, hängt man an die URL noch einen Filter für den Type an (?filter.types=VMFS):

curl -X GET \
     ${_CURL_DEFAULTS} \
     -H "vmware-api-session-id: ${_SESSION_TOKEN}" \
     "https://${_VCENTER_HOSTNAME}/rest/vcenter/datastore?filter.types=VMFS" | jq

Nach getaner Arbeit sollte man sich von der API auch wieder abmelden. Dazu wird der Session Token im vCenter gelöscht:

curl -X DELETE \
     ${_CURL_DEFAULTS} \
     --header "vmware-api-session-id: ${_SESSION_TOKEN}" \
     "https://${_VCENTER_HOSTNAME}/rest/com/vmware/cis/session"

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
 
blog/vmware_-_einstieg_in_die_vsphere_rest_api.txt · Zuletzt geändert: 2018/07/06 15:50 von Daniel Graf