APIで仮想サーバーを作成する | Z.com Cloud パブリッククラウド リファレンス

APIで仮想サーバーを作成する

APIを使用して仮想サーバーを作成する方法をご案内します。
以下ではcurlコマンドを用いたAPIの操作手順となりますので、任意のサーバーにて実行ください。

なお、本リファレンスに掲載しておりますフレーバーIDやイメージID等の一覧につきましては、実際のデータと更新に差が出る場合がございますので、ご利用の際はAPIにて最新版の一覧をご取得ください。

 トークンの発行

[ 1 ] API認証を行い、トークンの取得ならびに発行されたトークンIDを確認します。

※ 対象のAPIリファレンスは こちら
認証の
エンドポイント
コントロールパネル内のAPIメニューから「Identity Service」をご確認ください。
APIユーザー名 コントロールパネル内のAPIメニューからAPIユーザーを作成ください。
パスワード コントロールパネルのAPIメニューからAPIユーザーを作成する際に設定するパスワード。
テナント名 コントロールパネル内のAPIメニューから「テナント名」をご確認ください。
curl -i -X POST \ -H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"auth":{"passwordCredentials":{"username": "APIユーザー名", "password": "パスワード"},"tenantName":"テナント名"}}' \
認証のエンドポイント/tokens
コンソール画面上には以下のようにリクエストの結果が返ってきます。「access」の「id」の値がAPI操作を行う際に必要となるトークンIDです。以降の手順では、トークンIDと表示されているものは全てこのIDを指すものとします。トークンIDは発行後、24時間で失効となりますので作業が日をまたぐ場合は都度発行する必要があります。
{“access”:{"token":{"issued_at":"2016-11-27T08:01:26.504595","expires":"2016-11-28T08:01:26Z",
"id":"9e54605ee98043b2a89d28f80bc1ce3f"

 ブートストレージの作成

[ 1 ] ボリュームタイプの一覧を取得し、ボリュームタイプ名を確認します。

※ 対象のAPIリファレンスは こちら
ボリュームの
エンドポイント
コントロールパネル内のAPIメニューから「Volume Service」をご確認ください。
curl -i -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
ボリュームのエンドポイント/types
上記リクエストが正常に処理されるとボリュームタイプの一覧情報が返ってきます。ボリュームタイプの一覧は以下の通りです。ボリュームタイプ名は以降の手順でAPIの操作に必要となりますので、任意のタイプ名についてメモをとってください。
ボリュームタイプ名 IOPS 備考
sd1-iops-500 500 ボリュームサイズが50GBの時のみ指定可能
sd1-iops-1k 1,000 ボリュームサイズが100GB以上の時に指定可能
sd1-iops-5k 5,000 ボリュームサイズが100GB以上の時に指定可能
sd1-iops-10k 10,000 ボリュームサイズが100GB以上の時に指定可能
[ 2 ] OSイメージの一覧を取得し、イメージIDを確認します。

※ 対象のAPIリファレンスは こちら
イメージの
エンドポイント
コントロールパネル内のAPIメニューから「Image Service」をご確認ください。
curl -i -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
イメージのエンドポイント/v2/images
上記リクエストが正常に処理されると作成されたイメージの一覧情報が返ってきます。イメージの一覧は以下の通りです。イメージIDは以降の手順でAPIの操作に必要となりますので、任意のイメージIDについてメモをとってください。

・Linux

OS名 ボリュームサイズ イメージID
CentOS 6.8 50GB 4bf532e4-02e3-4b0d-b524-90152e264772
100GB 8e965538-736b-404b-98ae-8255178873d5
300GB 2d4eaeb4-8a35-425b-8726-3b5d08efafe6
500GB 667d8b3e-fae6-4763-a7db-67c7ac67736f
1TB 390a7488-2d55-41c7-8620-06dd3a231ec7
2TB 984ba64a-6183-4e39-9b0b-146605f77f95
CentOS 6.9 50GB e35f8807-20ab-4f5d-843c-c2c265f32047
100GB f4c07b8f-8e32-45d1-82ab-6162f590fdec
300GB 3e8c92ce-05d3-494d-acdd-a303fe5ded41
500GB 8b67d26a-f4f8-47b9-8b8b-fedaa5feb372
1TB 01e12ee7-2526-449a-aaf6-408a9e98c1e9
2TB 61f9ac40-a23c-406e-bf90-391a53eae046
CentOS 6.10 50GB 6a67dda3-cff6-42ba-a41c-ff49dc30639a
100GB a29127de-9b68-471e-84ee-9bc65b987094
300GB 1dee86ad-b2d2-42c4-addf-89e44c33ad2b
500GB 1f474857-92d5-49df-a604-d09428e9e708
1TB 8fe1d987-9bfc-4eaf-964f-71c2a27dc56d
2TB 163abe15-5c04-41b6-ba25-f701e4e7fa74
CentOS 7.2 367eabf1-1074-4235-b52a-4f6c7bd8a677
CentOS 7.3 5d63f9a1-a029-4be5-9e66-76ff6b3b95a3
CentOS 7.4 1b5dc266-df9c-4aa7-b4d8-55e3a739bc4d
CentOS 7.5 c276b43e-42f5-4d6d-9352-c92ca88a26d8
CentOS 7.6 4c4dce8d-0588-48ec-a143-5e842bb322f5
CentOS 8.0 2f36c659-0fa9-4d42-bda3-60a74b9a56da
Ubuntu 16.04 84658b17-891c-44ea-9e73-f7b5b25617be
Ubuntu 18.04 d96822eb-d96c-4cbc-9652-8cbf3bb6ea0b
Debian 8 7ad43446-8e27-4fae-9ba7-b333f09cf40d
Debian 9 f283b3ad-0f64-4dcf-aad4-8f08d3ca44e3

・Windows

OS名 ボリュームサイズ イメージID
Windows Server 2012 53d92e0b-57a2-4fe5-80f6-afc633022741
Windows Server 2016 36db7ae2-bf86-4109-9a15-d95aaba63e7d
Windows Server 2012

SQL Server 2012
6cd1278e-1256-4963-b317-cc67a64e0578
Windows Server 2012

SQL Server 2014
5c6bde40-57d9-433d-9a89-73cce67f191b
Windows Server 2016

SQL Server 2016
af0797e3-ed51-4208-9c1e-04b8b76a7cda
[ 3 ] ブードストレージを作成します。

※ 対象のAPIリファレンスは こちら
パラメータ 指定する値 備考
name 任意のボリューム名 ブートストレージに任意の名前を指定します。
size 50
100
300
500
1000
2000
ストレージの容量を指定します。
curl -i -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-d '{"volume":{"name":"任意のボリューム名","size":ボリュームサイズ,"volume_type":"ボリュームタイプ名","imageRef":"イメージID"}}' \
ボリュームのエンドポイント/volumes
上記リクエストが正常に処理されると作成されたボリュームの情報が返ってきます。ボリュームIDは以降の手順でAPIの操作に必要となりますので、メモをとってください。
{
    "volume": {
        "status": "creating",
        "user_id": "fe9256e97cbc4b2c8c68743e85311b84",
        "attachments": [],
        "links": [
            {
                "href": "ボリュームのエンドポイント/volumes/ボリュームID",
                "rel": "self"
            },

 グローバルIPアドレスの購入

本リファレンスでは、仮想サーバーに共用グローバルネットワークのグローバルIPアドレスをアタッチさせます。
以下手順では、共用グローバルネットワークのグローバルIPアドレスの購入方法をご案内します。
なお、グローバルIPアドレスを購入済みの場合は、本項目の[ 5 ]からご確認ください。

[ 1 ] 左メニューより [ネットワーク] を選択の上、「ネットワークリスト」の中から [標準グローバルネットワーク] をクリックします。

image

[ 2 ] [+ IPアドレス] をクリックします。

image

[ 3 ] 追加するグローバルIPアドレスの個数を選択の上、 [追加] をクリックします。

image

[ 4 ] 問題がなければ、 [はい] をクリックします。

image

[ 5 ] 以下のように標準グローバルネットワーク セグメントリストに追加されます。後述するAPIの操作手順にて使用しますので、「UUID」情報をメモしておきます。

image

 ポート作成ならびにセキュリティグループの設定

仮想サーバーにアタッチさせるグローバルIPアドレスのポートを作成します。
本リファレンスでは、SSHのみ許可する既存のセキュリティグループの「SSH(22)」を設定します。

[ 1 ] サブネットの一覧を取得し、本リファレンスで購入したグローバルIPアドレスのネットワークIDを確認します。

※ 対象のAPIリファレンスは こちら
ネットワークの
エンドポイント
コントロールパネル内のAPIメニューから「Network Service」をご確認ください。
curl -i -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
ネットワークのエンドポイント/v2.0/subnets
上記リクエストが正常に処理されるとサブネットの一覧情報が返ってきます。ネットワークIDは以降の手順でAPIの操作に必要となりますので、サブネット一覧からグローバルIPアドレスなどをもとに対象のネットワークIDをご確認の上、メモをとってください。
{
    "subnets": [
        {
            "allocation_pools": [
                {
                    "end": "グローバルIPアドレス", 
                    "start": "グローバルIPアドレス"
                }
            ], 
            "cidr": "サブネットマスク", 
            "dns_nameservers": [], 
            "enable_dhcp": false, 
            "gateway_ip": null, 
            "host_routes": [], 
            "id": "サブネットID", 
            "ip_version": 4, 
            "ipv6_address_mode": null, 
            "ipv6_ra_mode": null, 
            "name": "サブネットの名前", 
            "network_id": "ネットワークID", 
            "tenant_id": "テナントID"
        }
[ 2 ] 本リファレンスで購入したグローバルIPアドレスのポートを作成します。

※ 対象のAPIリファレンスは こちら
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アドレスのUUID"}]}}' \
https://networking.jpt1.cloud.z.com/v2.0/ports
上記リクエストが正常に処理されると作成されたポートの情報が返ってきます。ポートIDは以降の手順でAPIの操作に必要となりますので、メモをとってください。
"ports": [
        {
            "admin_state_up": true, 
            "allowed_address_pairs": [], 
            "binding:vnic_type": "normal", 
            "device_id": "デバイスID", 
            "device_owner": "compute:None", 
            "extra_dhcp_opts": [], 
            "fixed_ips": [
                {
                    "ip_address": "グローバルIPアドレス", 
                    "subnet_id": "グローバルIPアドレスのUUID"
                }
            ], 
            "id": "ポートID", 
            "mac_address": "MACアドレス", 
            "name": "ポートの名前", 
            "network_id": "ネットワークID", 
            "security_groups": [
                "セキュリティグループID"
            ], 
            "status": "ACTIVE", 
            "tenant_id": "テナントID"
        }, 
[ 3 ] 作成したポートに任意のセキュリティグループを設定します。セキュリティグループを作成していない場合は、本項目は実施せず、仮想サーバーを作成後、コントロールパネルから既存のセキュリティグループを設定してください。
curl -X PUT \
-H "Accept: application/json" \
-H "X-Auth-Token: トークンID" \
-d '{"port": {"security_groups": ["任意のセキュリティグループID"]}}' \
ネットワークのエンドポイント/v2.0/ports/ポートID

 仮想サーバーの作成

[ 1 ] サーバープランの一覧を取得し、任意のサーバープランのフレーバーIDを確認します。

※ 対象のAPIリファレンスは こちら
仮想サーバーの
エンドポイント
コントロールパネル内のAPIメニューから「Compute Service」をご確認ください。
curl -i -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
仮想サーバーのエンドポイント/flavors
上記リクエストが正常に処理されるとサーバープランの一覧情報が返ってきます。サーバープランの一覧は以下の通りです。サーバープランのフレーバーIDは以降の手順でAPIの操作に必要となりますので、任意のサーバープランのフレーバーIDについてメモをとってください。

・Standardプラン

プラン名 vCPU メモリ フレーバーID
ST0101 1 vCPU 1 GB afb9e401-1fa7-4f94-9f8b-aa5251178a2c
ST0102 1 vCPU 2 GB 2b6d102a-02a8-4602-87a8-1fe030e3ea37
ST0202 2 vCPU 2 GB be2fab19-5262-4ea1-b60c-ab31a6b7f26d
ST0204 2 vCPU 4 GB 42e9c51d-4a88-4d28-acc3-ccf417fd41d6
ST0404 4 vCPU 4 GB 92e9adda-e38b-43d4-8f0c-5244900cbff9
ST0408 4 vCPU 8 GB 43f79170-7850-4d78-ab99-3fb81272c577
ST0808 8 vCPU 8 GB 17a3ad5d-fd24-4006-8bf9-1755185ea57d
ST0816 8 vCPU 16 GB 4f4b9b47-26c3-45b5-8c9f-c7ac69e0d06e
ST1616 16 vCPU 16 GB 36a07dba-d8f4-443f-b63f-f1f7f302c9d6
ST1632 16 vCPU 32 GB 9846e854-d927-470c-bed2-4ce8117206e2
ST3232 32 vCPU 32 GB eea3e705-2142-4b00-b9ea-ab26d6a32289
ST3260 32 vCPU 60 GB 86b9f18a-e4a6-4096-9ff3-d2fbbc578e6a

・High CPUプラン

プラン名 vCPU メモリ フレーバーID
HC0401 4 vCPU 1 GB aef66825-e17d-4ce7-8527-b736738e7731
HC0802 8 vCPU 2 GB 8af4be4a-867e-4b19-ad05-936dc20292df
HC1602 16 vCPU 2 GB 5e62060a-7a5b-4d81-9bc6-99966c041b1a
HC1604 16 vCPU 4 GB 82fd48bf-3739-4c7a-8fe0-81e136ac2b84
HC3204 32 vCPU 4 GB 3d61d7f3-8b9c-4876-94e8-6373cee8f9a4
HC3208 32 vCPU 8 GB a9257edc-2c19-4cbf-bbf0-ddcc2150f77f

・High MEMプラン

プラン名 vCPU メモリ フレーバーID
HM0104 1 vCPU 4 GB b2d22a49-6611-4ea8-80bc-7c5cf0a7db90
HM0108 1 vCPU 8 GB f05aa80f-f75e-4ea4-bfdf-999e7323ff4c
HM0208 2 vCPU 8 GB be5d83cf-9ac7-49c1-87ef-b09d378730db
HM0216 2 vCPU 16 GB b5b4e613-10ac-4d21-a025-e4d897bf9cd3
HM0416 4 vCPU 16 GB d102f295-fb8c-48e6-a4b1-53dd4a66f288
HM0432 4 vCPU 32 GB 98a0d69b-0972-41eb-bccb-2950f68d924b
HM0832 8 vCPU 32 GB 25d09028-85e9-4d51-8a2a-e58a31959048

・専有プラン

プラン名 vCPU メモリ フレーバーID
VD40120 40 vCPU 120 GB 999f6379-c35b-4876-87f3-e23345c4dc0f
[ 2 ] 仮想サーバーを作成します。実行例では以下内容でサーバーを作成します。

※ 対象のAPIリファレンスは こちら
パラメータ 指定する値 備考
name
(server)
ホスト名 仮想サーバーのホスト名になります。任意の名前を指定します。
flavorRef フレーバーID 作成したいサーバープランのフレーバーIDを指定します。
adminPass rootの初期パスワード Linux系のOSの場合は、rootの初期パスワードになります。任意のパスワードを指定します。
port ポートID 本リファレンスで作成したポートのポートIDを指定します。
volume_id ボリュームID 本リファレンスで作成したブートストレージのボリュームIDを指定します。
instance_name_tag ネームタグ 仮想サーバーに任意の名前を指定します。コントロールパネルのネームタグ欄に表示される名前になります。
curl -i -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: トークンID" \
-d '{
        "server": {
            "name": "ホスト名",
            "flavorRef": "フレーバーID",
            "adminPass": "rootの初期パスワード",
            "networks": [
                {
                    "port": "ポートID"
                }
            ],
            "block_device_mapping": [
                {
                    "volume_id": "ボリュームID"
                }
            ],
            "metadata": {
            "instance_name_tag": "ネームタグ"
                }
        }
    }' \
仮想サーバーのエンドポイント/servers


本リファレンスはZ.com Cloudにてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用用途に応じて必要な設定や操作をおこなってください。