Verwendung der Droplet-Kennzeichnung mit der DigitalOcean-API

Einführung

Die DigitalOcean-API bietet Zugriff auf die meisten Funktionen des DigitalOcean-Kontrollfelds und eine einfache Möglichkeit, Droplets und andere Ressourcen über die Befehlszeile oder Ihren eigenen Code zu bearbeiten.

Droplet-Tagging ist eine neue Funktion. Mit dieser Funktion können Sie Droplets durch Anwenden von Tags gruppieren und lokalisieren sowie Aktionen für alle Droplets mit einem bestimmten Tag einleiten.

Voraussetzungen

In diesem Handbuch werden für alle Beispiele das Dienstprogrammcurlund Bash verwendet. Es wird davon ausgegangen, dass Sie mit der Verwendung der DigitalOcean-API vertraut sind und bereitspersonal access token generiert haben. Einzelheiten zu diesem Prozess und den Grundlagen der API-Verwendung finden Sie unterHow To Use the DigitalOcean API v2.

Sobald Sie ein Token haben, setzen Sie zunächst die Variable$TOKENin Ihrer Shell. Der Befehlexport stellt sicher, dass untergeordnete Prozesse die Variable lesen können:

export TOKEN=your_personal_access_token

Wir werden$TOKEN für die restlichen Beispiele in diesem Dokument verwenden, immer innerhalb einer Zeichenfolge in doppelten Anführungszeichen, damit deren Wert anstelle der Literalzeichenfolge$TOKEN interpoliert wird. Wenn Sie Fehler erhalten, stellen Sie zunächst sicher, dass dieser Wert in Ihrer aktuellen Shell richtig eingestellt ist.

Tags erstellen, auflisten und anzeigen

Tags können entweder erstellt werden, bevor sie auf Ressourcen angewendet werden, oder sie können während der Ressourcenerstellung erstellt und angewendet werden.

Tags unabhängig erstellen

Verwenden Siecurl, um einen POST an den API-Endpunkt zu senden, einschließlich Header fürContent-Type, Ihr persönliches Zugriffstoken und einige JSON-Daten, um den Tag-Namen anzugeben. Ersetzen Sietag_name durch Ihren gewünschten Tag-Namen:

curl -X POST \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $TOKEN" \
-d '{"name":"tag_name"}' \
"https://api.digitalocean.com/v2/tags"
Output{"tag":{"name":"tag_name","resources":{"droplets":{"count":0,"last_tagged":null}}}}

[.note] #Note: Diese Anforderung erfordert, wie jede andere Anforderung, die eine Änderung an Ihrem Konto vornimmt,, dass Ihrem Token ein Schreibbereich zugewiesen ist.
#

Erstellen und Anwenden von Tags beim Erstellen anderer Ressourcen

Ressourcen können bei der Erstellung auch eintags-Attribut enthalten. Dies ist ein Array von Tag-Namen, die bei der Erstellung angewendet werden. Tags, die noch nicht vorhanden sind, werden erstellt, um die Anforderung zu erfüllen. Die einzige Ressource, die zum Zeitpunkt dieses Schreibens unterstützt wird, ist ein Droplet, aber irgendwann werden andere verfügbar sein.

Um ein Droplet zu erstellen und Tags bei der Erstellung anzuwenden, können Sie Folgendes eingeben:

curl -X POST \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $TOKEN" \
-d '{"name":"example.com","region":"nyc3","size":"512mb","image":"ubuntu-14-04-x64","tags":["tag_name","another_tag"]}' \
"https://api.digitalocean.com/v2/droplets"

Dadurch wird ein neues Droplet mit den Tagstag_name undanother_tag erstellt. Wenn das Beispiel im vorherigen Abschnitt ausgeführt wurde, würde dieser Befehl das vorhandenetag_name-Tag anwenden und dasanother_tag-Tag erstellen und auf das Droplet anwenden.

Vorhandene Tags auflisten

Sie können alle Ihre aktuellen Tags mit einer GET-Anforderung an/v2/tags auflisten:

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.digitalocean.com/v2/tags"
Output{"tags":[{"name":"tag_name","resources":{"droplets":{"count":0,"last_tagged":null}}}],"links":{},"meta":{"total":1}}

Verwenden Sie zum Anzeigen eines einzelnen Tags eine GET-Anforderung an/v2/tags/tag_name:

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.digitalocean.com/v2/tags/tag_name"
Output{"tag":{"name":"tag_name","resources":{"droplets":{"count":0,"last_tagged":null}}}}

Die obige Beispielausgabe ist kurz. Beachten Sie, dass die Eigenschaftresources.droplets.last_taggednull ist. Sobald Sie einem oder mehreren Droplets ein Tag zuordnen, enthält diese Eigenschaft detaillierte Informationen zum zuletzt getaggten Droplet.

Tröpfchen markieren und entfernen

Tags können auch auf vorhandene Ressourcen angewendet werden. Die einzige Ressource, die zum Zeitpunkt dieses Schreibens unterstützt wird, ist ein Droplet, aber irgendwann werden andere verfügbar sein.

Tröpfchen werden Tags mit ihrem Attributidzugeordnet. Sie können ein JSON-Objekt abrufen, das eindroplets-Array enthält, in dem alle Ihre Droplets mit einer GET-Anforderung an/v2/droplets aufgelistet sind:

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.digitalocean.com/v2/droplets"

Sobald Sie dieid eines Droplets kennen, können Sie es einem Tag zuordnen, indem Sie auf/v2/tags/tag_name/resources POSTEN, einschließlich JSON-Daten, dieresource_id auf die Dropletid undresource_typeetzen. s zum Stringdroplet:

curl -X POST \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $TOKEN" \
-d '{"resources":[{"resource_id":"droplet_id","resource_type":"droplet"}]}' \
"https://api.digitalocean.com/v2/tags/tag_name/resources"

Versuchen Sie es erneut mit einer GET-Anforderung für das Tag. Die Eigenschaftresources.droplets.last_taggedollte detaillierte Informationen zu dem soeben getaggten Droplet enthalten:

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.digitalocean.com/v2/tags/tag_name"

Um ein Tag aus einem bestimmten Droplet zu entfernen, können Sie/v2/tags/tag_name/resources/ eine DELETE-Anforderung mit denselben Daten senden, mit denen Sie das Droplet ursprünglich markiert haben:

curl -X DELETE \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $TOKEN" \
-d '{"resources":[{"resource_id":"droplet_id","resource_type":"droplet"}]}' \
"https://api.digitalocean.com/v2/tags/tag_name/resources"

Dadurch wird das Tag aus der Ressource entfernt.

Finden von Tröpfchen nach Tag

Um alle mit einem bestimmten Tag verknüpften Droplets zu finden, senden Sie eine GET-Anforderung an/v2/droplets?tag_name=tag_name:

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.digitalocean.com/v2/droplets?tag_name=tag_name"

Dadurch werden Ihre Droplets nach dem angeforderten Tag gefiltert.

Aktionen für markierte Tröpfchen ausführen

Sie können eine Reihe von Aktionen für alle Tröpfchen ausführen, die einem bestimmten Tag zugeordnet sind:

Data Anmerkungen

{"type":"power_cycle"}

Schalten Sie die Tröpfchen aus und wieder ein.

{"type":"power_on"}

Tröpfchen einschalten. Muss aus sein.

{"type":"power_off"}

Tröpfchen ausschalten. Muss eingeschaltet sein.

{"type":"shutdown"}

Herunterfahren von Tröpfchen, ähnlich wie beim Ausschalten über die Befehlszeile.

{"type":"enable_private_networking"}

Aktivieren Sieprivate networking.

{"type":"enable_ipv6"}

Aktivieren SieIPv6 addresses für Tröpfchen.

{"type":"enable_backups"}

Aktivieren Sie Backups für Droplets.

{"type":"disable_backups"}

Deaktivieren Sie Backups.

{"type":"snapshot, "name": "snapshot_name"}

Machen Sie Schnappschüsse von Tröpfchen. Tröpfchen müssen zuerst ausgeschaltet werden, und einname ist obligatorisch.

Um eine Aktion auszuführen, senden Sie einen POST an/v2/droplets/actions?tag_name=tag_name mit JSON-Daten, in denentype und alle für die Aktion erforderlichen zusätzlichen Werte angegeben sind:

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"type":"action_type"}' \
"https://api.digitalocean.com/v2/droplets/actions?tag_name=tag_name"

Sie können einen Verlauf der letzten Aktionen einschließlich ihres Abschlussstatus mit einer GET-Anforderung an/v2/actions abrufen:

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://api.digitalocean.com/v2/actions"

Dies ist eine nützliche Methode, um festzustellen, ob Aktionen abgeschlossen wurden oder noch ausgeführt werden.

Beispiel: Schnappschuss von markierten Tröpfchen

Angenommen, Sie haben eine Sammlung von Droplets, die einem Tag mit dem Namenfileserver zugeordnet sind, und Sie möchten alle Snapshots erstellen.

Geben Sie zuerst die Aktion vonshutdownaus:

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"type":"shutdown"}' \
"https://api.digitalocean.com/v2/droplets/actions?tag_name=fileserver"

Warten Sie, bis das Herunterfahren für alle Droplets abgeschlossen ist, und geben Sie die Aktionsnapshot aus, einschließlich des Wertsnamefür den Snapshot:

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"type":"snapshot", "name":"snapshot_name"}' \
"https://api.digitalocean.com/v2/droplets/actions?tag_name=fileserver"

Beachten Sie, dass Schnappschüsse je nach Größe des Tropfens eine Stunde oder länger dauern können. Sobald die Schnappschüsse fertig sind, können Sie die Droplets mit einer Aktion vonpower_onwieder online schalten:

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"type":"power_on"}' \
"https://api.digitalocean.com/v2/droplets/actions?tag_name=fileserver"

Dies startet das Droplet erneut.

Tags löschen

Sie können ein Tag selbst löschen und seine Zuordnung zu allen Ressourcen entfernen, indem Sie eine DELETE-Anforderung an/v2/tags/tag_name senden:

curl -X DELETE \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $TOKEN" \
"https://api.digitalocean.com/v2/tags/tag_name"

Das Tag wird vollständig entfernt.

Fazit

Tagging ist eine einfache Abstraktion, bietet jedoch in Kombination mit grundlegenden Skriptwerkzeugen einen leistungsstarken Mechanismus für die Inventarisierung und Verwaltung Ihrer Systeme.

Von hier aus möchten Sie vielleicht tiefer in diedetailed DigitalOcean API documentation eintauchen oderlibraries which wrap the API for popular programming languages untersuchen.