###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 05-013_ルータにポートをアタッチ(多階層) # # 内容: # ルータにポートをアタッチし、二階層以上のネットワーク環境を構築する # ための設定手順です。 # # 版数:v1.0 # 更新日:2017/11/21 ###################################################################### 手順: ─────────────────────────────────── 項番1.ルータ1確認 項番2.外部ネットワーク確認 項番3.ルータ1に外部ネットワークをアタッチ 項番3-1.ルータ1に外部ネットワークをアタッチ 項番3-2.ルータ1と外部ネットワークのアタッチ確認 項番4.ポート1確認 項番5.ルータ1にポート1をアタッチ 項番5-1.ルータ1にポート1をアタッチ 項番5-2.ルータ1とポート1のアタッチ確認 項番6.ルータ2確認 項番7.ポート2確認 項番8.ルータ2にポート2をアタッチ 項番8-1.ルータ2にポート2をアタッチ 項番8-2.ルータ2とポート2のアタッチ確認 項番9.ポート3確認 項番10.ルータ2にポート3をアタッチ 項番10-1.ルータ2にポート3をアタッチ 項番10-2.ルータ2とポート3のアタッチ確認 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・ルータ1 ・ルータ2 ・ネットワーク1 ・ネットワーク2 ・サブネット1 ・サブネット2 ・ポート1 ・ポート2 ・ポート3 ─────────────────────────────────── 二階層ネットワーク設定構成例: 以下のような多段ネットワーク構成を作成する際のルータにポートを アタッチする構成例を示します。 ====================================================================== 【外部ネットワーク】 ━┳━━━━━━ ┃ 【ルータ1】 (192.168.212.1) 【ポート1】 ┃ 【サブネット1】 ┗━━━┳━━━(192.168.212.0/24) ━━━━━━━┳━━ ┃ ┃ ┃ 【ポート3】 (192.168.212.11) (192.168.212.254) 【仮想サーバ1】 【ルータ2】 (192.168.22.1) 【ポート2】 【サブネット2】 ┃ ━━━┳━━━(192.168.22.0/24) ━━━━━━━┻━━ ┃ (192.168.22.12) 【仮想サーバ2】 ====================================================================== 注意事項: ・ポートの作成方法についてはAPI実行サンプル「ポート作成」を参照して ください。 ・本API実行サンプルではルータにポートをアタッチする手順を記載して います。ルータにサブネットをアタッチする手順及びルータからポートを デタッチする手順についてはAPI実行サンプル「ルータにポートを アタッチ/デタッチ」を参照してください。 項番1.ルータ1確認 外部ネットワークをアタッチするルータ1の状態を確認します。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<外部ネットワークをアタッチするルータ1ID> ROUTER_ID=f8fcc5ae-5b7b-4a71-81dd-b15117225dg6 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/routers/$ROUTER_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "router": { "availability_zone": "jp-west-2a", "id": "f8fcc5ae-5b7b-4a71-81dd-b15117225dg6", "routes": [], "tenant_id": "<プロジェクトID>", "admin_state_up": true, "name": "TEST_EXT_RT_01", "external_gateway_info": null, "status": "ACTIVE" } } ====================================================================== 項番2.外部ネットワーク確認 ルータ1にアタッチする外部ネットワークの状態を確認します。 環境定義コマンド例: ====================================================================== # NETWORK_ID=<ルータ1にアタッチする外部ネットワークID> NETWORK_ID=b3ca0a26-abc5-46e8-82f2-3f27b5e7b24d API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/networks/$NETWORK_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "network": { "availability_zone": "jp-west-2a", "status": "ACTIVE", "subnets": [ "94899ab5-1489-4ee3-83b5-3429b66c3rf4", "d0f5c20f-8668-4741-b0f8-3d3b82b7km57" ], "name": "inf_az1_ext-net03", "router:external": true, "tenant_id": "<プロジェクトID>", "admin_state_up": true, "shared": true, "id": "b3ca0a26-abc5-46e8-82f2-3f27b5e7b24d" } } ====================================================================== 項番3.ルータ1に外部ネットワークをアタッチ ルータ1に外部ネットワークをアタッチし、外部ネットワークがアタッチ されたことを確認します。 項番3-1.ルータ1に外部ネットワークをアタッチ ルータ1に外部ネットワークをアタッチします。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<外部ネットワークをアタッチするルータ1ID> ROUTER_ID=f8fcc5ae-5b7b-4a71-81dd-b15117225dg6 # EXT_NET_ID=<ルータ1にアタッチする外部ネットワークID> EXT_NET_ID=b3ca0a26-abc5-46e8-82f2-3f27b5e7b24d API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/routers/$ROUTER_ID -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"router": {"external_gateway_info": { "network_id": "'$EXT_NET_ID'"}}}' | jq . レスポンス例: ====================================================================== { "router": { "availability_zone": "jp-west-2a", "id": "f8fcc5ae-5b7b-4a71-81dd-b15117225dg6", "routes": [], "tenant_id": "<プロジェクトID>", "admin_state_up": true, "name": "TEST_EXT_RT_01", "external_gateway_info": { "enable_snat": true, "network_id": "b3ca0a26-abc5-46e8-82f2-3f27b5e7b24d" }, "status": "ACTIVE" } } ====================================================================== 項番3-2.ルータ1と外部ネットワークのアタッチ確認 ルータ1と外部ネットワークがアタッチされたことを "external_gateway_info"の以下のパラメータで確認します。 ・"enable_snat": true が記載されていること。 ・"network_id"にアタッチした外部ネットワークIDが記載されていること。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<外部ネットワークをアタッチしたルータ1ID> ROUTER_ID=f8fcc5ae-5b7b-4a71-81dd-b15117225dg6 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/routers/$ROUTER_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "router": { "availability_zone": "jp-west-2a", "id": "f8fcc5ae-5b7b-4a71-81dd-b15117225dg6", "routes": [], "tenant_id": "<プロジェクトID>", "admin_state_up": true, "name": "TEST_EXT_RT_01", "external_gateway_info": { "enable_snat": true, "network_id": "b3ca0a26-abc5-46e8-82f2-3f27b5e7b24d" }, "status": "ACTIVE" } } ====================================================================== 項番4.ポート1確認 ルータ1にアタッチするポート1の状態を確認します。 環境定義コマンド例: ====================================================================== # PORT_ID=<ルータ1にアタッチするポート1ID> PORT_ID=ba59de04-5e31-4537-ba8c-2f0d7b21d1m4 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "availability_zone": "jp-west-2a", "device_id": "", "security_groups": [], "id": "ba59de04-5e31-4537-ba8c-2f0d7b21d1m4", "fixed_ips": [ { "ip_address": "192.168.212.1", "subnet_id": "a6d8ecf7-385c-4ccd-8528-e2c0b4899632" } ], "mac_address": "fa:16:3e:97:0b:4e", "status": "DOWN", "name": "", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "0e47de93-7142-4ff0-b7c3-5a1edfb183f", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal" } } ====================================================================== 項番5.ルータ1にポート1をアタッチ ルータ1にポート1をアタッチし、ポート1がアタッチされたことを 確認します。 項番5-1.ルータ1にポート1をアタッチ ルータ1にポート1をアタッチします。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<ポート1をアタッチするルータ1ID> ROUTER_ID=f8fcc5ae-5b7b-4a71-81dd-b15117225dg6 # PORT_ID=<ルータ1にアタッチするポート1ID> PORT_ID=ba59de04-5e31-4537-ba8c-2f0d7b21d1m4 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/routers/$ROUTER_ID/add_router_interface -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"port_id": "'$PORT_ID'" }' | jq . レスポンス例: ====================================================================== { "availability_zone": "jp-west-2a", "id": "f8fcc5ae-5b7b-4a71-81dd-b15117225dg6", "port_id": "ba59de04-5e31-4537-ba8c-2f0d7b21d1m4", "tenant_id": "<プロジェクトID>", "subnet_id": "a6d8ecf7-385c-4ccd-8528-e2c0b4899632" } ====================================================================== 項番5-2.ルータ1とポート1のアタッチ確認 ルータ1にポート1がアタッチされたことを以下のパラメータで 確認します。 ・"device_id"にアタッチしたルータ1IDが記載されていること。 ・"device_owner": "network:router_interface"が記載されていること。 環境定義コマンド例: ====================================================================== # PORT_ID=<ルータ1にアタッチしたポート1ID> PORT_ID=ba59de04-5e31-4537-ba8c-2f0d7b21d1m4 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "availability_zone": "jp-west-2a", "device_id": "f8fcc5ae-5b7b-4a71-81dd-b15117225dg6", "security_groups": [], "id": "ba59de04-5e31-4537-ba8c-2f0d7b21d1m4", "fixed_ips": [ { "ip_address": "192.168.212.1", "subnet_id": "a6d8ecf7-385c-4ccd-8528-e2c0b4899632" } ], "mac_address": "fa:16:3e:97:0b:4e", "device_owner": "network:router_interface", "status": "ACTIVE", "name": "", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "0e47de93-7142-4ff0-b7c3-5a1edfb183f", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal" } } ====================================================================== 項番6.ルータ2確認 ポート2をアタッチするルータ2の状態を確認します。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<ポート2をアタッチするルータ2ID> ROUTER_ID=0274ec8e-e75b-4231-8f12-f21e9466c4f2 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/routers/$ROUTER_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "router": { "availability_zone": "jp-west-2a", "id": "0274ec8e-e75b-4231-8f12-f21e9466f8j7", "routes": [], "tenant_id": "<プロジェクトID>", "admin_state_up": true, "name": "TEST_IN_RT_02", "external_gateway_info": null, "status": "ACTIVE" } } ====================================================================== 項番7.ポート2確認 ルータ2にアタッチするポート2の状態を確認します。 環境定義コマンド例: ====================================================================== # PORT_ID=<ルータ2にアタッチするポート2ID> PORT_ID=fe5a9280-553b-40d3-8f82-57c7445114f8 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "availability_zone": "jp-west-2a", "device_id": "", "security_groups": [], "id": "fe5a9280-553b-40d3-8f82-57c7445114f8", "fixed_ips": [ { "ip_address": "192.168.22.1", "subnet_id": "d0a049f4-c3a8-41b8-8ebf-f8fa93379275" } ], "mac_address": "fa:16:3e:15:f8:a6", "status": "ACTIVE", "name": "", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "ff9344d6-b4f8-42b8-b23a-9c09212b9e6h", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal" } } ====================================================================== 項番8.ルータ2にポート2をアタッチ ルータ2にポート2をアタッチし、ポート2がアタッチされたことを 確認します。 項番8-1.ルータ2にポート2をアタッチ ルータ2にポート2をアタッチします。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<ポート2をアタッチするルータ2ID> ROUTER_ID=0274ec8e-e75b-4231-8f12-f21e9466c4f2 # PORT_ID=<ルータ2にアタッチするポート2ID> PORT_ID=fe5a9280-553b-40d3-8f82-57c7445114f8 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/routers/$ROUTER_ID/add_router_interface -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"port_id": "'$PORT_ID'" }' | jq . レスポンス例: ====================================================================== { "availability_zone": "jp-west-2a", "id": "0274ec8e-e75b-4231-8f12-f21e9466c4f2", "port_id": "fe5a9280-553b-40d3-8f82-57c7445114f8", "tenant_id": "<プロジェクトID>", "subnet_id": "d0a049f4-c3a8-41b8-8ebf-f8fa93379275" } ====================================================================== 項番8-2.ルータ2とポート2のアタッチ確認 ルータ2にポート2がアタッチされたことを以下のパラメータで 確認します。 ・"device_id"にアタッチしたルータ2IDが記載されていること。 ・"device_owner": "network:router_interface"が記載されていること。 環境定義コマンド例: ====================================================================== # PORT_ID=<ルータ2にアタッチしたポート2ID> PORT_ID=fe5a9280-553b-40d3-8f82-57c7445114f8 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "availability_zone": "jp-west-2a", "device_id": "0274ec8e-e75b-4231-8f12-f21e9466c4f2", "security_groups": [], "id": "fe5a9280-553b-40d3-8f82-57c7445114f8", "fixed_ips": [ { "ip_address": "192.168.22.1", "subnet_id": "d0a049f4-c3a8-41b8-8ebf-f8fa93379275" } ], "mac_address": "fa:16:3e:15:f8:a6", "device_owner": "network:router_interface", "status": "ACTIVE", "name": "", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "ff9344d6-b4f8-42b8-b23a-9c09212b9e6h", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal" } } ====================================================================== 項番9.ポート3確認 ルータ2にアタッチするポート3の状態を確認します。 環境定義コマンド例: ====================================================================== # PORT_ID=<ルータ2にアタッチするポート3ID> PORT_ID=59048602-fdee-4874-94ef-e3359434eg42 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "availability_zone": "jp-west-2a", "device_id": "", "security_groups": [ "beb2e81d-a67f-4d18-9270-93324f228734" ], "id": "59048602-fdee-4874-94ef-e3359434eg42", "fixed_ips": [ { "ip_address": "192.168.212.254", "subnet_id": "a6d8ecf7-385c-4ccd-8528-e2c0b4899632" } ], "mac_address": "fa:16:3e:89:84:10", "status": "DOWN", "name": "TEST_NW01_ROPT_254", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "0e47de93-7142-4ff0-b7c3-5a1edfb183f", "tenant_id": "<プロジェクトID>", "binding:vnic_type": "normal", "device_owner": "" } } ====================================================================== 項番10.ルータ2にポート3をアタッチ ルータ2にポート3をアタッチし、ポート3がアタッチされたことを 確認します。 項番10-1.ルータ2にポート3をアタッチ ルータ2にポート3をアタッチします。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<ポート3をアタッチするルータ2ID> ROUTER_ID=0274ec8e-e75b-4231-8f12-f21e9466c4f2 # PORT_ID=<ルータ2にアタッチするポート3ID> PORT_ID=59048602-fdee-4874-94ef-e3359434eg42 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/routers/$ROUTER_ID/add_router_interface -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{"port_id": "'$PORT_ID'" }' | jq . レスポンス例: ====================================================================== { "availability_zone": "jp-west-2a", "id": "0274ec8e-e75b-4231-8f12-f21e9466c4f2", "port_id": "59048602-fdee-4874-94ef-e3359434eg42", "tenant_id": "<プロジェクトID>", "subnet_id": "a6d8ecf7-385c-4ccd-8528-e2c0b4899632" } ====================================================================== 項番10-2.ルータ2とポート3のアタッチ確認 ルータ2にポート3がアタッチされたことを以下のパラメータで 確認します。 ・"device_id"にアタッチしたルータ2IDが記載されていること。 ・"device_owner": "network:router_interface"が記載されていること。 環境定義コマンド例: ====================================================================== # PORT_ID=<ルータ2にアタッチしたポート3ID> PORT_ID=59048602-fdee-4874-94ef-e3359434eg42 API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports/$PORT_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq . レスポンス例: ====================================================================== { "port": { "availability_zone": "jp-west-2a", "device_id": "0274ec8e-e75b-4231-8f12-f21e9466c4f2", "security_groups": [ "beb2e81d-a67f-4d18-9270-93324f228734" ], "id": "59048602-fdee-4874-94ef-e3359434eg42", "fixed_ips": [ { "ip_address": "192.168.212.254", "subnet_id": "a6d8ecf7-385c-4ccd-8528-e2c0b4899632" } ], "mac_address": "fa:16:3e:89:84:10", "device_owner": "network:router_interface", "status": "ACTIVE", "name": "TEST_NW01_ROPT_254", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "0e47de93-7142-4ff0-b7c3-5a1edfb183f", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal" } } ====================================================================== 注意事項: ルーティング設定を行っていない場合は、サブネットのルーティング設定 または、ルータのルーティング設定を実施してください。 手順についてはAPI実行サンプル「サブネットの設定変更(ルーティング 設定追加)」「ルータの設定変更(ルーティング設定追加)」を参照して ください。 以上