###################################################################### # All Rights Reserved, Copyright FUJITSU LIMITED 2015-2018 # # API実行サンプル名: # 05-007_同一ドメイン内のプロジェクト間ネットワーク接続 # # 内容: # 同一ドメイン内の異なるプロジェクト間のネットワーク接続を # 作成する手順です。 # # 版数:v1.0 # 更新日:2017/09/28 ###################################################################### 手順: ─────────────────────────────────── 項番1.【プロジェクト1】プロジェクト間ネットワーク接続作成 項番2.【プロジェクト2】プロジェクト間ネットワーク接続確認 項番3.【プロジェクト1】プロジェクト間ネットワーク接続削除 ─────────────────────────────────── 事前準備: あらかじめ以下を準備する必要があります。 ─────────────────────────────────── ・プロジェクト1 ・プロジェクト2 ・【プロジェクト1】ルータ1 ・【プロジェクト1】ネットワーク1 ・【プロジェクト1】サブネット1 ・【プロジェクト1】ポート1 ・【プロジェクト2】ネットワーク2 ・【プロジェクト2】サブネット2 ・【プロジェクト2】ポート2 ─────────────────────────────────── プロジェクト間ネットワーク接続構成例: 以下のような同一ドメイン内の異なるプロジェクト間のネットワーク接続 構成例を示します。 ====================================================================== 【プロジェクト1】 【プロジェクト2】 (プロジェクト間ネットワーク接続) 【ルータ1】━━━━━━━━━━━━━━━━━━━━━┳ ┃ ┃ ┃ ┃ 【ポート1】 【ポート2】 (192.168.201.1) (192.168.201.254) ━━━━┳━━━━━━━ ━━━━━━┳━━━━━━ ┃ ┃ 【サブネット1】 【サブネット2】 (192.168.201.0/24) (192.168.211.0/24) ====================================================================== 項番1.【プロジェクト1】プロジェクト間ネットワーク接続作成 【プロジェクト1】に作成しているルータ1と【プロジェクト2】に作成 しているポート2を接続し、プロジェクト間のネットワーク接続を作成 します。 注意事項: ・APIの実行は【プロジェクト1】の環境で実行してください。 ・プロジェクト間ネットワーク接続を実施するルータと接続するポートは、 必ず異なるプロジェクトのポートを指定してください。同一プロジェ クトのポートを指定した場合は作成できません。 ・指定するルータおよびポートは、利用者が所属するドメインの環境を 指定してください。 ・ルータの作成又はポートの作成についてはAPIユーザーズガイド 「仮想ルータ作成」「ポート作成」を参照してください。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<プロジェクト間接続を行う【プロジェクト1】ルータ1のID> ROUTER_ID=c483c922-a0cc-4583-8387-2bbd1246e47h # PORT_ID=<プロジェクト間接続を行う【プロジェクト2】ポート2のID> PORT_ID=53d0897c-192a-493b-81e6-889dade0a1dr API実行コマンド例: ====================================================================== curl -Ss $NETWORK_EX/v2.0/routers/$ROUTER_ID/add_cross_project_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": "c483c922-a0cc-4583-8387-2bbd1246e92e", "port_id": "53d0897c-192a-493b-81e6-889dade0a1dr", "tenant_id": "<プロジェクトID(プロジェクト1)>", "subnet_id": "8acd2384-162e-4563-9660-eba732049431" } ====================================================================== 項番2.【プロジェクト2】プロジェクト間ネットワーク接続確認 プロジェクト間ネットワーク接続が作成されたことを確認します。 "device_id"パラメータに【プロジェクト1】のルータ1のIDが記載されて いることを確認します。 注意事項: ・APIの実行は【プロジェクト2】の環境で実行してください。 環境定義コマンド例: ====================================================================== # ROUTER_ID=<プロジェクト間接続を行った【プロジェクト1】ルータ1のID> ROUTER_ID=c483c922-a0cc-4583-8387-2bbd1246e47h API実行コマンド例: ====================================================================== curl -Ss $NETWORK/v2.0/ports?device_id=$ROUTER_ID -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" | jq . レスポンス例: ====================================================================== { "ports": [ { "availability_zone": "jp-west-2a", "device_id": "c483c922-a0cc-4583-8387-2bbd1246e47h", "security_groups": [ "889b89e6-ea49-452d-80bf-5e4230e58u39" ], "id": "53d0897c-192a-493b-81e6-889dade0a1dr", "fixed_ips": [ { "ip_address": "192.168.201.254", "subnet_id": "8acd2384-162e-4563-9660-eba732049431" } ], "mac_address": "fa:16:3e:a4:c7:eb", "device_owner": "network:router_interface", "status": "ACTIVE", "name": "TEST_PJ2_PORT_02", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "ceb24647-7f27-4414-939f-9f3198a09er2", "tenant_id": "<プロジェクトID>", "extra_dhcp_opts": [], "binding:vnic_type": "normal" } ] } ====================================================================== 注意事項: ・プロジェクト間ネットワーク接続作成後に必要に応じてルータの ルーティング設定又はサブネットのルーティング設定を実施し、 プロジェクト間相互接続可能な設定に変更してください。 手順については、API実行サンプル「05-001_サブネットの設定変更 (ルーティング設定追加)」「05-002_ルータの設定変更(ルーティング 設定追加)」を参照してください。 項番3.【プロジェクト1】プロジェクト間ネットワーク接続削除 【プロジェクト1】に作成したプロジェクト間ネットワーク接続を削除 します。 注意事項: ・APIの実行は【プロジェクト1】の環境で実行してください。 ・API実行コマンドを実行後は、対象のポート(【プロジェクト2】の ポート2)は削除されます。 環境定義コマンド例: ====================================================================== # TMP_ROUTER_ID=<プロジェクト間接続を行った【プロジェクト1】 # ルータ1のID> TMP_ROUTER_ID=c483c922-a0cc-4583-8387-2bbd1246e47h # TMP_PORT_ID=<プロジェクト間接続を行った【プロジェクト2】 # ポート2のID> TMP_PORT_ID=53d0897c-192a-493b-81e6-889dade0a1dr API実行コマンド例: ====================================================================== curl -Ss $NETWORK_EX/v2.0/routers/$TMP_ROUTER_ID/remove_cross_project_router_interface -X PUT -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type: application/json" -d '{ "port_id": "'$TMP_PORT_ID'" }' | jq . レスポンス例: ====================================================================== { "subnet_id": "8acd2384-162e-4563-9660-eba732049431", "tenant_id": "<プロジェクトID(プロジェクト1)>", "port_id": "53d0897c-192a-493b-81e6-889dade0a1dr", "id": "c483c922-a0cc-4583-8387-2bbd1246e92e", "availability_zone": "jp-west-2a" } ====================================================================== 以上