如何使用Doctl,官方DigitalOcean命令行客户端

DigitalOcean的基于web的控制面板提供了管理Droplet方便,指向和点击界面。有很多次,但是,当一个命令行工具可以是一个优选的选择。 doctl,官方DigitalOcean命令行客户端,利用了DigitalOcean API提供存取大部分的帐户和Droplet的特点。

介绍

DigitalOcean的网络控制面板提供了一个方便的点击界面,用于管理Droplet。 然而,有时候,命令行工具可能是一个更好的选择:如果你有很多Droplet需要管理,需要从终端管理Droplets,而不需要图形化桌面,或者任务可以从可编写脚本的界面中受益。

输入doctl ,官方DigitalOcean命令行客户端,它充分利用了DigitalOcean API提供存取大部分的帐户和Droplet的特点。

本教程假定您可以访问具有命令行环境和活动帐户的本地客户端计算机。 它旨在作为开始使用该工具的快速指南,以及其大多数操作的参考。 由于doctl命令紧密平行的API,你也可能会受益于阅读API文档以及如何使用API DigitalOcean V2

安装

选项1 - 从GitHub下载发行版

访问发布页面doctl GitHub的项目,并找到相应的存档于您的操作系统和体系结构。 你可以从你的浏览器下载的存档或复制其URL,并将其检索到你的主目录wgetcurl

cd ~
wget https://github.com/digitalocean/doctl/releases/download/v1.4.0/doctl-1.4.0-linux-amd64.tar.gz

要么:

cd ~
curl -OL https://github.com/digitalocean/doctl/releases/download/v1.4.0/doctl-1.4.0-linux-amd64.tar.gz

提取二进制。 在GNU / Linux或OS X系统中,你可以使用tar

tar xf ~/doctl-1.4.0-linux-amd64.tar.gz

在Windows系统上,你应该能够双击zip压缩解压doctl可执行文件。

移动doctl二进制某处在你的路径。 例如,在GNU / Linux和OS X系统上:

sudo mv ~/doctl /usr/local/bin

选项2 - 从源代码构建

另外,如果你有一个 Go 的环境配置,可以安装的开发版本doctl从像这样的命令行:

go get github.com/digitalocean/doctl/cmd/doctl

:与大多数软件的开发版本,要知道,这其中可能包含错误。 发布版本一般会更加稳定。

使用DigitalOcean认证

在开始之前,你需要获取到存储在一个DigitalOcean访问令牌doctl配置文件。 这可以通过访问来完成的应用程序和API控制面板的部分。 你可以学习如何通过执行来生成令牌DigitalOcean API指南

一旦生成了令牌,就返回终端。 要设置doctl并授权其使用自己的帐户,请键入:

doctl auth init

系统将提示您输入您在DigitalOcean控制面板中生成的DigitalOcean访问令牌:

DigitalOcean access token: your_DO_token

输入令牌后,您应该会收到接受凭据的确认:

Validating token: OK

这将创建必要的目录结构和配置文件来存储凭据。 在OS X和Linux,配置文件可以被发现在${XDG_CONFIG_HOME}/doctl/config.yaml如果${XDG_CONFIG_HOME}环境变量设置,否则配置将被写入到~/.config/doctl/config.yaml 对于Windows用户来说,配置将在%APPDATA%/doctl/config/config.yaml

调用命令

doctl命令遵循现代命令行界面的通用模式。 通过向实用程序提供命令,一个或多个子命令以及有时指定特定值的一个或多个选项来调用单个特征。

命令被归为三个主要分为: account帐户相关的信息, auth与DigitalOcean认证,并compute管理基础设施。 这些,你将使用compute得最频繁。

为了看到命令的概述,你可以调用doctl本身:

doctl

要查看特定分组下的可用命令,请单独输入:

doctl compute

要查看特定命令的使用指南,请仅输入不带任何参数或选项的命令:

doctl compute droplet

读取数据的命令通常相当简洁。 例如,要获取您的Droplet列表:

doctl compute droplet list

更复杂的操作,例如创建Droplet,需要更长的命令和详细的参数。 为了创建一个名为test的NYC1地区的新1 GB的Droplet,运行64位的Debian 8,安装根访问SSH密钥,并启用备份,你会发出以下命令:

doctl compute droplet create test --size 1gb --image debian-8-x64 --region nyc1 --ssh-keys 4d:23:e6:e4:8c:17:d2:cf:89:47:36:b5:c7:33:40:4e --enable-backups
ID              Name    Public IPv4     Memory  VCPUs   Disk    Region  Image           Status
11450164        test                    1024    1       30      nyc1    Debian 8.3 x64  new

查找针对Droplet,图像,SSH密钥,区域等的唯一标识符

您可能会注意到,建立一个Droplet创建命令需要你指定了一系列的标识符,如nyc1为NYC1地区debian-8-x64为Debian的形象,一个SSH密钥指纹一样4d:23:e6:e4:8c:17:d2:cf:89:47:36:b5:c7:33:40:4e 其中的一些可以相对容易地猜到,像1gb的1 GB的Droplet,但其他人几乎没有明显的。 许多资源,例如Droplets和图像,由DigitalOcean数据库中唯一的值(通常是数字)来标识。

幸运的是,大多数命令所需的唯一标识符可以从API中检索:

命令 笔记
doctl compute droplet list 你的Droplet。 一些命令也采用名称; 大多数都需要“ID”列中的数值。
doctl compute ssh-key list 与您的帐户相关联的SSH密钥。 对于Droplet创建,您可以指定数字ID或指纹。
doctl compute region list 可用区域。 使用“Slug”列中的字符串。
doctl compute image list 可用的映像,包括快照,备份和基本发布映像。 使用“Slug”列中的字符串创建新的Droplet。
doctl compute size list 可用Droplet尺寸。 使用“Slug”列中的字符串。

创建,删除和检查Droplet

doctl compute droplet命令可以创建,删除和检查Droplet。 再次,对于具有个别Droplet工作大多数命令所需要的Droplet的唯一ID,并且这些可以在从输出找到doctl droplet list

doctl compute droplet 笔记
actions droplet_id 显示为Droplet执行的操作的历史记录。
backups droplet_id 列出Droplet的备份。
create name --size 1gb --image image_slug --region nyc1 --ssh-keys ssh_key_fingerprint 创建Droplet。 大小,图像,区域和SSH密钥都是必需的。
delete droplet_id 通过ID或名称删除Droplet。
get droplet_id 获取特定Droplet的详细信息。
kernels droplet_id 列出一个Droplet的内核。
list 列出您当前的Droplets。
neighbors droplet_id 列出运行在与特定Droplet相同的物理硬件上的Droplet。
snapshots droplet_id 列出Droplet的快照。

启动Droplet操作

doctl compute droplet-action命令,您可以触发一个Droplet的各种行动,包括电源管理操作,并切换就像备份和私人网络功能。

doctl compute droplet-action 笔记
disable-backups droplet_id 禁用Droplet的备份。
reboot droplet_id 重新启动Droplet。
power-cycle droplet_id 关闭Droplet,然后重新开启。
shutdown droplet_id 关闭Droplet。
power-off droplet_id 关闭Droplet电源。 Droplet必须打开。 通常最好从Droplet本身的命令行执行此操作。
power-on droplet_id 打开Droplet。 Droplet必须关闭电源。
power-reset droplet_id 电源复位Droplet。
enable-ipv6 droplet_id 为Droplet启用ipv6。
enable-private-networking droplet_id 启用专用网络的Droplet。
restore droplet_id --image-id image_id 将Droplet恢复到特定的备份映像。 image_id必须是Droplet的备份。
resize droplet_id --size 2GB --resize盘 调整Droplet的大小。 Droplet必须关闭电源。
rebuild droplet_id --image-id image_id 从特定图像重建Droplet。
rename droplet_id --droplet-name new_name 重命名Dropletnew_name
change-kernel droplet_id --kernel-id kernel_id 更改Droplet的内核kernel_id
snapshot droplet_id --snapshot-name snapshot_name 以一个Droplet的快照,并将其命名为snapshot_name Droplet必须关闭电源。

进行SSH连接

为了使用SSH连接到单个Droplet,通常需要知道其IP地址或完全限定域名。 您可以改用doctl连接到它的名字或数字ID的Droplet:

doctl compute ssh droplet_name
doctl compute ssh droplet_id

使用SSH密钥

您可以管理您的帐户相关联的SSH公钥doctl compute ssh-key的命令。 大多数引用SSH密钥的命令都接受密钥的数字ID或其指纹。

doctl compute ssh-key 笔记
list 列出与您的帐户相关联的SSH密钥。
get ssh_key_id 通过数字ID获取特定键的信息。 相同的list输出。
get ssh_key_fingerprint 通过指纹获取特定密钥的信息。
create new_key_name --public-key " public_key " 通过指定其内容将公钥与您的帐户相关联。
import new_key_name --public-key-file ~/.ssh/id_rsa.pub 通过指定源文件将公钥与您的帐户相关联。
delete ssh_key_id 通过数字ID从您的帐户中删除密钥。
delete ssh_key_fingerprint 通过指纹从您的帐户中删除密钥。
update ssh_key_id --key-name new_key_name 按数字ID更改键的名称。
update ssh_key_fingerprint --key-name new_key_name 通过指纹更改键的名称。

使用浮动IP

浮动IP是可以分配给您的某个Droplet的可公开访问的静态IP地址。 对于该功能的详细介绍,你可以阅读如何使用浮动IP地址上DigitalOcean 你可以操纵的浮动IP地址doctl compute floating-ip

doctl compute floating-ip 笔记
create --region nyc1 创建一个浮动IP nyc1
get floating_ip_address 获取浮动IP地址的详细信息。
delete floating_ip_address 删除浮动IP地址。
list 列出所有浮动IP地址。

使用域

doctl compute domain命令允许用于管理DNS记录。 简介DNS管理为主题的广泛概述系列。

doctl compute domain 笔记
create domain_name --ip-address droplet_ip_address 创建DropletIP地址域名记录。
list 列出域。
get domain_name 获取域记录。
delete domain_name 删除域。
records list --domain-name domain_name 列出域记录。

创建,删除和检查块存储卷

doctl compute volume命令可以用来创建,删除,或获取有关DigitalOcean的块存储卷的信息。 有关此功能的更多信息,请阅读我们的指南如何在DigitalOcean使用块存储

doctl compute volume 笔记
create volume_name --region volume_region --size volume_size --desc volume_description 创建卷。 名称,区域和大小是必需的。
list 列出卷。
get volume_ID 获取卷。
delete volume_ID 删除音量。

启动卷操作

doctl compute volume-action命令,您可以触发一个容积行动,包括附加卷和Droplet分离卷。

doctl compute volume-action 笔记
attach volume_id droplet_id 将卷附加到Droplet。
detach volume_id 从Droplet分离卷。

读取您的帐户的操作历史记录

DigitalOcean系统记录对您的Droplets,浮动IP和其他资源执行的操作的历史记录。 您可以通过访问该数据doctl compute action的命令:

doctl compute action list

您可以查看特定Droplet的操作,如:

doctl compute droplet actions droplet_id

检索您的帐户信息

您可以找到有关您帐户的基本详细信息,例如配置的电子邮件地址和Droplet限制:

doctl account get

由于API请求受到速率限制,因此最好查看您最近做出了多少请求,以及何时重置限制:

doctl account ratelimit

以JSON格式检索数据

在脚本环境中,或者当使用数据处理工具在命令行上工作时,从命令获取机器可读输出通常是有帮助的。 除了其默认的柱状文本格式, doctl如果有会产生详细的JSON输出, --output json选项:

doctl compute droplet get droplet_id --output json
{
  "id": droplet_id,
  "name": "droplet_name",
  "memory": 1024,
  "vcpus": 1,
  "disk": 30,
  "region": {
    "slug": "nyc3",
    "name": "New York 3",
    "sizes": [
...

除了作为大多数编程语言中的标准库可读的格式之外,JSON输出还包含比纯文本输出更多的细节,并且可以允许对Droplet和其他资源进行更精细的检查。

结论

doctl实用程序是在命令行管理Droplet和其他资源的有用工具。 它可以大大减少与日常开发和管理任务所需的基于Web的界面的手动交互。

除了了解底层API ,你可能想要探索的库,包装的流行编程语言的API ,以及工具,如Ansible自动化系统级任务。