介绍
DigitalOcean API 可访问 DigitalOcean 控制面板中的大多数功能,并提供从命令行或自己的代码中操作 Droplets 和其他资源的简单方法。
滴滴标记是一个新的功能,它允许您通过应用标签来组合和定位滴滴,以及通过特定标签在所有滴滴中启动操作。
前提条件
本指南使用curl
工具和Bash为所有示例,假设您熟悉使用DigitalOcean API,并且已经生成了一个 个人访问代币。
一旦你有一个代币,开始设置你的壳中的$TOKEN
变量。
1export TOKEN=your_personal_access_token
对于本文中的其他示例,我们将使用$TOKEN
,始终在一个双引用字符串中,以便其值,而不是字面字符串$TOKEN
被插入。
创建、列出和查看标签
在应用到资源之前可以创建标签,也可以在创建资源时创建和应用标签。
独立创建标签
使用curl
将 POST 发送到 API 终端,包括Content-Type
的标题、您的个人访问代码和一些 JSON 数据来指定标签名称。
1curl -X POST \
2-H 'Content-Type: application/json' \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"name":"tag_name"}' \
5"https://api.digitalocean.com/v2/tags"
1[secondary_label Output]
2{"tag":{"name":"tag_name","resources":{"droplets":{"count":0,"last_tagged":null}}}}
<$>[注]
注:此请求,就像任何其他请求对您的帐户进行更改一样,需要您的代币具有分配给它的写
范围。
在创建其他资源时创建和应用标签
资源也可以在创建时包含一个标签
属性. 这是在创建时应用的一系列标签名称. 尚不存在的标签将被创建以满足请求。
要创建 Droplet 并在创建时应用标签,您可以键入:
1curl -X POST \
2-H 'Content-Type: application/json' \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"name":"example.com","region":"nyc3","size":"512mb","image":"ubuntu-14-04-x64","tags":["tag_name","another_tag"]}' \
5"https://api.digitalocean.com/v2/droplets"
这将创建一个新的 Droplet 标签 tag_name
和 another_tag
应用. 如果上一节中的示例被执行,那么这个命令将应用现有的 tag_name
标签,并创建并应用 another_tag
标签到 Droplet。
现有日志列表
您可以列出您当前的所有标签,并通过 GET 请求将其列为 /v2/tags
:
1curl -X GET \
2-H "Authorization: Bearer $TOKEN" \
3"https://api.digitalocean.com/v2/tags"
1[secondary_label Output]
2{"tags":[{"name":"tag_name","resources":{"droplets":{"count":0,"last_tagged":null}}}],"links":{},"meta":{"total":1}}
若要查看单个标签,请使用 GET 请求到 /v2/tags/tag_name
:
1curl -X GET \
2-H "Authorization: Bearer $TOKEN" \
3"https://api.digitalocean.com/v2/tags/tag_name"
1[secondary_label Output]
2{"tag":{"name":"tag_name","resources":{"droplets":{"count":0,"last_tagged":null}}}}
上面的示例输出简短,请注意resources.droplets.last_tagged
属性为null
。一旦将标签与一个或多个 Droplets 关联,此属性将包含最近标记的 Droplets 的详细信息。
标签和解标滴滴
该标签也可以应用到现有资源. 在此写作时唯一受支持的资源是Droplet,但最终其他资源将可用。
滴滴与使用其id
属性的标签相关联,您可以获取包含滴滴
数列的JSON对象,其中列出您的所有滴滴与GET请求到/v2/droplets
:
1curl -X GET \
2-H "Authorization: Bearer $TOKEN" \
3"https://api.digitalocean.com/v2/droplets"
一旦你知道Droplet的id
,你可以通过POSTing将其与标签关联到/v2/tags/tag_name/resources
,包括将resource_id
设置为Droplet id
和resource_type
设置为droplet
字符串的JSON数据:
1curl -X POST \
2-H 'Content-Type: application/json' \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"resources":[{"resource_id":"droplet_id","resource_type":"droplet"}]}' \
5"https://api.digitalocean.com/v2/tags/tag_name/resources"
再次尝试对标签进行 GET 请求,并且resources.droplets.last_tagged
属性应该包含您刚刚标记的 Droplet 的详细信息:
1curl -X GET \
2-H "Authorization: Bearer $TOKEN" \
3"https://api.digitalocean.com/v2/tags/tag_name"
若要从特定 Droplet 中删除标签,您可以向 /v2/tags/tag_name/resources/
发出 DELETE 请求,其中包含您在标签 Droplet 时使用的相同数据:
1curl -X DELETE \
2-H 'Content-Type: application/json' \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"resources":[{"resource_id":"droplet_id","resource_type":"droplet"}]}' \
5"https://api.digitalocean.com/v2/tags/tag_name/resources"
这将从资源中删除标签。
查找Dropplets by Tag
要找到与特定标签相关的所有 Droplets,请发出 GET 请求到 /v2/droplets?tag_name=tag_name
:
1curl -X GET \
2-H "Authorization: Bearer $TOKEN" \
3"https://api.digitalocean.com/v2/droplets?tag_name=tag_name"
这将通过请求的标签过滤您的Dropplets。
在标记 Droplets 上执行操作
您可以在与特定标签相关的所有 Droplets 上执行若干操作:
QQ 数据 QQ 注释 QQ
QQ----------------------------------+------"类型":"功率_循环" QQ. QQ 关闭并重新打开 Droplets 。
QQ"类型":"power_on" QQ Power Droplets 打开. 一定关了。 电源滴出。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}一定上线了 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}"shutdown" {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得怎么样? QQ 关闭 Dropplets, 类似于从命令行下放电. QQ
QQ"类型":"enable_private_networking" QQ QQ 启用 [私有网络] (https://andsky.com/tech/tutorials/how-to-set-up-and-use-digitalocean-private-networking). QQ
QQ"类型" :"enable_ipv6" QQ QQ 启用 Droplets 的 [IPv6 地址] (https://andsky.com/tech/tutorials/how-to-enable-ipv6-for-digitalocean-droplets ).
QQ"类型" :"enable_backups" QQ QQ 启用 Droplets 的备份 。
QQ"类型" : 失效_ 备份
_% QQ 禁用备份. QQ
QQ"类型" :"snapshot","name":"snapshot_name" QQ 取出 Droplets的快照. 首先必须切断电源,必须使用 " 姓名 " 。 |
若要执行一个操作,请将 POST 发送到 /v2/droplets/actions?tag_name=tag_name
,并将 JSON 数据指定为 `type' 和任何其他需要的值:
1curl -X POST \
2-H "Content-Type: application/json" \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"type":"action_type"}' \
5"https://api.digitalocean.com/v2/droplets/actions?tag_name=tag_name"
您可以获取最近操作的历史记录,包括完成状态,通过向/v2/actions
的 GET 请求:
1curl -X GET \
2-H "Authorization: Bearer $TOKEN" \
3"https://api.digitalocean.com/v2/actions"
这是确定行动是否已完成或仍在进行的一个有用的方法。
例子: Snapshotting 标签 滴滴
假设你有一组与名为fileserver
的标签相关的Dropplets,你想拍摄它们。
第一個問題是「關閉」行動:
1curl -X POST \
2-H "Content-Type: application/json" \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"type":"shutdown"}' \
5"https://api.digitalocean.com/v2/droplets/actions?tag_name=fileserver"
等待所有 Droplets 关闭完成,并发出快照
操作,包括快照的名称
值:
1curl -X POST \
2-H "Content-Type: application/json" \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"type":"snapshot", "name":"snapshot_name"}' \
5"https://api.digitalocean.com/v2/droplets/actions?tag_name=fileserver"
请记住,截图可能需要一个小时或更长的时间来完成,取决于Dropplet的大小。当截图完成后,您可以通过power_on
操作将Dropplets带回网络:
1curl -X POST \
2-H "Content-Type: application/json" \
3-H "Authorization: Bearer $TOKEN" \
4-d '{"type":"power_on"}' \
5"https://api.digitalocean.com/v2/droplets/actions?tag_name=fileserver"
这将再次开始滴滴。
删除日期
您可以删除标签本身,并删除其与所有资源的关联,通过删除请求到 /v2/tags/tag_name
:
1curl -X DELETE \
2-H 'Content-Type: application/json' \
3-H "Authorization: Bearer $TOKEN" \
4"https://api.digitalocean.com/v2/tags/tag_name"
该标签将被完全删除。
结论
标签是一种简单的抽象,但与基本的脚本工具相结合,它可以提供一个强大的库存和管理系统的机制。
从这里,您可能希望深入研究 详细的 DigitalOcean API 文档,或研究 包装流行的编程语言 API 的库。