仮想サーバなどのリソースをネットワークに接続するため、IPアドレスとの関連付けを行うポート(ネットワークインターフェース)を作成し、確認するまでの手順を解説します。
以下のリソースを作成する際にサブネットだけを指定した場合、システムが自動的にポートを作成して割り当てます。
- 仮想サーバ
注: DHCPによる自動割当てではなくIPアドレスを指定して配備したい場合は、そのIPアドレスでポートを事前に作成したあと、仮想サーバに割り当ててください。
ヒント: 仮想サーバにはポートを複数追加できます。
- 仮想ルータ
注: デフォルトゲートウェイ(x.x.x.1)に作成する場合だけ、自動でポートを割り当てます。すでにx.x.x.1のアドレスで仮想ルータが接続されているネットワークに仮想ルータを追加する場合は、手動でポートを構成する必要があります。
-
以下で必要な設定を行います。
$ PORT_NAME=<ポート名(任意)>
$ NETWORK_ID=<ネットワークID>
$ SUBNET_ID=<サブネットID>
$ FIXED_IP_ADDRESS=<指定するIPアドレス「XXX.XXX.XXX.XXX」(サブネット作成時に指定した範囲内)で指定>
$ SG_ID=<セキュリティグループID>
-
次のAPIを実行します。
$ curl -Ss $NETWORK/v2.0/ports -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" \
-H "Content-Type: application/json" -d '{"port": {"network_id": "'$NETWORK_ID'",
"name": "'$PORT_NAME'", "availability_zone": "'$AZ'",
"fixed_ips": [{"subnet_id": "'$SUBNET_ID'", "ip_address": "'$FIXED_IP_ADDRESS'"}],
"security_groups": ["'$SG_ID'"]}}' | jq .
以下のレスポンスが返ってきます。
{
"port": {
"status": "<ステータス>",
"name": "<ポート名>",
"allowed_address_pairs": [],
"admin_state_up": true,
"network_id": "<ネットワークID>",
"tenant_id": "<プロジェクトID>",
"binding:vnic_type": "normal",
"device_owner": "",
"mac_address": "<MACアドレス>",
"fixed_ips": [
{
"subnet_id": "<サブネットID>",
"ip_address": "<指定するIPアドレス「XXX.XXX.XXX.XXX」>"
}
],
"id": "<ポートID>",
"security_groups": [
null
],
"device_id": "",
"availability_zone": "<アベイラビリティゾーン>"
}
}
アベイラビリティゾーンは、AZ1がjp-east-1a、AZ2がjp-east-1bで表現されます。
-
作成したポートを確認するため、以下のAPIを実行します。
$ curl -Ss $NETWORK/v2.0/ports -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | \
jq '.ports[]| .name, .status, .id, .fixed_ips[]'
以下のように、設定したポート名を含んだリストが出力された場合、作成は完了です。
...
""
"<ステータス>"
"<ポートID>"
{
"subnet_id": "<サブネットID>",
"ip_address": "<プライベートIPアドレス>"
}
...