OCI CLIのインスタンスプリンシパル認証は --auth オプションなしでも利用できる

はじめに

こんにちは、技術部の内藤です。小ネタです。

OCI CLIでインスタンスプリンシパル認証を使用する際、毎回 --auth instance_principal オプションを指定するのは面倒です。環境変数を設定することで、このオプションを省略できるようになります。

インスタンスプリンシパルとは

インスタンスプリンシパルは、OCIのコンピュートインスタンスがAPIキーを使わずにOCIサービスにアクセスできる認証方式です。インスタンス自体がプリンシパル(認証主体)として機能し、適切なポリシーが設定されていれば、インスタンス上のアプリケーションやOCI CLIからOCIリソースにアクセスできます。

詳細については、以下の公式情報をご確認ください。

動的グループとポリシーの説明はしませんので、上記公式情報などを参考に、動的グループと必要なポリシーを設定してください。

オプションでのインスタンスプリンシパル認証の使用方法

OCI CLIでインスタンスプリンシパル認証を使用する場合、通常は以下のように --auth instance_principal オプションを指定します。

oci compute instance list --auth instance_principal

毎回このオプションを指定するのは手間がかかります。

環境変数による設定

環境変数 OCI_CLI_AUTH を設定することで、認証方式をデフォルトで指定できます。

bashなら .bashrc などに記載しておきましょう。

export OCI_CLI_AUTH=instance_principal

この環境変数を設定すると、OCI CLIコマンドで --auth オプションを省略できます。

oci compute instance list

おわりに

おわりです。

OCIのOKEのポッドのNSGはOCI CLIだと変更できる

はじめに

こんにちは、技術部の内藤です。

タイトルそのままですが、OKEでは、記事執筆の2025年6月30日時点で、作成したノードプールのポッドのNSGを変更することはできませんが、CLIだと変更できます。コマンドの引数が複雑かつドキュメント見てもよくわからないので、詳細を説明します。

なぜか変更できないポッドのNSG

画像のように、少なくとも私の環境だとグレーアウトされており、ポッドのNSGを確認・変更ができません。

NSGがグレーアウトされている

サブネットにはなにも出ない、、、

サブネットにはなにも出てこない

私が初めてOKEを使った2024年の10月からこうなっており、普通にバグな気がするのですが、なかなか直してくれませんね、、、
それとも、仕様なのでしょうか?

NSGの変更方法1 - ノードプールを作り直す

変更方法と言っていいかあやしいですが、ノードプール作成時には問題なくNSGを設定できるので、ノードプールを作り直すことでNSGを変更可能です。

これはいまいちなので、まともな方法を紹介します。

NSGの変更方法2 - OCI CLIを使う

OCI CLIを使うと、ノードプールを作り直すことなく、ポッドのNSGを変更できます。

まず、現在のサブネットとNSGのIDを確認してみましょう。

oci ce node-pool get --node-pool-id xxx

出力結果の例

{
// 省略
    "node-config-details": {
      // 省略
      "node-pool-pod-network-option-details": {
        "cni-type": "OCI_VCN_IP_NATIVE",
        "max-pods-per-node": null,
        "pod-nsg-ids": [
          "value1",
          "value2",
          "value3"
        ],
        "pod-subnet-ids": [
          "value"
        ]
// 省略
}

次に、引数の値を記述したjsonファイルを用意するために、どのようなkey,valueが必要かを、以下のコマンドで確認します。

oci ce node-pool update --generate-full-command-json-input

出力結果の例

{
  // 省略
  "nodePoolId": "string",
  // 省略
  "podNsgIds": [
    "string",
    "string"
  ],
  "podSubnetIds": [
    "string",
    "string"
  ],
  //
}

podSubnetIds も必須なので載せています。


仮にOCIDがvalue1,2,3のNSGがアタッチされているとして、value4のOCIDのNSGをアタッチするとして、以下のjsonファイルを params.json として作成します。
※ファイル名はなんでも構いません

{
  "nodePoolId": "value",
  "podSubnetIds": [
    "value"
  ],
  "podNsgIds": [
    "value1",
    "value2",
    "value3",
    "value4"
  ]
}

最後に、のコマンドでポッドのNSGを更新します。 --from-json で、ファイルを指定できます。確認がある場合は、yを入力してEnterです。

oci --profile old ce node-pool update --from-json params.json
WARNING: Updates to initial-node-labels and subnet-ids and node-config-details and node-metadata and node-source-details and node-shape-config and freeform-tags and defined-tags and node-eviction-node-pool-settings and node-pool-cycling-details will replace any existing values. Are you sure you want to continue? [y/N]: y
{
  "opc-work-request-id": "ocid1.clustersworkrequest.xxxxx"
}

これでもう一度getコマンドで確認すると、ポッドのNSGが追加されています。

oci ce node-pool get --node-pool-id xxx
{
// 省略
    "node-config-details": {
      // 省略
      "node-pool-pod-network-option-details": {
        "cni-type": "OCI_VCN_IP_NATIVE",
        "max-pods-per-node": null,
        "pod-nsg-ids": [
          "value1",
          "value2",
          "value3",
          "value4"
        ],
        "pod-subnet-ids": [
          "value"
        ]
// 省略
}

おわりに

OCIのコンソールでポッドのNSGが変更できないのは不便ですが、OCI CLIを使うことでjsonファイルの作成の手間はありつつも変更できます。

このバグ?仕様?が早く改善されることを願います。

OCIでリソースの表示名はOCI CLIを使うと変更できることがある

はじめに

こんにちは、技術部の内藤です。

OCIを使っていると、コンソール画面でリソース名(表示名)を変更しようとしても、編集するUIがないリソースが多々あります。特にネットワーク関連のリソースでは、変更できないけど後から分かりやすい名前に変更したくなることが私はあります。

しかし、OCI CLIを使えば、コンソールでは変更できないリソースの表示名も変更できる場合があります。

今回は、OCI CLIを使ってリソース名を変更する方法を紹介します。

OCI CLIのインストール

OCI CLIがまだインストールされていない場合は、公式ドキュメントを参考にインストールし、権限の設定を行ってください。

CLIで変更できるリソースとコマンドの例

例として、コンソールでは名称変更できない以下のリソースの表示名の変更コマンドを紹介します。各リソースのリンクは、該当のCLIコマンドの公式ドキュメントです。

  • VCN
  • サブネット
  • [ルートテーブル](## はじめに
    こんにちは、技術部の内藤です。

OCIを使っていると、コンソール画面でリソース名(表示名)を変更しようとしても、編集するUIがないリソースが多々あります。特にネットワーク関連のリソースでは、変更できないけど後から分かりやすい名前に変更したくなることが私はあります。

しかし、OCI CLIを使えば、コンソールでは変更できないリソースの表示名も変更できる場合があります。

今回は、OCI CLIを使ってリソース名を変更する方法を紹介します。

OCI CLIのインストール

OCI CLIがまだインストールされていない場合は、公式ドキュメントを参考にインストールし、権限の設定を行ってください。

CLIで変更できるリソースとコマンドの例

例として、コンソールでは名称変更できない以下のリソースの表示名の変更コマンドを紹介します。各リソースのリンクは、該当のCLIコマンドの公式ドキュメントです。

# VCN
oci network vcn update --vcn-id xxx --display-name '変更後の表示名'

# サブネット
oci network subnet update --subnet-id ocid1.subnet.oc1.ap-tokyo-1.xxxxx --display-name '変更後の表示名'

# ルートテーブル
oci network route-table update --rt-id xxx --display-name '変更後の表示名'

# セキュリティリスト
oci network security-list update --security-list-id xxx --display-name '変更後の表示名'

# インターネットゲートウェイ
oci network internet-gateway update --ig-id xxx --display-name '変更後の表示名'

なお、すべてのコマンドでリソースのOCIDが必要です。対象リソースのOCIDが必要です。OCIDは、コンソールで各リソースの詳細画面で「OCID」で確認するか、OCI CLIで一覧表示するなどで確認できます。

VCNのコマンド例: oci network vcn list -c ocid1.compartment.oc1..xxxxx

その他のリソースの名前変更

ネットワーク以外のリソースでも、多くのリソースでOCI CLIを使った表示名の変更が可能です。

変更可能かどうかは、OCI CLI公式ドキュメントで各リソースの update コマンドに --display-name オプションがあるかを確認してください。

おわりに

OCIのコンソールでUIがないからと諦めずに、ドキュメントを調べたりAIに聞いてみましょう!
)

# VCN
oci network vcn update --vcn-id xxx --display-name '変更後の表示名'

# サブネット
oci network subnet update --subnet-id ocid1.subnet.oc1.ap-tokyo-1.xxxxx --display-name '変更後の表示名'

# ルートテーブル
oci network route-table update --rt-id xxx --display-name '変更後の表示名'

# セキュリティリスト
oci network security-list update --security-list-id xxx --display-name '変更後の表示名'

# インターネットゲートウェイ
oci network internet-gateway update --ig-id xxx --display-name '変更後の表示名'

なお、すべてのコマンドでリソースのOCIDが必要です。対象リソースのOCIDが必要です。OCIDは、コンソールで各リソースの詳細画面で「OCID」で確認するか、OCI CLIで一覧表示するなどで確認できます。

VCNのコマンド例: oci network vcn list -c ocid1.compartment.oc1..xxxxx

その他のリソースの名前変更

ネットワーク以外のリソースでも、多くのリソースでOCI CLIを使った表示名の変更が可能です。

変更可能かどうかは、OCI CLI公式ドキュメントで各リソースの update コマンドに --display-name オプションがあるかを確認してください。

おわりに

OCIのコンソールでUIがないからと諦めずに、ドキュメントを調べたりAIに聞いてみましょう!