###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 02-003_仮想サーバ作成【サーバグループ(Affinity/Anti-Affinity)設定】 # # 内容: # サーバグループ(AffinityおよびAnti-Affinity)を設定した仮想サーバ作成 # 手順です。 # # 版数:v1.2 # 更新日:2017/11/21 ###################################################################### 手順: ─────────────────────────────────── 項番1.サーバグループ作成(Anti-Affinity/Affinity指定) 項番2.仮想サーバ作成(サーバグループID指定) 項番3.仮想サーバの確認 項番4.サーバグループの参照 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・キーペア ・ネットワーク ・サブネット ・セキュリティグループ ─────────────────────────────────── 注意事項: ・サーバグループは仮想サーバ作成時のみ指定可能です。 ・作成済みの仮想サーバに指定することはできません。 ・Affinity/Anti-Affinityポリシーのサーバグループを指定して仮想 サーバを作成する際に、物理ホストに空き台数、空き容量等がない場合、 仮想サーバのステータスが”ERROR”となります。 ・物理ホストの状態(空き台数、空き容量等)を確認することはできません。 ・本API実行サンプルはCentOSを使用しています。WindowsOS等その他のOSの 場合、仮想サーバ作成手順についてはAPIユーザーズガイド等を参照し、 カスタマイズしてご利用ください。 項番1.サーバグループ作成(Anti-Affinity/Affinity設定) Anti-Affinity/Affinityを設定してサーバグループを作成します。 ・Affinityポリシーのサーバグループを設定して仮想サーバを作成すると 同じサーバグループを指定した仮想サーバ群は、1つの物理ホストに 配備されます。 ・Anti-Affinityポリシーのサーバグループを設定して仮想サーバを作成 すると同じサーバグループを指定した仮想サーバ群は、それぞれ別々 の物理ホストに配備されます。 環境定義コマンド例: ====================================================================== # SVG_NAME=<サーバグループ名(任意)> SVG_NAME=SVG_Anti_Affinity_01 # POLICY=<ポリシー("anti-affinity"、"affinity"を指定)> POLICY="anti-affinity" # AZ=<仮想サーバを作成するアベイラビリティゾーン名> AZ=jp-west-2a API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/os-server-groups -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type:application/json" -d '{"server_group":{ "name": "'$SVG_NAME'", "policies": [ "'$POLICY'" ], "availability_zone": "'$AZ'"}}' | jq . レスポンス例: ====================================================================== { "server_group": { "name": "SVG_Anti_Affinity_01", "policies": [ "anti-affinity" ], "id": "er6db48c-02d2-4485-9851-61027e088356", "metadata": {}, "members": [] } } ====================================================================== 項番2.仮想サーバ作成(サーバグループID指定) 作成したサーバグループIDを指定して仮想サーバを作成します。 環境定義コマンド例: ====================================================================== # VM_NAME=<仮想サーバ名(任意)> VM_NAME=Test_Server01 # IMAGE_REF_ID=<作成する仮想サーバのイメージID(イメージIDはAPI実行 # サンプル「リソース確認用API一覧」を参照してください)> IMAGE_REF_ID=3867e5e-afd6-4858-918e-c445f9041c9d # FLAVOR_ID=<フレーバーID(フレーバーIDはAPI実行サンプル「リソース # 確認用API一覧」を参照してください)> FLAVOR_ID=1101 # VOL_SIZE=<ブロックストレージサイズ> VOL_SIZE=30 # DEVICE_NAME=<ブロックストレージパス(「/dev/vda」の形式で指定)> DEVICE_NAME=/dev/vda # SOURCE=<ブロックストレージのソースタイプ(「image」を指定)> SOURCE=image # DESTINATION=<接続先ボリューム(volume指定)> DESTINATION=volume # ISDELETE=<(0:仮想サーバと同時に作成されるシステムストレージを、 # 仮想サーバ削除時に同時に削除しない), # (1:仮想サーバと同時に作成されるシステムストレージを、 # 仮想サーバ削除時に同時に削除する)> ISDELETE=1 # KEYNAME=<仮想サーバへのログインで利用するキーペア名> KEYNAME=Test_Key01 # INSTANCE_MAX=<仮想サーバの最大数> INSTANCE_MAX=1 # INSTANCE_MIN=<仮想サーバの最小数> INSTANCE_MIN=1 # NETWORK_ID=<あらかじめ作成したネットワークID> NETWORK_ID=94014e71-dc77-4bda-bf5d-50b8f546da6f # SG_NAME=<あらかじめ作成したセキュリティグループ名> SG_NAME=Test_SG_01 # GROUP_ID=<作成したサーバグループID> GROUP_ID=er6db48c-02d2-4485-9851-61027e088356 # 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": "'$VM_NAME'", "availability_zone": "'$AZ'", "imageRef": "", "flavorRef": "'$FLAVOR_ID'", "block_device_mapping_v2":[ {"boot_index": "0", "uuid":"'$IMAGE_REF_ID'", "volume_size": "'$VOL_SIZE'", "device_name": "'$DEVICE_NAME'", "source_type": "'$SOURCE'", "destination_type": "'$DESTINATION'", "delete_on_termination": '$ISDELETE'} ] ,"key_name": "'$KEYNAME'", "max_count": '$INSTANCE_MAX', "min_count": '$INSTANCE_MIN', "networks": [{"uuid": "'$NETWORK_ID'"}], "security_groups": [{"name": "'$SG_NAME'"}]}, "os:scheduler_hints": {"group": "'$GROUP_ID'"}}' | jq . レスポンス例: ====================================================================== { "server": { "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/d91ae478-0f69-472e-aeb9-2hc6d14cft49" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/d91ae478-0f69-472e-aeb9-2hc6d14cft49" } ], "id": "d91ae478-0f69-472e-aeb9-2hc6d14cft49", "OS-DCF:diskConfig": "MANUAL", "security_groups": [ { "name": "Test_SG_01" } ] } } ====================================================================== 項番3.仮想サーバ確認 仮想サーバが作成されたことを確認します。 環境定義コマンド例: ====================================================================== # SERVER_ID=<作成した仮想サーバID> SERVER_ID=d91ae478-0f69-472e-aeb9-2hc6d14cft49 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": "976fb405-785c-4rg5-a909-26b0db8096n4" } ], "OS-DCF:diskConfig": "MANUAL", "tenant_id": "<プロジェクトID>", "created": "2017-07-20T10:31:41Z", "name": "Test_Server01", "user_id": "<ユーザID>", "OS-EXT-AZ:availability_zone": "jp-west-2a", "OS-SRV-USG:terminated_at": null, "image": "", "key_name": "Test_Key01", "links": [ { "rel": "self", "href": "http://10.27.0.201/v2/<プロジェクトID>/servers/d91ae478-0f69-472e-aeb9-2hc6d14cft49" }, { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/servers/d91ae478-0f69-472e-aeb9-2hc6d14cft49" } ], "addresses": { "Test_NW01_network": [ { "OS-EXT-IPS:type": "fixed", "addr": "192.168.10.5", "version": 4, "OS-EXT-IPS-MAC:mac_addr": "fa:89:3f:aq:6j:7s" } ] }, "OS-EXT-SRV-ATTR:host": "jp3e01-pry089-00", "hostId": "ty7a5206974030f43987bfa37ee84e37db7f5527530608238873h6k8", "updated": "2017-07-20T10:32:15Z", "status": "ACTIVE", "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-EXT-SRV-ATTR:instance_name": "instance-000762bf", "OS-SRV-USG:launched_at": "2017-07-20T10:32:15.000000", "OS-EXT-SRV-ATTR:hypervisor_hostname": "jp3e01-pry089-00", "flavor": { "links": [ { "rel": "bookmark", "href": "http://10.27.0.201/<プロジェクトID>/flavors/1101" } ], "id": "1101" }, "id": "d91ae478-0f69-472e-aeb9-2hc6d14cft49", "security_groups": [ { "name": "Test_SG_01" } ] } } ====================================================================== 項番4.サーバグループの参照 指定したサーバグループに作成した仮想サーバが設定されていることを確認 します。 環境定義コマンド例: ====================================================================== # GROUP_ID=<指定したサーバグループID> GROUP_ID=er6db48c-02d2-4485-9851-61027e088356 API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/os-server-groups/$GROUP_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "server_group": { "availability_zone": "jp-west-2a", "name": "SVG_Anti_Affinity_01", "policies": [ "anti-affinity" ], "id": "er6db48c-02d2-4485-9851-61027e088356", "metadata": {}, "members": [ "d91ae478-0f69-472e-aeb9-2hc6d14cft49", "5bafa6c3-0db5-417e-9662-a3555a42073c" ] } } ====================================================================== 変更履歴: ─────────────────────────────────── v1.1版: ・「注意事項」:説明追記 ・「項番2.仮想サーバ作成(サーバグループID指定)」:誤記修正 v1.2版: ・「項番2.仮想サーバ作成(サーバグループID指定)」:誤記修正 ・「項番3.仮想サーバ確認」:説明修正 ─────────────────────────────────── 以上