初めに
OCIのパブリック・サブネットにComputeインスタンスを作成すると、デフォルトでエフェメラル・パブリックIPが割り当てられます。エフェメラルIPは、インスタンスの存続期間にのみ有効な一時的なIPアドレスです。
一方で、システムの運用が進むと、以下のような要件が出てくることがあります。
- インスタンス停止や再作成時にも同じIPを利用したい
- 固定のIPアドレスを外部システムに登録したい
- DNS設定を安定させたい
このような場合、予約済パブリックIP(Reserved Public IP)を利用することが一般的です。
「エフェメラルIPを予約済IPに変更したいが可能か?」という疑問を持つ方も多いのではないでしょうか。
オラクルの公式ドキュメントでは、次のように説明されています。
「特定のパブリックIPを作成したら、そのタイプを変更することはできません。たとえば、アドレス203.0.113.2を持つエフェメラル・パブリックIPが割り当てられているインスタンスを起動した場合、このエフェメラル・パブリックIPを、アドレス203.0.113.2を持つ予約済パブリックIPに変換することはできません。」
つまり、同じIPアドレスのままタイプを変更することはできません。しかし、新しい予約済パブリックIPを作成してインスタンスに付与することは可能です。
実際の運用では、以下の流れで対応します:
- 予約済パブリックIPを作成する
- エフェメラル・パブリックIPを解除する
- 予約済パブリックIPをインスタンスに割り当てる
なお、OCIではエフェメラルIPと予約済IPのいずれも基本的に無料で利用できます。これは、AWS (Amazon Web Services)、Microsoft Azure、GCP (Google Cloud Platform) などの他クラウドと比較した場合、大きなメリットの一つです。
本記事では、OCIコンソールおよびOCI CLIを使用して、エフェメラルIPを予約済パブリックIPへ変更する具体的な手順を解説します。
変更方法
事前準備:エフェメラル・パブリックIPのあるComputeインスタンスを用意しておきます。
1. 予約済パブリックIPを作成する
Networking → IP Management → Public IPs → Reserve Public IP Address
指定したCompartmentに、パブリックIPの名前を入力してから、予約を実施します。
2. エフェメラル・パブリックIPを解除する
Compute → Instances → Instance Details → Attached VNICs
ComputeインスタンスのVNICを指定します。
VNIC Details → Resources → IPv4 Address → Edit
IPv4アドレスの画面より、編集ボタンをクリックします。
編集画面に入ったら、予約済パブリックIPの選択肢が、グレーの状態となり直接に変更できません。
それで、"NO PUBLIC IP"を指定し、変更を実施します。
3. 予約済パブリックIPをインスタンスに割り当てる
上記の変更処理が、すぐ適用されます。実施後、もう一度アドレスの編集画面を開きます。
今回は、予約済パブリックIPが選択可能の状態となります。それを選択し、ステップ1で予約したパブリックIPを指定してから、変更を実施します。
実施後、すぐ予約済みパブリックIPに変更されます。
新しいIPでインスタンスへの接続が、できる状態です。ここまで、変更処理は完了です。
4. OCI-CLIでの実施方法
事前にIPアドレスのOCIDを取得しておいてください。
a) 指定したプライベートIPのOCIDを取得
例:oci network private-ip list --ip-address <Private_IP> --subnet-id <Subnet_OCID>
b) パブリックIPを取得
例:oci network public-ip list -c <compartment_ocid> --scope REGION --all
このコマンドの出力には、エフェメラル・パブリックIPと予約済エフェメラルIPの両方を含めます。片方のみを取得したい場合、--lifetimeをつけてください。
エフェメラル・パブリックIPの場合:--lifetime EPHEMERAL
予約済パブリックIPの場合:--lifetime RESERVED
c) 自動に割り当てられたエフェメラル・パブリックIPを解除
例:oci network public-ip delete --public-ip-id <Ephemeral_Public_IP_OCID>
d) 予約済パブリックIPの割り当て
例:oci network public-ip update --public-ip-id <Reserved_Public_IP_OCID> --private-ip-id <Private_IP_OCID>
e) 割り当てた予約済パブリックIPの解除
例:oci network public-ip update --public-ip-id <Reserved_Public_IP_OCID> --private-ip-id ""
※、プライベートIPを空白の文字列にすると、割り当てた予約済パブリックIPが解除されます。
以上