前書き

DigitalOcean APIは、DigitalOceanコントロールパネルにあるほとんどの機能へのアクセスを提供し、コマンドラインまたは独自のコードからドロップレットやその他のリソースを操作する簡単な方法を提供します。

液滴のタグ付けは新しい機能です。 この機能を使用すると、タグを適用してドロップレットをグループ化および検索したり、特定のタグを持つすべてのドロップレットでアクションを開始したりできます。

前提条件

このガイドでは、すべての例で `+ curl +`ユーティリティとBashを使用しています。 DigitalOcean APIの使用に精通しており、*パーソナルアクセストークン*を既に生成していることを前提としています。 このプロセスの詳細、およびAPIの使用の基本については、https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2 [DigitalOcean API v2の使用方法]を参照してください。 。

トークンを取得したら、シェルで `+ $ TOKEN `変数を設定することから始めます。 ` export`コマンドは、子プロセスが変数を読み取れるようにします:

export TOKEN=

このドキュメントの残りの例では、常に文字列「+ $ TOKEN 」ではなく値が補間されるように、二重引用符で囲まれた文字列内で「 $ TOKEN +」を使用します。 エラーが発生した場合は、まず現在のシェルでこの値が正しく設定されていることを確認してください。

タグの作成、一覧表示、表示

タグは、リソースに適用する前に作成することも、リソースの作成中に作成して適用することもできます。

タグを独立して作成する

`+ curl `を使用して、 ` Content-Type `のヘッダー、個人アクセストークン、タグ名を指定するJSONデータを含むPOSTをAPIエンドポイントに送信します。 希望のタグ名を `+`に置き換えます:

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

他のリソースを作成するときのタグの作成と適用

リソースには、作成時に `+ tags +`属性を含めることもできます。 これは、作成時に適用されるタグ名の配列です。 まだ存在しないタグは、要求を満たすために作成されます。 この記事の執筆時点でサポートされている唯一のリソースはドロップレットですが、最終的には他のリソースも利用可能になります。

ドロップレットを作成し、作成時にタグを適用するには、次のように入力できます。

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",}' \
"https://api.digitalocean.com/v2/droplets"

これにより、タグ「+ tag_name 」と「 another_tag 」が適用された新しいドロップレットが作成されます。 前のセクションの例を実行すると、このコマンドは既存の ` tag_name `タグを適用し、 ` another_tag +`タグを作成してドロップレットに適用します。

既存のタグのリスト

`+ / v2 / tags +`へのGETリクエストで現在のタグをすべてリストできます:

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

個々のタグを表示するには、 `+ / v2 / tags / +`へのGETリクエストを使用します:

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

上記の出力例は簡単です。 `+ resources.droplets.last_tagged `プロパティが ` null +`であることに注意してください。 タグを1つ以上のドロップレットに関連付けると、このプロパティには最後にタグ付けされたドロップレットに関する詳細情報が含まれます。

液滴のタグ付けとタグ解除

タグは既存のリソースにも適用できます。 この記事の執筆時点でサポートされている唯一のリソースはドロップレットですが、最終的には他のリソースも利用可能になります。

ドロップレットは、 `+ id `属性を使用してタグに関連付けられます。 ` / v2 / droplets `へのGETリクエストですべてのドロップレットをリストする ` droplets +`配列を含むJSONオブジェクトを取得できます。

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

Dropletの + id +`を知ったら、 `+ resource_id +`をDroplet `+ id +`および `+ resource_type + `を文字列 + droplet + `に:

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

タグのGETリクエストを再試行すると、 `+ resources.droplets.last_tagged +`プロパティに、タグ付けしたばかりのドロップレットに関する詳細情報が含まれているはずです。

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

特定のドロップレットからタグを削除するには、最初にドロップレットのタグ付けに使用したのと同じデータを使用して、 `+ / v2 / tags // resources / +`にDELETEリクエストを発行できます。

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

これにより、リソースからタグが削除されます。

タグによる液滴の検索

特定のタグに関連付けられたすべてのドロップレットを見つけるには、GETリクエストを `+ / v2 / droplets?tag_name = +`に発行します。

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

これにより、要求されたタグでドロップレットがフィルタリングされます。

タグ付きドロップレットでのアクションの実行

特定のタグに関連付けられたすべてのドロップレットでいくつかのアクションを実行できます。

Data Notes

{"type":"power_cycle"}

Turn Droplets off and back on again.

{"type":"power_on"}

Power Droplets on. Must be off.

{"type":"power_off"}

Power Droplets off. Must be on.

{"type":"shutdown"}

Shutdown Droplets, similar to powering down from the command line.

{"type":"enable_private_networking"}

Enable private networking.

{"type":"enable_ipv6"}

Enable IPv6 addresses for Droplets.

{"type":"enable_backups"}

Enable backups for Droplets.

{"type":"disable_backups"}

Disable backups.

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

Take snapshots of Droplets. Droplets must be powered off first, and a name is mandatory.

アクションを実行するには、 `+ type `とアクションに必要な追加の値を指定するJSONデータとともにPOSTを ` / v2 / droplets / actions?tag_name = +`に送信します。

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

`+ / v2 / actions +`へのGETリクエストで、完了ステータスを含む最近のアクションの履歴を取得できます:

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

これは、アクションが完了したかまだ進行中かを判断するのに便利な方法です。

例:タグ付きドロップレットのスナップショット

「++」という名前のタグに関連付けられたドロップレットのコレクションがあり、それらすべてのスナップショットを取得するとします。

最初に `+ shutdown +`アクションを発行します:

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

すべてのドロップレットでシャットダウンが完了するのを待ち、スナップショットの「+ name 」値を含む「 snapshot +」アクションを発行します。

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

ドロップレットのサイズによっては、スナップショットの完了に1時間以上かかる場合があることに注意してください。 スナップショットが終了したら、 `+ power_on +`アクションでDropletsをオンラインに戻すことができます:

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

これにより、ドロップレットが再び起動します。

タグを削除する

タグ自体を削除し、すべてのリソースへの関連付けを削除するには、 `+ / v2 / tags / +`へのDELETEリクエストを使用します。

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

タグは完全に削除されます。

結論

タグ付けは単純な抽象化ですが、基本的なスクリプトツールと組み合わせることで、システムのインベントリと管理を行う強力なメカニズムを提供できます。

ここから、https://developers.digitalocean.com/documentation/v2/ [詳細なDigitalOcean APIドキュメント]をさらに掘り下げるか、https://developers.digitalocean.com/libraries/ [ラップするライブラリ一般的なプログラミング言語のAPI]。