APIで仮想サーバーを作成する
APIを使用して仮想サーバーを作成する方法をご案内します。
以下ではcurlコマンドを用いたAPIの操作手順となりますので、任意のサーバーにて実行ください。
なお、本リファレンスに掲載しておりますフレーバーIDやイメージID等の一覧につきましては、実際のデータと更新に差が出る場合がございますので、ご利用の際はAPIにて最新版の一覧をご取得ください。
トークンの発行
[1] | API認証を行い、トークンの取得ならびに発行されたトークンIDを確認します。 ※ 対象のAPIリファレンスは こちら |
---|
認証のエンドポイント | コントロールパネルの「サービス」メニュー内にある「API情報」をご確認ください。 |
---|---|
APIユーザー名 | 「サーバー操作権限」が付与されているコントロールパネルのアカウントIDを指定ください。 |
パスワード | 対象アカウントIDのパスワードを指定ください。 |
テナントID | コントロールパネルの「サービス」メニュー内にある「API情報」をご確認ください。 |
curl -i -X POST \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{"auth":{"passwordCredentials":{"username": "APIユーザー名", "password": "パスワード"},"tenantId":"テナントID"}}' \ 認証のエンドポイント/tokens
コンソール画面上には以下のようにリクエストの結果が返ってきます。「access」の「id」の値がAPI操作を行う際に必要となるトークンIDです。以降の手順では、トークンIDと表示されているものは全てこのIDを指すものとします。トークンIDは発行後、24時間で失効となりますので作業が日をまたぐ場合は都度発行する必要があります。 |
{"access":{"token":{"issued_at":"2018-10-16T01:51:28.283674","expires":"2018-10-17T01:51:28Z",
"id":"9e54605ee98043b2a89d28f80bc1ce3f"
ブートディスクの作成
[1] | ボリュームタイプの一覧を取得し、ボリュームタイプ名を確認します。 ※ 対象のAPIリファレンスは こちら |
---|
ボリュームのエンドポイント | コントロールパネルの「サービス」メニュー内にある「API情報」をご確認ください。 |
---|
curl -i -X GET \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ ボリュームのエンドポイント/types
上記リクエストが正常に処理されるとボリュームタイプの一覧情報が返ってきます。ボリュームタイプの一覧は以下の通りです。ボリュームタイプ名は以降の手順でAPIの操作に必要となりますので、任意のタイプ名についてメモをとってください。 |
ボリュームタイプ名 | IOPS |
---|---|
gac1-iops-500 | 500 |
gac1-iops-1k | 1,000 |
gac1-iops-2k | 2,000 |
gac1-iops-3k | 3,000 |
gac1-iops-4k | 4,000 |
gac1-iops-5k | 5,000 |
gac1-iops-10k | 10,000 |
[2] | OSイメージの一覧を取得し、イメージIDを確認します。 ※ 対象のAPIリファレンスは こちら |
---|
イメージのエンドポイント | コントロールパネルの「サービス」メニュー内にある「API情報」をご確認ください。 |
---|
curl -i -X GET \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ イメージのエンドポイント/images
上記リクエストが正常に処理されると作成されたイメージの一覧情報が返ってきます。イメージの一覧は以下の通りです。イメージIDは以降の手順でAPIの操作に必要となりますので、任意のイメージIDについてメモをとってください。 |
・Linux
OS名 | ボリュームサイズ | イメージID |
---|---|---|
CentOS 6.9 | 50GB | 54253120-cc88-4de5-a087-84a81099f9ca |
100GB | 02ee9d3f-41aa-4b9f-b7a3-d1e7f7fe77a0 | |
200GB | b8efcfd7-676e-4e69-bdd1-bc92d296e886 | |
300GB | a11f28fb-abee-41cf-94a7-dd778fd4a14e | |
400GB | 6b5fb82e-e409-43ba-a274-c574914c7669 | |
500GB | 05aa303a-29af-4412-9ad7-8afe88549c8d | |
1TB | f6b8d979-5fd1-43c5-bfa4-23050f737eaf | |
2TB | 9b591704-7835-411c-86e2-4fc81d6ab1f2 | |
CentOS 7.2 | - | 38255449-f5e7-443a-a98c-9b96557dd5fa |
CentOS 7.3 | - | 886dc1cb-0a11-4fc5-9236-50da1965aa30 |
CentOS 7.4 | - | c84c560d-a658-4ac7-8028-74473b58c403 |
Ubuntu 16.04 | - | 49a509dc-9a7a-44fd-bf9a-c9aa380a16aa |
Debian 8 | - | 58febaa9-1c07-4e1b-ae09-5d6f293378d8 |
Debian 9 | - | 0c2a010a-6ecc-4eac-ab5b-2f4ca664102a |
・Windows
OS名 | ボリュームサイズ | イメージID |
---|---|---|
Windows Server 2008 | - | aa5c196d-174c-4363-8dfb-0ca62fd740dd |
Windows Server 2012 | - | 53d92e0b-57a2-4fe5-80f6-afc633022741 |
Windows Server 2012+SQL Server 2012 | - | 6cd1278e-1256-4963-b317-cc67a64e0578 |
Windows Server 2012+SQL Server 2014 | - | 5c6bde40-57d9-433d-9a89-73cce67f191b |
・Others
テンプレート名 | ボリュームサイズ | イメージID |
---|---|---|
Cacti/Nagios 4.3-1.1 | - | 20be32b1-4757-4d59-b364-f0bc8bc59399 |
[3] | ブードディスクを作成します。 ※ 対象のAPIリファレンスは こちら |
---|
パラメータ | 指定する値 | 備考 |
---|---|---|
name | 任意のボリューム名 | 任意の名前を指定します。 |
size | 5010020030040050010002000 | ボリュームの容量を指定します。 |
curl -X POST \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"volume": {"name": "ボリューム名","volume_type": "ボリュームタイプ名","size": "ボリューム容量","imageRef":"イメージID"}}' \ ボリュームのエンドポイント/volumes
上記リクエストが正常に処理されると作成されたボリュームの情報が返ってきます。ボリュームIDは以降の手順でAPIの操作に必要となりますので、メモをとってください。 |
ネットワークの購入
本リファレンスでは、仮想サーバー用グローバルIPアドレス および プライベートネットワークをアタッチさせます。
サーバーの作成には、プライベートネットワークのアタッチが必須になります。
なお、アタッチさせるネットワークを購入済みの場合は、次の「セキュリティグループの作成」のリファレンスに進んでください。
[1] | ネットワークが未購入の場合、任意のネットワークを購入します。 ※ プライベートネットワークを追加する場合は こちら ※ アプライアンス型ロードバランサーを追加する場合は こちら ※ 仮想サーバー用グローバルIPアドレスを追加する場合は こちら ※ 専用グローバルIPアドレスを追加する場合は こちら |
---|
セキュリティグループの作成
任意のセキュリティグループをアタッチさせたい場合は、セキュリティグループを作成します。
システム標準のセキュリティグループを使用する場合や任意のセキュリティグループを作成済みの場合は、次の「ポートの作成ならびにセキュリティグループの設定」のリファレンスに進んでください。
なお、コントロールパネルからもセキュリティグループの作成は可能です。
※ コントロールパネルからセキュリティグループを作成する場合は こちら
[1] | 仮想サーバー用グローバルIPアドレスのセキュリティグループを作成します。 ※ 対象のAPIリファレンスは こちら |
---|
ネットワークのエンドポイント | コントロールパネルの「サービス」メニュー内にある「API情報」をご確認ください。 |
---|
curl -i -X POST \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"security_group": {"name": "任意のセキュリティグループ名"}}' \ ネットワークのエンドポイント/security-groups
上記リクエストが正常に処理されると以下のような結果が返ってきます。「security_group」の「id」の値がAPI操作を行う際に必要となるセキュリティグループIDです。以降の手順でAPIの操作に必要となりますので、メモをとってください。 |
{"security_group": {"description": "","id": "セキュリティグループID"
[2] | 本リファレンスでは、仮想サーバー用グローバルIPアドレスに全てのインバウンドを許可するルールをセキュリティグループに追加します。 ※ 対象のAPIリファレンスは こちら |
---|
curl -i -X POST \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"security_group_rule": {"direction": "ingress", "ethertype": "IPv4", "security_group_id": "セキュリティグループID", "port_range_min": "", "port_range_max": "", "protocol": "tcp"}}' \ ネットワークのエンドポイント/security-group-rules
ポートの作成ならびにセキュリティグループの設定
仮想サーバーにアタッチさせる仮想サーバー用グローバルIPアドレス および プライベートネットワークのポートを作成します。
なお、本リファレンスでは、仮想サーバー用グローバルIPアドレスに本リファレンスの「セキュリティグループの作成」にて作成したセキュリティグループを、プライベートネットワークにはシステム標準のセキュリティグループを使用します。
[1] | サブネットの一覧を取得し、仮想サーバー用グローバルIPアドレス および プライベートネットワークのサブネットID ならびに ネットワークIDを確認します。 ※ 対象のAPIリファレンスは こちら |
---|
curl -i -X GET \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ ネットワークのエンドポイント/subnets
上記リクエストが正常に処理されるとサブネットの一覧情報が返ってきます。サブネットID ならびに ネットワークIDは以降の手順でAPIの操作に必要となりますので、サブネット一覧からグローバルIPアドレスやプライベートIPアドレスなどをもとに対象のサブネットID ならびに ネットワークIDをご確認の上、メモをとってください。 |
HTTP/1.1 200 OK Date: Fri, 30 Mar 2018 15:09:31 GMT Server: Apache Content-Length: 2522 Content-Type: application/json { "subnets":[ { "name":"ネットワーク名", "enable_dhcp":false, "network_id":"ネットワークID", "tenant_id":"テナントID", "dns_nameservers":[], "gateway_ip":null, "ipv6_ra_mode":null, "allocation_pools":[ { "start":"IPアドレス範囲の先頭", "end":"IPアドレス範囲の末尾" } ], "host_routes":[], "ip_version":4, "ipv6_address_mode":null, "cidr":"サブネットマスク", "id":"サブネットID" }, { "name":"ネットワーク名", "enable_dhcp":false, "network_id":"ネットワークID", "tenant_id":"テナントID", "dns_nameservers":[], "gateway_ip":null, "ipv6_ra_mode":null, "allocation_pools":[ { "start":"IPアドレス範囲の先頭", "end":"IPアドレス範囲の末尾" } ], "host_routes":[], "ip_version":4, "ipv6_address_mode":null, "cidr":"サブネットマスク", "id":"サブネットID" } ] }
[2] | 仮想サーバー用グローバルIPアドレス および プライベートネットワークのポートを作成します。 ※ 対象のAPIリファレンスは こちら |
---|
・仮想サーバー用グローバルIPアドレスの場合
curl -i -X POST \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"port":{"network_id":"ネットワークID","fixed_ips":[{"ip_address":"グローバルIPアドレス","subnet_id":"仮想サーバー用グローバルIPアドレスのサブネットID"}]}}' \ ネットワークのエンドポイント/ports
・プライベートネットワークの場合
curl -i -X POST \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"port":{"network_id":"ネットワークID","fixed_ips":[{"ip_address":"プライベートIPアドレス","subnet_id":"プライベートネットワークのサブネットID"}]}}' \ ネットワークのエンドポイント/ports
上記リクエストが正常に処理されると作成されたポートの情報が返ってきます。ポートIDは以降の手順でAPIの操作に必要となりますので、メモをとってください。 |
HTTP/1.1 201 Created
Date: Fri, 30 Mar 2018 11:57:08 GMT
Server: Apache
Content-Length: 603
Content-Type: application/json
{
"port": {
"status": "DOWN",
"name": "ネットワーク名",
"allowed_address_pairs": [
{
"ip_address": "0.0.0.0/0",
"mac_address": "MACアドレス"
}
],
"admin_state_up": true,
"network_id": "ネットワークID",
"tenant_id": "テナントID",
"binding:vnic_type": "normal",
"device_owner": "",
"mac_address": "MACアドレス",
"fixed_ips": [
{
"subnet_id": "サブネットID",
"ip_address": "IPアドレス"
}
],
"id": "ポートID",
"security_groups": [
"セキュリティグループID"
],
"device_id": ""
}
}
[3] | 作成した仮想サーバー用グローバルIPアドレスのポートに本リファレンスの「セキュリティグループの作成」にて作成したセキュリティグループを設定します。 ※ 対象のAPIリファレンスは こちら |
---|
curl -X PUT \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"port": {"security_groups": ["任意のセキュリティグループID"]}}' \ ネットワークのエンドポイント/ports/ポートID
仮想サーバーの作成
[1] | サーバープランの一覧を取得し、任意のサーバープランのフレーバーIDを確認します。 ※ 対象のAPIリファレンスは こちら |
---|
サーバー操作のエンドポイント | コントロールパネルの「サービス」メニュー内にある「API情報」をご確認ください。 |
---|
curl -i -X GET \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-Auth-Token: トークンID" \ サーバー操作のエンドポイント/flavors
上記リクエストが正常に処理されるとサーバープランの一覧情報が返ってきます。サーバープランの一覧は以下の通りです。サーバープランのフレーバーIDは以降の手順でAPIの操作に必要となりますので、任意のサーバープランのフレーバーIDについてメモをとってください。 |
プラン名 | vCPU | メモリ | フレーバーID |
---|---|---|---|
N-0101 | 1 vCPU | 1 GB | 53c47264-b3e8-46a6-8fc6-a019e1cfdfb1 |
N-0102 | 1 vCPU | 2 GB | 8eb0b8f1-8805-45c1-8df4-782764edbdb1 |
N-0104 | 1 vCPU | 4 GB | 87c84b65-efc4-4f6a-8a1c-5d005ea48147 |
N-0108 | 1 vCPU | 8 GB | 7a48c7ea-5dc2-4d85-b692-a83dfd84c70e |
N-0202 | 2 vCPU | 2 GB | f30f5e62-a437-40c1-8d4e-3c52cf452260 |
N-0204 | 2 vCPU | 4 GB | d443b815-2d35-48b9-b466-ce65931442bc |
N-0208 | 2 vCPU | 8 GB | 9c05ad50-6806-440f-9283-01b4bfc0fafe |
N-0216 | 2 vCPU | 16 GB | 6c74a657-6b7c-404d-a18d-b483cd80e34b |
N-0404 | 4 vCPU | 4 GB | 0620c7dc-8e8d-4c1d-b80c-390ce1575285 |
N-0408 | 4 vCPU | 8 GB | d2379fb9-df53-4432-8158-ed6668021680 |
N-0416 | 4 vCPU | 16 GB | 06094e8c-3ae6-413f-a443-ecc37c423109 |
N-0430 | 4 vCPU | 30 GB | e7830e01-fac6-4d6a-bd9b-f8a5256d8700 |
N-0808 | 8 vCPU | 8 GB | 9be53ede-1a0a-4dd2-9451-6d4cbfcb0ac5 |
N-0816 | 8 vCPU | 16 GB | 7737d667-8363-4d49-a045-0aa27a64b327 |
N-0832 | 8 vCPU | 32 GB | bfef23f8-a503-4faf-b505-8a185eb4b540 |
N-0860 | 8 vCPU | 60 GB | 0d096c3f-cde1-4fc5-8a4d-9233637f88ea |
N-1616 | 16 vCPU | 16 GB | 8a2eac33-d9e6-4b3d-b6d3-a56db3d9b26c |
N-1632 | 16 vCPU | 32 GB | 8cdd6cba-3c01-4726-85b6-6fe273eabf70 |
N-1660 | 16 vCPU | 60 GB | 70017e22-056e-47a5-ae87-6b8e1b1217dc |
N-3232 | 32 vCPU | 32 GB | f0b5aa85-b232-4113-b6cf-1b6943598324 |
N-3260 | 32 vCPU | 60 GB | 43c8317e-3aec-48bd-a962-671a5e209a3c |
N-4096 | 40 vCPU | 96 GB | d8ec34da-5c42-4a39-babe-315b4a1934ed |
[2] | 仮想サーバーを作成します。 ※ 対象のAPIリファレンスは こちら |
---|
curl -X POST \ -H "Accept: application/json" \ -H Content-Type:application/json \ -H "X-Auth-Token: トークンID" \ -d '{"server":{"flavorRef":"フレーバーID","networks":[{"port":"プライベートネットワークのポートID"},{"port":"仮想サーバー用グローバルIPアドレスのポートID"}],"block_device_mapping":[{"volume_id":"ボリュームID"}]}}' \ サーバー操作のエンドポイント/servers
本リファレンスはZ.com Cloud for Appにてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用用途に応じて必要な設定や操作をおこなってください。