ポート作成

仮想サーバなどのリソースをネットワークに接続するため、IPアドレスとの関連付けを行うポート(ネットワークインターフェース)を作成し、確認するまでの手順を解説します。



以下のリソースを作成する際にサブネットだけを指定した場合、システムが自動的にポートを作成して割り当てます。

  • 仮想サーバ
    注: DHCPによる自動割当てではなくIPアドレスを指定して配備したい場合は、そのIPアドレスでポートを事前に作成したあと、仮想サーバに割り当ててください。
    ヒント: 仮想サーバにはポートを複数追加できます。
  • 仮想ルータ
    注: デフォルトゲートウェイ(x.x.x.1)に作成する場合だけ、自動でポートを割り当てます。すでにx.x.x.1のアドレスで仮想ルータが接続されているネットワークに仮想ルータを追加する場合は、手動でポートを構成する必要があります。
  1. 以下で必要な設定を行います。
    $ PORT_NAME=<ポート名(任意)>
    $ NETWORK_ID=<ネットワークID>
    $ SUBNET_ID=<サブネットID>
    $ FIXED_IP_ADDRESS=<指定するIPアドレス「XXX.XXX.XXX.XXX」(サブネット作成時に指定した範囲内)で指定>
    $ SG_ID=<セキュリティグループID>
  2. 次の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で表現されます。

  3. 作成したポートを確認するため、以下の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アドレス>"
    }
    
    ...