###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 02-018_仮想サーバ作成【DHCP取得_ストレージ指定】 # # 内容: # 事前に作成したブロックストレージを指定し、仮想サーバを作成する # 手順です。 # # 版数:v1.1 # 更新日:2018/1/26 ###################################################################### 手順: ─────────────────────────────────── 項番1.ストレージ確認 項番2.仮想サーバ作成(ストレージ指定) 項番2-1.仮想サーバ作成(ストレージ指定) 項番2-2.仮想サーバ確認 項番2-3.ストレージ確認 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・ネットワーク ・サブネット ・セキュリティグループ ・キーペア ・ブロックストレージ ─────────────────────────────────── 注意事項: ・ブロックストレージの作成方法についてはAPI実行サンプル 「ブロックストレージ作成」を参照してください。 ・ハイパフォーマンスタイプのストレージを仮想サーバのシステム ストレージとして使用しないでください。使用した場合は、仮想サーバ 作成の遅延や、仮想サーバイメージ作成に失敗する可能性があります。 項番1.ストレージ確認 事前に作成したブロックストレージを確認し、以下のパラメータで他の仮想 サーバで利用されていないこと、利用可能な状態であること、ストレージ タイプがスタンダードタイプ(M1)であることを確認します。 ・"attachments": [] ※何も記載がないこと ・"status": "available" ・"volume_type": "M1" 環境定義コマンド例: ====================================================================== # VOLUME_ID=<仮想サーバのシステムストレージとして利用するストレージID> VOLUME_ID=eefd9954-0b8e-49a0-be0d-acc435f1n4u9 API実行コマンド例: ====================================================================== curl -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/volumes/$VOLUME_ID -X GET -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type:application/json" | jq . レスポンス例: ====================================================================== { "volume": { "size": 30, "os-vol-mig-status-attr:migstat": null, "id": "eefd9954-0b8e-49a0-be0d-acc435f1n4u9", "metadata": { "readonly": "False" }, "created_at": "2017-12-27T02:46:11.000000", "encrypted": false, "bootable": "false", "availability_zone": "jp-west-2a", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/eefd9954-0b8e-49a0-be0d-acc435f1n4u9" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/eefd9954-0b8e-49a0-be0d-acc435f1n4u9" } ], "attachments": [], "user_id": "<ユーザID>", "status": "available", "description": null, "os-vol-tenant-attr:tenant_id": "<プロジェクトID>", "volume_type": "M1", "name": "TEST_STORAGE_01", "os-vol-host-attr:host": "ror-cinder@M1_28", "source_volid": null, "snapshot_id": null, "os-vol-mig-status-attr:name_id": null } } ====================================================================== 項番2.仮想サーバ作成(ストレージ指定) 作成したブロックストレージを指定した仮想サーバを作成し、作成された こと、ストレージが仮想サーバと関連付けされたことを確認します。 項番2-1.仮想サーバ作成(ストレージ指定) 作成したブロックストレージを指定し、仮想サーバを作成します。 注意事項: ・ハイパフォーマンスタイプのストレージを仮想サーバのシステム ストレージとして使用しないでください。使用した場合は、仮想サーバ 作成の遅延や、仮想サーバイメージ作成に失敗する可能性があります。 環境定義コマンド例: ====================================================================== # SERVER_NAME=<作成する仮想サーバ名> SERVER_NAME=TEST_SERVER_01 # VOLUME_ID=<システムストレージに指定するブロックストレージID> VOLUME_ID=eefd9954-0b8e-49a0-be0d-acc435f1n4u9 # FLAVOR_ID=<フレーバーID(フレーバーIDはAPI実行サンプル「リソース # 確認用API一覧」を参照してください)> FLAVOR_ID=1101 # VOLUME_SIZE=<ブロックストレージサイズ(GB)(CentOSは「30」以上を設定)> VOLUME_SIZE=30 # DEVICE_NAME=<ブロックストレージパス(「/dev/vda」の形式で指定)> DEVICE_NAME=/dev/vda # SOURCE=<ブロックストレージのソースタイプ(「volume」を指定)> SOURCE=volume # DESTINATION=<接続先ボリューム(volume指定)> DESTINATION=volume # ISDELETE=<(0:システムストレージに指定したストレージを、 # 仮想サーバ削除時に同時に削除しない), # (1:システムストレージに指定したストレージを、 # 仮想サーバ削除時に同時に削除する)> ISDELETE=1 # KEY_NAME=<仮想サーバへのログインで利用するキーペア名> KEY_NAME=TEST_KEY_01 # INSTANCE_MAX=<仮想サーバの最大数> INSTANCE_MAX=1 # INSTANCE_MIN=<仮想サーバの最小数> INSTANCE_MIN=1 # NETWORK_ID=<事前に作成したネットワークID> NETWORK_ID=d294e27f-4cc0-4498-b31f-840857cd5t2n # SG_NAME=<事前に作成したセキュリティグループ名> SG_NAME=TEST_SG_01 # AZ=<アベイラビリティゾーン名> AZ=jp-west-2a API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"server": {"name": "'$SERVER_NAME'", "availability_zone": "'$AZ'", "imageRef": "", "flavorRef": "'$FLAVOR_ID'", "block_device_mapping_v2":[ {"boot_index": "0", "uuid":"'$VOLUME_ID'", "volume_size": "'$VOLUME_SIZE'", "device_name": "'$DEVICE_NAME'", "source_type": "'$SOURCE'", "destination_type": "'$DESTINATION'", "delete_on_termination": "'$ISDELETE'"} ] , "key_name": "'$KEY_NAME'", "max_count": "'$INSTANCE_MAX'", "min_count": "'$INSTANCE_MIN'", "networks": [{"uuid": "'$NETWORK_ID'"}], "security_groups": [{"name": "'$SG_NAME'"}] }}' | jq . レスポンス例: ====================================================================== { "server": { "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/b01da7b1-9482-4c86-b2c3-668f9c94807f" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/b01da7b1-9482-4c86-b2c3-668f9c94807f" } ], "id": "b01da7b1-9482-4c86-b2c3-668f9c94807f", "OS-DCF:diskConfig": "MANUAL", "security_groups": [ { "name": "TEST_SG_01" } ] } } ====================================================================== 項番2-2.仮想サーバ確認 ストレージを指定した仮想サーバが作成されたことを以下のパラメータで 確認します。 ・"status": "ACTIVE" ・"os-extended-volumes:volumes_attached": [{"id": "<指定したストレージID>"}] 環境定義コマンド例: ====================================================================== # SERVER_ID=<作成した仮想サーバID> SERVER_ID=b01da7b1-9482-4c86-b2c3-668f9c94807f API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "server": { "metadata": {}, "config_drive": "", "OS-EXT-STS:power_state": 1, "progress": 0, "accessIPv6": "", "accessIPv4": "", "os-extended-volumes:volumes_attached": [ { "id": "eefd9954-0b8e-49a0-be0d-acc435f1n4u9" } ], "OS-DCF:diskConfig": "MANUAL", "tenant_id": "<プロジェクトID>", "created": "2017-12-27T06:53:01Z", "name": "TEST_SERVER_01", "user_id": "<ユーザID>", "OS-EXT-AZ:availability_zone": "jp-west-2a", "OS-SRV-USG:terminated_at": null, "image": "", "key_name": "TEST_KEY_01", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/b01da7b1-9482-4c86-b2c3-668f9c94807f" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/b01da7b1-9482-4c86-b2c3-668f9c94807f" } ], "addresses": { "TEST_NETWORK_01": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.50.11", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:6f:a3:7f" } ] }, "OS-EXT-SRV-ATTR:host": "jp3a01-pgy047-00", "hostId": "d848164e0306fb039f354b8df4e3be4ad0666186e944df8a4e0f93b7", "updated": "2017-12-27T06:53:12Z", "status": "ACTIVE", "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-0001e45c", "OS-SRV-USG:launched_at": "2017-12-27T06:53:12.000000", "OS-EXT-SRV-ATTR:hypervisor_hostname": "jp3a01-pgy047-00", "flavor": { "links": [ { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/flavors/1101" } ], "id": "1101" }, "id": "b01da7b1-9482-4c86-b2c3-668f9c94807f", "security_groups": [ { "name": "TEST_SG_01" } ] } } ====================================================================== 項番2-3.ストレージ確認 ストレージが仮想サーバと関連付けされたことを以下のパラメータで 確認します。 ・"status": "in-use" ・"attachments": [{"server_id": "<作成した仮想サーバID>"}] 環境定義コマンド例: ====================================================================== # VOLUME_ID=<仮想サーバ作成時に指定したストレージID> VOLUME_ID=eefd9954-0b8e-49a0-be0d-acc435f1n4u9 API実行コマンド例: ====================================================================== curl -Ss $BLOCKSTORAGE/v2/$PROJECT_ID/volumes/$VOLUME_ID -X GET -H "X-Auth-Token:$OS_AUTH_TOKEN" -H "Content-Type:application/json" | jq . レスポンス例: ====================================================================== { "volume": { "size": 30, "os-vol-mig-status-attr:migstat": null, "id": "eefd9954-0b8e-49a0-be0d-acc435f1n4u9", "metadata": { "attached_mode": "rw", "readonly": "False" }, "created_at": "2017-12-27T02:46:11.000000", "encrypted": false, "bootable": "false", "availability_zone": "jp-west-2a", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/volumes/eefd9954-0b8e-49a0-be0d-acc435f1n4u9" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/volumes/eefd9954-0b8e-49a0-be0d-acc435f1n4u9" } ], "attachments": [ { "volume_id": "eefd9954-0b8e-49a0-be0d-acc435f1n4u9", "id": "eefd9954-0b8e-49a0-be0d-acc435f1n4u9", "server_id": "b01da7b1-9482-4c86-b2c3-668f9c94807f", "device": "/dev/vda", "host_name": null } ], "user_id": "<ユーザID>", "status": "in-use", "description": null, "os-vol-tenant-attr:tenant_id": "<プロジェクトID>", "volume_type": "M1", "name": "TEST_STORAGE_01", "os-vol-host-attr:host": "ror-cinder@M1_28", "source_volid": null, "snapshot_id": null, "os-vol-mig-status-attr:name_id": null } } ====================================================================== 変更履歴: ─────────────────────────────────── v1.1版: ・項番全体:項番構成の見直し、説明修正 ─────────────────────────────────── 以上