###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 02-012_仮想サーバ作成【ポート指定_CentOS】 # # 内容: # 事前に作成したポートを指定し、CentOSの仮想サーバを作成する手順です。 # # 版数:v1.1 # 更新日:2018/1/26 ###################################################################### 手順: ─────────────────────────────────── 項番1.ポート確認 項番2.仮想サーバ作成(ポート指定) 項番3.仮想サーバ確認 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・ネットワーク ・サブネット ・セキュリティグループ ・キーペア ・ポート ─────────────────────────────────── 注意事項: ・ポートの作成方法については、API実行サンプル「ポート作成」を参照して ください。 項番1.ポート確認 事前に作成したポートの以下のパラメータでポートが使用されていない ことを確認します。 ・"device_owner": "" ・"status": "DOWN" 環境定義コマンド例: ====================================================================== # PORT_ID=<事前に作成したポートID> PORT_ID=2dc0da44-bbc9-4f1b-8fad-db10b37at761 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" | jq . レスポンス例: ====================================================================== { "port": { "availability_zone": "jp-west-2a", "device_id": "", "security_groups": [ "beb2e81d-a67f-4d18-9270-93324f222986" ], "id": "2dc0da44-bbc9-4f1b-8fad-db10b37at761", "fixed_ips": [ { "ip_address": "192.168.211.20", "subnet_id": "e67cc3c9-a5a8-499f-bd76-820ce5fck76g" } ], "mac_address": "fa:16:3e:a4:21:b8", "device_owner": "", "status": "DOWN", "name": "TEST_PORT_20", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "d8c49da6-0162-4014-972b-084e3e6bej60", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal" } } ====================================================================== 項番2.仮想サーバ作成(ポート指定) ポートを指定した、仮想サーバを作成します。 環境定義コマンド例: ====================================================================== # SERVER_NAME=<作成する仮想サーバ名> SERVER_NAME=TEST_SERVER_001 # IMAGE_REF_ID= IMAGE_REF_ID=c3867e5e-afd6-4858-918e-c445f9041c9d # 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=<ブロックストレージのソースタイプ(「image」を指定)> SOURCE=image # 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 # PORT_ID=<事前に作成したポートID> PORT_ID=2dc0da44-bbc9-4f1b-8fad-db10b37at761 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'", "imageRef": "", "flavorRef": "'$FLAVOR_ID'", "block_device_mapping_v2":[ {"boot_index": "0", "uuid":"'$IMAGE_REF_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": [{"port": "'$PORT_ID'"}] }}' | jq . レスポンス例: ====================================================================== { "server": { "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/342e7b93-c1e2-4cac-91b5-7417b358w6j4" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/342e7b93-c1e2-4cac-91b5-7417b358w6j4" } ], "id": "342e7b93-c1e2-4cac-91b5-7417b358w6j4", "OS-DCF:diskConfig": "MANUAL", "security_groups": [ { "name": "default" } ] } } ====================================================================== 項番3.仮想サーバ確認 指定したポートがアタッチされた仮想サーバが作成されたことを確認します。 環境定義コマンド例: ====================================================================== # SERVER_ID=<作成した仮想サーバID> SERVER_ID=342e7b93-c1e2-4cac-91b5-7417b358w6j4 API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" | jq . レスポンス例: ====================================================================== { "server": { "metadata": {}, "config_drive": "", "OS-EXT-STS:power_state": 1, "progress": 0, "accessIPv6": "", "accessIPv4": "", "os-extended-volumes:volumes_attached": [ { "id": "44620af8-4d2b-4234-8b75-6688b151e768" } ], "OS-DCF:diskConfig": "MANUAL", "tenant_id": "<プロジェクトID>", "created": "2017-12-04T02:58:12Z", "name": "TEST_SERVER_001", "user_id": "<ユーザID>", "OS-EXT-AZ:availability_zone": "jp-west-2a", "OS-SRV-USG:terminated_at": null, "image": "", "key_name": "TEST_KEY_100", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/342e7b93-c1e2-4cac-91b5-7417b358w6j4" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/342e7b93-c1e2-4cac-91b5-7417b358w6j4" } ], "addresses": { "TEST_Network_001": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.211.20", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:a4:21:b8" } ] }, "OS-EXT-SRV-ATTR:host": "jp3a01-pgy034-00", "hostId": "06b382796f85ff3ab4b76d460e498624a9b5fb78fab726162a0a0c3d", "updated": "2017-12-04T02:59:40Z", "status": "ACTIVE", "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-0001cba2", "OS-SRV-USG:launched_at": "2017-12-04T02:59:40.000000", "OS-EXT-SRV-ATTR:hypervisor_hostname": "jp3a01-pgy034-00", "flavor": { "links": [ { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/flavors/1101" } ], "id": "1101" }, "id": "342e7b93-c1e2-4cac-91b5-7417b358w6j4", "security_groups": [ { "name": "TEST_SG_01" } ] } } ====================================================================== 変更履歴: ─────────────────────────────────── v1.1版: ・項番全体:項番構成の見直し、説明修正 ─────────────────────────────────── 以上