###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 05-018_仮想サーバのセキュリティグループ変更 # # 内容: # 仮想サーバのポートに設定されているセキュリティグループを変更する # 手順です。 # # 版数:v1.1 # 更新日:2018/1/26 ###################################################################### 手順: ─────────────────────────────────── 項番1.仮想サーバポート確認 項番2.ポート詳細情報取得 項番3.セキュリティグループ変更 項番4.セキュリティグループ変更確認 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・仮想サーバ ・ポート ・セキュリティグループ1 ・セキュリティグループ2 ─────────────────────────────────── 注意事項: ・ポートの詳細情報取得のパラメータにおいて、"device_owner"パラメータが 以下の場合はポート内容変更は行わないでください。 ・"network:dhcp" ・"network:router_interface" 項番1.仮想サーバポート確認 セキュリティグループを変更する仮想サーバのポートを確認します。 環境定義コマンド例: ====================================================================== # SERVER_ID=<セキュリティグループを変更する仮想サーバID> SERVER_ID=670543b2-1822-4dd7-b6b9-ae7af5a6828b API実行コマンド例: ====================================================================== curl -Ss $COMPUTE/v2/$PROJECT_ID/servers/$SERVER_ID/os-interface -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "interfaceAttachments": [ { "port_state": "ACTIVE", "fixed_ips": [ { "subnet_id": "d96fc4b0-279b-4f37-9a48-1d86a90c29ae", "ip_address": "192.168.50.111" } ], "port_id": "5a777c73-0773-44fa-8f47-be6de58a01e1", "net_id": "d7e7aff4-dd3d-4b68-bfc0-190ef3fa2289", "mac_addr": "fa:16:3e:ce:f8:8e" } ] } ====================================================================== 項番2.ポート詳細情報取得 仮想サーバのポートに設定されているセキュリティグループ1を確認します。 環境定義コマンド例: ====================================================================== # PORT_ID=<仮想サーバのポートID> PORT_ID=5a777c73-0773-44fa-8f47-be6de58a01e1 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "status": "ACTIVE", "name": "TEST_PORT01", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "d7e7aff4-dd3d-4b68-bfc0-190ef3fa2289", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal", "device_owner": "compute:None", "mac_address": "fa:16:3e:ce:f8:8e", "fixed_ips": [ { "subnet_id": "d96fc4b0-279b-4f37-9a48-1d86a90c29ae", "ip_address": "192.168.50.111" } ], "id": "5a777c73-0773-44fa-8f47-be6de58a01e1", "security_groups": [ "832ce03a-73f2-455a-a01e-dff8ecb4aabd" ], "device_id": "670543b2-1822-4dd7-b6b9-ae7af5a6828b", "availability_zone": "jp-west-2a" } } ====================================================================== 項番3.セキュリティグループ変更 仮想サーバのポートに設定されているセキュリティグループ1を セキュリティグループ2に変更します。 環境定義コマンド例: ====================================================================== # PORT_ID=<セキュリティグループを変更する仮想サーバのポートID> PORT_ID=5a777c73-0773-44fa-8f47-be6de58a01e1 # SG_ID=<セキュリティグループ2ID> SG_ID=90eafe21-a527-4954-9302-fd3428ee4b63 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type:application/json" -d '{"port": {"security_groups": ["'$SG_ID'"]}} ' | jq . レスポンス例: ====================================================================== { "port": { "status": "ACTIVE", "name": "TEST_PORT01", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "d7e7aff4-dd3d-4b68-bfc0-190ef3fa2289", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal", "device_owner": "compute:None", "mac_address": "fa:16:3e:ce:f8:8e", "fixed_ips": [ { "subnet_id": "d96fc4b0-279b-4f37-9a48-1d86a90c29ae", "ip_address": "192.168.50.111" } ], "id": "5a777c73-0773-44fa-8f47-be6de58a01e1", "security_groups": [ "90eafe21-a527-4954-9302-fd3428ee4b63" ], "device_id": "670543b2-1822-4dd7-b6b9-ae7af5a6828b", "availability_zone": "jp-west-2a" } } ====================================================================== 項番4.セキュリティグループ変更確認 仮想サーバポートにセキュリティグループ2が設定されていることを確認 します。 環境定義コマンド例: ====================================================================== # PORT_ID=<セキュリティグループを変更した仮想サーバのポートID> PORT_ID=5a777c73-0773-44fa-8f47-be6de58a01e1 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "status": "ACTIVE", "name": "TEST_PORT01", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "d7e7aff4-dd3d-4b68-bfc0-190ef3fa2289", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal", "device_owner": "compute:None", "mac_address": "fa:16:3e:ce:f8:8e", "fixed_ips": [ { "subnet_id": "d96fc4b0-279b-4f37-9a48-1d86a90c29ae", "ip_address": "192.168.50.111" } ], "id": "5a777c73-0773-44fa-8f47-be6de58a01e1", "security_groups": [ "90eafe21-a527-4954-9302-fd3428ee4b63" ], "device_id": "670543b2-1822-4dd7-b6b9-ae7af5a6828b", "availability_zone": "jp-west-2a" } } ====================================================================== 変更履歴: ─────────────────────────────────── v1.1版: ・項番全体:項番構成の見直し、説明修正 ─────────────────────────────────── 以上