如何使用Droplet标记与DigitalOcean API

Droplet标签是一项新功能,通过DigitalOcean控制面板还没有暴露出来,但可用的API的用户。此功能可让您组和所有Droplet与特定的标签应用标签,以及发起行动找到Droplet。本指南解释了卷曲功能的基本用法。

介绍

DigitalOcean API提供对DigitalOcean控制面板中大多数功能的访问,并提供了一种直接的方式来从命令行或您自己的代码处理Droplet和其他资源。

Droplet标记是一项新功能。 它尚未通过控制面板暴露, 可向API的用户。 该功能允许您通过应用标记对Droplet进行分组和定位,以及使用特定标记启动所有Droplet中的操作。

先决条件

本指南使用curl的所有例子程序和Bash。 它假定您熟悉使用DigitalOcean的API,并且已经产生了个人的访问令牌 有关此过程的详细信息,以及API使用的基础知识,请参阅如何使用API DigitalOcean V2

一旦你有一个令牌,通过设置开始$TOKEN在你的shell变量。 export命令确保子进程可以读取变量:

export TOKEN=your_personal_access_token

我们将使用$TOKEN本文档中的例子休息,总是一个双引号字符串,这样它的价值,而不是文字串里面$TOKEN ,将进行插值。 如果您收到错误,首先确保该值在您的当前shell中正确设置。

创建,列出和查看标记

必须先创建标记,然后才能将其应用于资源。 使用curl到POST发送到API端点,包括标头的Content-Type ,您的个人访问令牌,以及一些JSON数据来指定标记的名称。 用您的期望的变量名tag_name

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

:此要求,如使更改帐户任何其他要求,要求你的令牌“写”分配给它的范围。

你可以列出当前的所有标签用GET请求/v2/tags

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

要查看单个标签,使用GET请求/v2/tags/ tag_name

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

上面的示例输出是简短的。 请注意, resources.droplets.last_tagged属性为null 将标记与一个或多个Droplet关联后,此属性将包含有关最后标记的Droplet的详细信息。

标记和取消标记

一旦你创建了一个标签,你可以将它应用到资源 在撰写本文时,唯一支持的资源是Droplet,但最终其他资源将可用。

Droplet被关联到使用其标签id属性。 您可以检索JSON对象包含droplets阵列列出所有你的Droplet用GET请求/v2/droplets

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

一旦你知道一个Droplet的id ,你可以用一个标签张贴联想/v2/tags/ tag_name /resources ,包括这台JSON数据resource_idDroplet的idresource_type字符串droplet

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" 

再次尝试为标记的GET请求,并resources.droplets.last_tagged属性应包含您刚刚标记的Droplet的详细信息:

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

从一个特定的Droplet删除标签,可以发出DELETE请求/v2/tags/ tag_name /resources/ ,与你用来标记的Droplet在第一时间相同的数据:

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" 

通过标签查找Droplet

要找到一个特定的标签,发出GET请求相关联的所有Droplet/v2/droplets?tag_name= tag_name

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

对标记的Droplet执行操作

您可以对与特定标记关联的所有Droplets执行多个操作:

数据 笔记
{"type":"power_cycle"} 关闭Droplet,然后重新开启。
{"type":"power_on"} 电源开。 必须关闭。
{"type":"power_off"} 电源关闭。 必须打开。
{"type":"shutdown"} 关闭Droplets,类似于从命令行关闭。
{"type":"enable_private_networking"} 启用专用网络
{"type":"enable_ipv6"} 启用IPv6地址的Droplet。
{"type":"enable_backups"} 启用Droplet的备份。
{"type":"disable_backups"} 禁用备份。
{"type":"snapshot, "name": " snapshot_name "} 拍摄Droplet的快照。 Droplet必须先关闭电源,并且name是强制性的。

为了执行一个动作,发个帖子/v2/droplets/actions?tag_name= tag_name使用JSON数据指定type和行动所需的任何额外的值:

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"

您可以检索最近的行动,包括其完成状态的历史,用GET请求/v2/actions

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

这是确定操作是否已完成或仍在进行的有用方法。

示例:快照标记的Droplet

假设你有一个名为标记关联Droplet库fileserver ,并希望快照他们。

首先发出shutdown动作:

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"

等待关机所有Droplet完成,并出具snapshot行动,包括一个name快照值:

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"

请记住,快照可能需要一个小时或更长时间才能完成,具体取决于Droplet的大小。 一旦快照完成后,你可以用一个带Droplet重新联机power_on行动:

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"

删除标签

您可以删除标签本身,并删除其关联的所有资源,用DELETE请求/v2/tags/ tag_name

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

结论

标记是一个简单的抽象,但与基本的脚本工具结合,它可以提供一个强大的机制来清点和管理系统。

从这里,你不妨深入挖掘了详细DigitalOcean API文档 ,或调查的库,包装的流行编程语言的API