グローバルIPアドレスの取得と仮想サーバへの割り当て

仮想リソースにインターネットからアクセスするためのグローバルIPアドレスを取得し仮想サーバに割り当て、そして確認するまでの手順を解説します。

グローバルIPアドレスは取得と仮想リソース割り当ての2ステップに分かれますが、本項目では1つのAPIで実現します。



  1. 以下で必要な設定を行います。
    $ NETWORK_ID=<グローバルIPアドレスを割り当てたい仮想サーバが存在するアベイラビリティゾーンの外部ネットワークID>
    $ VM_PORT_ID=<仮想サーバID>
  2. 次のAPIを実行します。
    $ curl -Ss $NETWORK/v2.0/floatingips -X POST -H "X-Auth-Token:$OS_AUTH_TOKEN" \
    -H "Content-Type:application/json" -d '{"floatingip":
     {"floating_network_id":"'$NETWORK_ID'", "port_id":"'$VM_PORT_ID'",
     "availability_zone": "'$AZ'"}}' | jq .

    以下のレスポンスが返ってきます。

    {
      "floatingip": {
        "router_id": "<デフォルトゲートウェイの仮想ルータID>",
        "status": "DOWN",
        "tenant_id": "<プロジェクトID>",
        "floating_network_id": "<外部ネットワークアドレス>",
        "fixed_ip_address": "<プライベートIPアドレス>",
        "floating_ip_address": "<グローバルIPアドレス>",
        "port_id": "<設定したポートのID>",
        "id": "<グローバルIPアドレスのID>",
        "availability_zone": "<アベイラビリティゾーン>"
      }
    }

    アベイラビリティゾーンは、AZ1がjp-east-1a、AZ2がjp-east-1bで表現されます。

  3. 作成したグローバルIPアドレスを確認するため、以下のAPIを実行します。
    $ curl -Ss $NETWORK/v2.0/floatingips -X GET -H "X-Auth-Token:$OS_AUTH_TOKEN" \
    -H "Content-Type:application/json" | jq .

    以下のように、新規割り当てしたグローバルIPアドレスを含んだリストが出力された場合、作成は完了です。

    {
      "floatingips": [
      
      ...
      
       {
         "router_id": "<デフォルトゲートウェイの仮想ルータID>",
         "status": "<ステータス>",
         "tenant_id": "<プロジェクトID>",
         "floating_network_id": "<外部ネットワークアドレス>",
         "fixed_ip_address": "<プライベートIPアドレス>",
         "floating_ip_address": "<グローバルIPアドレス>",
         "port_id": "<ポートのID>",
         "id": "<グローバルIPアドレスのID>",
         "availability_zone": "<アベイラビリティゾーン>"
       }
       
       ...
       
      ]
    }