公式のDigitalOceanコマンドラインクライアントであるDoctlの使用方法

このチュートリアルの以前のバージョンは、Brennen Bearnesによって作成されました。

前書き

DigitalOceanのWebベースのコントロールパネルは、ドロップレットを管理するためのポイントアンドクリックインターフェイスを提供します。 ただし、管理するドロップレットが多数ある場合、グラフィカルデスクトップを使用せずにターミナルからドロップレットを管理する必要がある場合、またはスクリプト可能なインターフェイスの恩恵を受けるタスクがある場合は、コマンドラインツールを使用することをお勧めします。

doctlは、公式のDigitalOceanコマンドラインクライアントです。 the DigitalOcean APIを使用して、ほとんどのアカウントおよびドロップレット機能へのアクセスを提供します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

このチュートリアルは、doctlのほとんどの操作のリファレンスとして意図されています。 doctlコマンドはAPIと密接に並行しているため、API documentationHow To Use the DigitalOcean API v2を読むことも役立つ場合があります。

一般的なdoctlの使用法

コマンドの呼び出し

doctlでは、ユーティリティにコマンド、1つ以上のサブコマンド、場合によっては特定の値を指定する1つ以上のオプションを指定することにより、個々の機能が呼び出されます。 コマンドは、3つの主要なカテゴリに分類されます。

  • アカウント関連情報のaccount

  • DigitalOceanで認証するためのauth

  • インフラストラクチャを管理するためのcompute

すべてのコマンドの概要を表示するには、doctlを単独で呼び出すことができます。 3つの主要なカテゴリのいずれかで使用可能なすべてのコマンドを表示するには、doctl computeのようにdoctl categoryを使用できます。 特定のコマンドの使用ガイドについては、doctl compute droplet --helpのように、--helpフラグを指定してコマンドを入力してください。

JSON形式でのデータの取得

スクリプト環境で、またはデータ処理ツールを使用してコマンドラインで作業する場合、多くの場合、コマンドから機械可読の出力を取得すると役立ちます。

デフォルトでは、doctlは人間が読めるテキストの列に出力をフォーマットしますが、--output jsonオプションを使用して詳細なJSON出力を生成できます。

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

JSON出力は、ほとんどのプログラミング言語の標準ライブラリで読み取り可能な形式であることに加えて、Dropletおよびその他のリソースのより詳細な検査を可能にする場合があります。

フォーマット

出力から一連のフィールドのみを取得すると便利な場合がよくあります。 これを行うには、--formatフラグを使用できます。このフラグは、フィールドのリストを名前で取得します。 たとえば、ドロップレットのID、名前、およびIPアドレスのみを取得する場合、次のコマンドを使用できます。

doctl compute droplet list --format "ID,Name,PublicIPv4"
Sample outputID          Name       Public IPv4
50513569    doctl-1    67.205.152.65
50513570    test       67.205.148.128
50513571    node-1     67.205.131.88

テンプレート

doctl compute droplet getコマンドは、出力テンプレートをサポートしており、出力の形式をカスタマイズできます。 この機能を使用するには、--templateフラグを使用してthe Go-formatted templateを指定します。

たとえば、ドロップレットの名前をdroplet_name: droplet_nameの形式で取得する場合は、次のgetコマンドを使用します。

doctl compute droplet get 12345678 --template "droplet_name: {{ .Name}}
Outputdroplet_name: ubuntu-1gb-nyc3-01

リソースの使用

リソースのリスト

ドロップレットなどのリソースのリストを取得するには、パラメーターなしでlistコマンドを使用できます。

doctl compute droplet list
Sample output for list commandID          Name       Public IPv4       Private IPv4    Public IPv6    Memory    VCPUs    Disk    Region    Image                 Status    Tags
50513569    test-1     67.205.152.65                                    512       1        20      nyc1      Ubuntu 16.04.2 x64    active
50513571    test-2      67.205.131.88                                    512       1        20      nyc1      Ubuntu 16.04.2 x64    active
50513570    site       67.205.148.128                                   512       1        20      nyc1      Ubuntu 16.04.2 x64    active

listコマンドは、オプションのパラメーターとしてglobをサポートします。 globは、特定のリソースを名前でフィルタリングするために使用できるワイルドカード文字を使用してパターンを表します。 たとえば、名前がtestで始まるドロップレットのリストを取得するには、次のコマンドを使用できます。

doctl compute droplet list 'test*'
Sample output for list command with 'doctl-' as globID          Name       Public IPv4       Private IPv4    Public IPv6    Memory    VCPUs    Disk    Region    Image                 Status    Tags
50513569    test-1     67.205.152.65                                    512       1        20      nyc1      Ubuntu 16.04.2 x64    active
50513571    test-2      67.205.131.88                                    512       1        20      nyc1      Ubuntu 16.04.2 x64    active

リソースを作成する

リソースを作成するには、より詳細なパラメーターを持つより長いコマンドが必要です。 ドロップレットを作成するには、使用する画像、データセンターの地域、および関連するスラッグを使用して必要なドロップレットの種類を指定する必要があります。 使用するスラッグを見つけるには、New Size Slugs for Droplet Plan Changes
を参照してください。 Alternatively, run the doctl compute size list command.

たとえば、次のコマンドは、1GBのメモリ、1つのCPU、SSHキー、およびバックアップが有効になっているtestという名前の64ビットDebian8ドロップレットを作成します。

doctl compute droplet create test --size s-1vcpu-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

次の出力が表示されます。

Sample Droplet creation outputID              Name    Public IPv4     Memory  VCPUs   Disk    Region  Image           Status
11450164        test                    1024    1       30      nyc1    Debian 8.3 x64  new

リソースを削除するには、引数としてリソースIDが必要です。または、特定のリソースにIDが存在しない場合はリソース名が必要です(例: タグ)。 意図を確認するには、確認の質問にyまたはyesで回答して、すべての削除アクションを確認する必要があります。

doctl compute droplet delete 123456
OutputWarning: Are you sure you want to delete droplet(s) (y/N) ?

回答を提供しない、またはyまたはyesとは異なる回答を提供すると、リソースを削除せずにアクションがキャンセルされます。 --f--force)フラグを使用して、明示的に指定せずにdoctlに肯定的な回答を想定させることができます。

doctl compute droplet delete -f 123456

リソースの一意の識別子の検索

ドロップレット作成コマンドには、NYC1リージョンのnyc1、Debianイメージのdebian-8-x644d:23:e6:e4:8c:17:d2:cf:89:47:36:b5:c7:33:40:4eのようなSSHキーフィンガープリントなどの一連の識別子が必要です。

ドロップレットや画像などの多くのリソースは、DigitalOceanのデータベース内で一意の値(多くの場合数値)によって識別されます。

APIからほとんどのコマンドに必要な一意の識別子を取得できます。

コマンド ノート

doctl compute droplet list

あなたの液滴。 一部のコマンドにも名前が付けられています。ほとんどの場合、ID列の数値が必要です。

doctl compute ssh-key list

アカウントに関連付けられているSSHキー。 ドロップレットの作成では、numeric IDまたはfingerprintのいずれかを指定できます。

doctl compute region list

利用可能な地域。 Slug列の文字列を使用します。

doctl compute image list

スナップショット、バックアップ、基本配布イメージなどの利用可能なイメージ。 新しいドロップレットを作成するには、Slug列の文字列を使用します。

doctl compute size list

利用可能な液滴サイズ。 Slug列の文字列を使用します。

doctl compute tag list

利用可能なタグ。 Name列の文字列を使用します。

液滴の使用

ドロップレットの作成、削除、検査

doctl compute dropletコマンドを使用すると、ドロップレットを作成、削除、および検査できます。 繰り返しますが、個々のドロップレットを操作するためのほとんどのコマンドには、ドロップレットの一意のIDが必要であり、これらはdoctl droplet listからの出力にあります。

doctl compute dropletサブコマンド ノート

actions droplet_id

ドロップレットに対して実行されたアクションの履歴を表示します。

backups droplet_id

ドロップレットのバックアップを一覧表示します。

create name --size s-1vcpu-1gb --image image_slug --region nyc1

ドロップレットを作成します。 サイズ、画像、地域はすべて必須です。

delete droplet_id_or_name

IDまたは名前でドロップレットを削除します。

get droplet_id

特定の液滴の詳細を取得します。

kernels droplet_id

ドロップレットのカーネルを一覧表示します。

list

現在の液滴を一覧表示します。

neighbors droplet_id

特定のドロップレットと同じ物理ハードウェアで実行されているドロップレットを一覧表示します。

snapshots droplet_id

ドロップレットのスナップショットを一覧表示します。

tag droplet_id/droplet_name

ドロップレットにタグを付けます。

untag droplet_id/droplet_name

ドロップレットのタグを外します。

ドロップレットアクションの開始

doctl compute droplet-actionコマンドを使用すると、電源管理アクションやバックアップやプライベートネットワークなどの機能の切り替えなど、ドロップレットのさまざまなアクションをトリガーできます。

doctl compute droplet-actionサブコマンド ノート

get droplet_id --action-id action_id

ドロップレットでのアクションの詳細を取得します。

disable-backups droplet_id

ドロップレットのバックアップを無効にします。

reboot droplet_id

ドロップレットを再起動します。

power-cycle droplet_id

ドロップレットをオフにしてから、再びオンにします。

shutdown droplet_id

ドロップレットをシャットダウンします。

power-off droplet_id

ドロップレットの電源を切ります。 ドロップレットの電源を入れる必要があります。 データの損失を防ぐために、通常はドロップレット自体のコマンドラインからこれを行うのが最善です。

power-on droplet_id

ドロップレットの電源を入れます。 ドロップレットの電源を切る必要があります。

power-reset droplet_id

ドロップレットの電源をリセットします。

enable-ipv6 droplet_id

ドロップレットのipv6を有効にします。

enable-private-networking droplet_id

ドロップレットのprivate networkingを有効にします。

upgrade droplet_id

ドロップレットをアップグレードします。

restore droplet_id --image-id image_id

ドロップレットを特定のバックアップイメージに復元します。 image_idは、ドロップレットのバックアップである必要があります。

resize droplet_id --size 2gb

ドロップレットのサイズを変更します。 ドロップレットの電源を切る必要があります。 デフォルトでは、ディスクのサイズは変更されないため、Dropletをダウングレードできます。 --resize-diskフラグを使用してディスクのサイズを変更できます。

rebuild droplet_id --image-id image_id

特定のイメージからドロップレットを再構築します。

rename droplet_id --droplet-name new_name

ドロップレットの名前をnew_nameに変更します。

change-kernel droplet_id --kernel-id kernel_id

ドロップレットのカーネルをkernel_idに変更します。

snapshot droplet_id --snapshot-name snapshot_name

ドロップレットのスナップショットを取り、snapshot_nameという名前を付けます。

SSHでの作業

SSH接続の作成

SSHで個々のDropletに接続するには、通常、IPアドレスまたは完全修飾ドメイン名のいずれかを知っている必要があります。 代わりに、doctlを使用して、名前、数値ID、またはプライベートIPでドロップレットに接続できます。

doctl compute ssh droplet_name
doctl compute ssh droplet_id
doctl compute ssh --ssh-private-ip droplet_private_ip

また、--ssh-commandフラグを使用してSSH接続が確立されたら実行するコマンドを提供できます。 これによりコマンドが実行され、その出力がローカル端末に出力され、SSHセッションが閉じます。

doctl compute ssh --ssh-command command

[.note]#Note:SSHコマンド転送は現在Windowsでは使用できません。

デフォルトのSSHユーザー名はroot(CoreOSの場合はcore)で、デフォルトのポートは22です。 フラグを使用して、デフォルト以外の値を設定し、他の機能を有効にできます。

Flag 説明

--ssh-user string

SSHセッションに使用するユーザー名。

--ssh-port int

SSHセッションのポート。

--ssh-key-path string

SSHキーへのパス。

--ssh-agent-forwarding

エージェント転送を有効にします。

構成ファイルのデフォルト構成値を変更することもできます。 The project’s README fileには、これを行う方法の詳細があります。

SSHキーの使用

doctl compute ssh-keyコマンドを使用して、アカウントに関連付けられたSSH公開鍵を管理できます。 SSHキーを参照するほとんどのコマンドは、キーの数値IDまたはそのフィンガープリントを受け入れます。

doctl compute ssh-keyサブコマンド ノート

list

アカウントに関連付けられているSSHキーを一覧表示します。

get ssh_key_id_or_fingerprint

数値IDまたはキーのフィンガープリントによって、特定のキーに関する情報を取得します。

create new_key_name --public-key "public_key"

公開鍵の内容を指定して、公開鍵をアカウントに関連付けます。

import new_key_name --public-key-file ~/.ssh/id_rsa.pub

ソースファイルを指定して、公開鍵をアカウントに関連付けます。

delete ssh_key_id_or_fingerprint

数値IDまたは指紋でアカウントからキーを削除します。

update ssh_key_id_or_fingerprint --key-name new_key_name

数字のIDまたは指紋でキーの名前を変更します。

フローティングIPの使用

フローティングIPは、パブリックにアクセス可能な静的IPアドレスで、ドロップレットの1つに割り当てることができます。 機能の詳細については、How To Use Floating IPs on DigitalOceanを参照してください。 フローティングIPはdoctl compute floating-ipで操作できます。

doctl compute floating-ipサブコマンド ノート

list

すべてのフローティングIPアドレスを一覧表示します。

get floating_ip_address

フローティングIPアドレスの詳細を取得します。

create --region nyc1

nyc1領域にフローティングIPを作成します。

delete floating_ip_address

フローティングIPアドレスを削除します。

フローティングIPをドロップレットに割り当てる

doctl compute floating-ip-actionコマンドは、ドロップレットからのフローティングIPの割り当てまたは割り当て解除に使用されます。

doctl compute floating-ip-actionサブコマンド ノート

assign floating_ip droplet_id

フローティングIPを数値IDでドロップレットに割り当てます。

unassign floating_ip

フローティングIPの割り当てを解除します。

get floating_ip action_id

フローティングIPアクションの詳細を数値IDで取得します。

ドメインでの作業

doctl compute domainコマンドは、ドメインを管理するために使用されます。 主題の大まかな概要については、Introduction to Managing DNS seriesを参照してください。

doctl compute domainサブコマンド ノート

list

ドメインを一覧表示します。

create domain_name --ip-address droplet_ip_address

droplet_ip_addressのデフォルトレコードを使用してドメインを作成します。

get domain_name

ドメインレコードを取得します。

delete domain_name

ドメインを削除します。

ドメインレコードの管理

doctl compute domain recordsコマンドを使用して、ドメインのDNSレコードに関する情報を作成、削除、更新、または取得できます。

doctl compute domain recordsサブコマンド ノート

list domain_name

特定のドメインのレコードを一覧表示します。

create domain_name --record-type record_type

ドメインのレコードを作成します。

delete domain_name record_id

数値IDでレコードを削除します。

update domain_name --record-id record_id

数値IDでレコードを更新します。

ブロックストレージボリュームの使用

ブロックストレージボリュームの作成、削除、検査

doctl compute volumeコマンドを使用して、DigitalOceanのブロックストレージボリュームに関する情報を作成、削除、または取得できます。 この機能の詳細については、How To Use Block Storage on DigitalOceanに関するガイドを参照してください。

doctl compute volumeサブコマンド ノート

list

ボリュームを一覧表示します。

create volume_name --region volume_region --size volume_size

ボリュームを作成します。 名前、地域、サイズは必須です。

get volume_ID

数値IDでボリュームを取得します。

delete volume_ID

ボリュームを削除します。

snapshot volume_ID

スナップショットボリューム。

ボリュームアクションの開始

doctl compute volume-actionコマンドを使用すると、ボリュームのドロップレットへのアタッチやドロップレットからのデタッチなど、ボリュームのアクションをトリガーできます。

doctl compute volume-actionサブコマンド ノート

attach volume_id droplet_id

ドロップレットにボリュームを添付します。

detach volume_id droplet_id

ドロップレットからボリュームを切り離します。

resize volume_id --region volume_region --size new_size

ボリュームのサイズを変更します。

ロードバランサーの使用

doctl compute load-balancerコマンドを使用して、DigitalOceanのロードバランサーに関する情報を作成、削除、または取得できます。 この機能の詳細については、Introduction to DigitalOcean Load Balancersをお読みください。

doctl compute load-balancerサブコマンド ノート

list

ロードバランサーを一覧表示します。

create --name lb_name --region lb_region --tag-name tag_name --forwarding-rules forwarding_rule

ロードバランサーを作成します。 名前、地域、ドロップレットIDのタグまたはリスト、および少なくとも1つの転送ルールは必須です。

update --name lb_name --region lb_region --tag-name tag_name --forwarding-rules forwarding_rule

ロードバランサーを作成します。 名前、地域、ドロップレットIDのタグまたはリスト、および少なくとも1つの転送ルールは必須です。

get lb_ID

ロードバランサーを入手します。

delete lb_ID

ロードバランサーを削除します。

add-droplets lb_ID --droplet-ids droplet_ID

ドロップレットをロードバランサーに追加します。

remove-droplets lb_ID --droplet-ids droplet_ID

ロードバランサーからドロップレットを削除します。

add-forwarding-rules lb_ID --forwarding-rules forwarding_rule

ロードバランサーに転送ルールを追加します。

remove-forwarding-rules lb_ID --forwarding-rules forwarding_rule

ロードバランサーから転送ルールを削除します。

doctlの引数として使用する場合、転送ルールは次のように表現する必要があります:entry_protocol:protocol,entry_port:port,target_protocol:protocol,target_port:port

証明書の管理

doctl compute certificateサブコマンドを使用すると、SSL証明書、秘密鍵、および証明書チェーンをアップロードおよび管理できます。

doctl compute certificateサブコマンド ノート

list

すべての証明書を一覧表示します。

get certificate_id

IDで証明書を取得します。

create --name certificate_name --leaf-certificate-path leaf_certificate_path

証明書を作成します。 名前とリーフ証明書パスは必須です。

delete certificate_id

IDで証明書を削除します。

スナップショットの使用

doctl compute snapshotコマンドを使用して、ドロップレットおよびボリュームスナップショットに関する情報を一覧表示、削除、または取得できます。

doctl compute snapshotサブコマンド ノート

list

すべてのスナップショットを一覧表示します。

get snapshot_ID

スナップショットを取得します。

delete snapshot_ID

スナップショットを削除します。

新しいスナップショットを作成するには、関連するリソースコマンドツリーの下で適切なコマンドを使用する必要があります。 例えば:

  • doctl compute droplet-action snapshot droplet_IDは、ドロップレットからスナップショットを作成します。

  • doctl compute volume snapshot volume_IDは、ボリュームからスナップショットを作成します。

画像の操作

doctl compute imageコマンドを使用すると、配布イメージ、アプリケーションイメージ、およびバックアップやスナップショットなどのユーザー作成イメージを含むすべてのイメージを管理できます。 スナップショットの管理にはsnapshotコマンドを使用することをお勧めします。これは、より詳細な情報を提供し、削除機能を備え、ブロックストレージスナップショットをサポートするためです。

doctl compute imageサブコマンド ノート

list --public

すべての画像を一覧表示します。

list-distribution --public

利用可能なすべての配布イメージを一覧表示します。

list-application --public

使用可能なすべてのOne-Click Applicationsを一覧表示します。

list-user

ユーザーが作成したすべての画像を一覧表示します。

get image_id

IDで画像を取得します。

update image_id --name image_name

イメージの名前を更新します。 名前は必須です。

delete image_id

IDで画像を削除します。

画像アクションの呼び出し

doctl compute image-actionコマンドを使用すると、画像を転送し、画像に対して呼び出されたアクションの詳細を取得できます。

doctl compute image-actionサブコマンド ノート

get image_id --action-id action_id

IDで画像のアクションを取得します。 アクションIDは必須です。

transfer image_id --region region

画像を別のリージョンに転送します。 画像IDと地域は必須です。

ファイアウォールの使用

doctl compute firewallコマンドを使用すると、ルールの作成と保守を含め、ファイアウォールを作成および管理できます。 doctlを使用したファイアウォールの管理の詳細については、How To Secure Web Server Infrastructure With DigitalOcean Cloud Firewalls Using Doctlチュートリアルを確認してください。

doctl compute firewallコマンド ノート

list

すべてのファイアウォールを一覧表示します。

list-by-droplet droplet_id

ドロップレットの数値IDですべてのファイアウォールを一覧表示します。

create --name firewall_name --inbound-rules inbound_rules --outbound-rules outbound_rules

ファイアウォールを作成します。 名前と、少なくともインバウンドまたはアウトバウンドのルールは必須です。

update firewall_id --name firewall_name --inbound-rules inbound_rules --outbound-rules outbound_rules

ファイアウォールを更新します。 数値ID、名前、および少なくともインバウンドまたはアウトバウンドのルールは必須です。

get firewall_id

数値IDでファイアウォールを取得します。

delete firewall_id

数値IDでファイアウォールを削除します。

add-droplets firewall_id --droplet-ids droplet_IDs

数値IDでドロップレットをファイアウォールに追加します。

remove-droplets firewall_id --droplet-ids droplet_IDs

数値IDでファイアウォールからドロップレットを削除します。

add-tags firewall_id --tag-names tags

ファイアウォールにタグを追加します。

remove-tags firewall_id --tag-names tags

ファイアウォールからタグを削除します。

add-rules firewall_id --inbound-rules inbound_rules --outbound-rules outbound_rules

インバウンドまたはアウトバウンドルールをファイアウォールに追加します。

remove-rules firewall_id --inbound-rules inbound_rules --outbound-rules outbound_rules

ファイアウォールへのインバウンドまたはアウトバウンドルールを削除します。

doctlの引数として使用する場合、インバウンドまたはアウトバウンドのルールは次のように表現する必要があります:protocol:protocol,ports:ports,droplet_id:droplet-id

タグの使用

タグは、カスタムラベルをリソースに適用するために使用され、簡単にフィルタリングできます。 タグの詳細については、the How To Tag DigitalOcean Droplets tutorialを参照してください。

doctl compute tagサブコマンド ノート

create tag_name

タグを作成します。

get tag_name

名前でタグを取得します。

list

すべてのタグを一覧表示します。

delete tag_name

名前でタグを削除します。

アカウントでの作業

アカウントのアクションの履歴を読む

DigitalOceanシステムは、ドロップレット、フローティングIP、およびその他のリソースで実行されたアクションの履歴を記録します。 このデータには、doctl compute actionコマンドを使用してアクセスできます。

doctl compute action list

次のような特定のドロップレットのアクションを確認できます。

doctl compute droplet actions droplet_id

アカウント情報の取得

設定した電子メールアドレスやドロップレット制限など、アカウントに関する基本的な詳細を確認できます。

doctl account get

APIリクエストはレート制限されているため、最近行ったリクエストの数と、制限がリセットされる時期を確認すると役立つ場合があります。

doctl account ratelimit

結論

doctlユーティリティは、コマンドラインでドロップレットやその他のリソースを管理するための便利なツールです。 毎日の開発および管理タスクに必要なWebベースのインターフェイスとの手動のやり取りの量を大幅に削減できます。

the underlying APIについて学習することに加えて、システムレベルのタスクを自動化するためにlibraries which wrap the API for popular programming languagestools such as Ansibleを調べることもできます。

Related