介绍
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"
Output{"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"
Output{"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"
Output{"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_id
Droplet的id
和resource_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 。