12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

便利なOCI CLIコマンド例

Last updated at Posted at 2023-09-25

【お知らせ】
この記事の最新版は、個人ブログ「OCI Tech Journal」で公開しています。OCI CLI の最新バージョンの情報もありますので、ぜひそちらをご覧ください。
https://oci-tech.jp/oci-cli-examples/

初めに

OCI CLIは、オラクル・クラウド(OCI)のリソースをコマンドラインから操作するための強力なツールです。OCIコンソールで行えるほとんどの操作をCLIで実行できるため、開発者や自動化を好むユーザーにとって非常に便利です。特に、バッチスクリプトと組み合わせることで、繰り返し作業の効率化や複雑なタスクの自動化が可能になります。

この記事では、私が実際の作業でよく使うOCI CLIのコマンド例を厳選して紹介します。現場によく聞かれる質問を焦点に当てているため、すぐに実践で活用できます。詳細なオプションや設定方法については、マニュアルを参照してください。

本記事は、OCI-CLIの基本的な使い方から実践的な活用例まで、少しでも多くの方のお役に立てれば幸いです

サポートされているOS

  • Microsoft Windows
  • Linux (Oracle Linux, CentOS, Ubuntu)
  • Mac OS

相当なサービス

クラウド・プロバイダー OCI AWS Azure GCP
サービス名 OCI CLI AWS CLI Azure CLI Google Cloud CLI

索引

1. CLIのインストールとセットアップ

OCI CLIのインストールと構成ファイルの作成については、クイックスタートをご参照ください。

以下は抜粋した内容です。Cloud Shellを使用する場合は、既にインストールと設定が完了しているため、そのままご利用いただけます。

CLIのインストール

  • Oracle Linux 9の場合:
sudo dnf -y install oraclelinux-developer-release-el9
sudo dnf install python39-oci-cli
  • Oracle Linux 8の場合:
sudo dnf -y install oraclelinux-developer-release-el8
sudo dnf install python36-oci-cli
  • Oracle Linux 7の場合:
sudo yum install python36-oci-cli
  • Windowsの場合(管理者として実行):
Set-ExecutionPolicy RemoteSigned
Invoke-WebRequest https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1 -OutFile install.ps1
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))

※、Windows 2012およびWindows 2016の場合は、PowerShellでTLS 1.2が使用されるよう強制します。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
  • Macの場合:
brew update && brew install oci-cli

OCI CLI バージョンの確認

$ oci -v
3.33.1

構成ファイルの設定

コマンド:oci setup config

構成ファイルの場所(デフォルト):
Oracle Linux: /home/opc/.oci/config
Windows: C:\Users\<username>\.oci\config

構成ファイルの中身:

[DEFAULT]
user=ocid1.user.oc1..<unique_ID>
fingerprint=<your_fingerprint>
key_file=/home/opc/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..<unique_ID>
region=ap-tokyo-1

PEMファイルの権限を変更する
Oracle Linuxの場合:

oci setup repair-file-permissions --file /home/opc/.oci/oci_api_key.pem

Windowsの場合:

oci setup repair-file-permissions --file C:\Users\<username>\.oci\<PEM_File_Name>.pem

CLIのアップグレード

最新バージョンを使用することをお勧めします。

インストールスクリプトを使用してCLIをインストールした場合は、次の手順でCLIをアップグレードします。

  • インストール・スクリプトを実行し、同じインストール・ディレクトリを指定します。
  • 表示されたプロンプトに対して、既存のディレクトリを削除するかどうかを尋ねられたら、"Y"と回答します。
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

CLIを手動でインストールした場合は、次のコマンドを実行します。

pip install oci-cli --upgrade

pipの格納場所:
Windows: C:\Users\<username>\lib\oracle-cli\Scripts\
Linux: /home/opc/lib/oracle-cli/bin/pip

Homebrewを使用してMac OS XでCLIインストールをアップグレードするには:

brew update && brew upgrade oci-cli

CLIのアンインストール

  • Oracle Linuxの場合:
    • OL9: sudo dnf remove python39-oci-cli
    • OL8: sudo dnf remove python36-oci-cli
    • OL7: sudo yum remove python36-oci-cli
  • Windowsの場合:
    • pipを使用してCLIを手動でインストールした場合: pip uninstall oci-cli
    • インストール・スクリプトとデフォルトのインストール場所を使用した場合、次のものを削除する必要がある。
      %USERPROFILE%/lib/oracle-cli (ディレクトリ)
      %USERPROFILE%/bin/oci-cli-scripts (ディレクトリ)
      %USERPROFILE%/bin/oci.exe

CLIのオフライン・インストール

インターネットにアクセスできない環境に OCI-CLI をインストールすることも可能です。OCI-CLIをインストールする前に、Pythonをインストールする必要があります。

詳細について、OCI-CLIオフライン・インストールの手順をご参照ください。

オフライン・インストールが可能ですが、オフライン・アップグレードができません。

2. テナンシ情報の取得

オブジェクト・ストレージ・ネームスペースの取得

私がよく使うコマンドです。OCIDは不要で、非常に使いやすいです。構成ファイルを設定した後、疎通確認として使用するのが便利です。

$ oci os ns get
{
  "data": "<Your_Object_Storage_Namespace>"
}

テナンシ名の取得

コマンド:oci iam tenancy get --tenancy-id <Tenancy_OCID>

$ oci iam tenancy get --tenancy-id ocid1.tenancy.oc1..<unique_ID>
{
  "data": {
    "defined-tags": {},
    "description": "<Your_Tenancy_Name>",
    "freeform-tags": {},
    "home-region-key": "NRT",
    "id": "ocid1.tenancy.oc1..<unique_ID>",
    "name": "<Your_Tenancy_Name>",
    "upi-idcs-compatibility-layer-endpoint": null
  }
}

※、テナントIDでテナント名の取得ができますが、テナント名でテナントIDの取得ができません。

ドメイン情報の取得

コマンド:oci iam availability-domain list
パラメータを指定しなくてもよい。

$ oci iam availability-domain list
{
  "data": [
    {
      "compartment-id": "ocid1.tenancy.oc1..<unique_ID>",
      "id": "ocid1.availabilitydomain.oc1..<unique_ID>",
      "name": "xxxx:AP-TOKYO-1-AD-1"
    }
  ]
}

リージョン一覧の取得

OCIのすべてのリージョンを取得
コマンド:oci iam region list (パラメータ--allを指定しなくてもよい)

$ oci iam region list
{
  "data": [
<中略>
    {
      "key": "NRT",
      "name": "ap-tokyo-1"
    },
<中略>
    {
      "key": "KIX",
      "name": "ap-osaka-1"
    },
<中略>
  ]
}

※、このコマンドを使用することで、すべてのリージョン・キー(key)とリージョン識別子(name)を素早く確認できます。リージョン・キーと識別子の詳細について、ドキュメントを参照してください。

サブスクリプション済のリージョン一覧を取得
コマンド:oci iam region-subscription list

$ oci iam region-subscription list
{
  "data": [
    {
      "is-home-region": false,
      "region-key": "KIX",
      "region-name": "ap-osaka-1",
      "status": "READY"
    },
    {
      "is-home-region": true,
      "region-key": "NRT",
      "region-name": "ap-tokyo-1",
      "status": "READY"
    }
  ]
}

※、is-home-regionをチェックすることで、ホーム・リージョンを取得できます。

3. オブジェクト・ストレージにアクセス

バケット情報の取得

  • 一覧の取得 oci os bucket list -c <Compartment_OCID>
  • 使用量の近似サイズの取得 oci os bucket get -bn <Bucket_name> --fields approximateSize

指定したバケットにオブジェクト一覧の取得

コマンド:oci os object list -bn <Bucket_Name>
例:oci os object list -bn MyBucket | grep name

ファイルごとのアップロード・ダウンロード・削除

  • アップロード
    oci os object put -bn <bucket_name> --file <local_file_name>
  • ダウンロード
    oci os object get -bn <bucket_name> --file <local_file_name> --name <object_name>
  • 削除
    `oci os object delete -bn <bucket_name> --name <object_name>

os object put|get|deleteを利用する時、1個のファイルしか指定できません。put --file file1 file2あるいはput --file file*のような書き方が正しくないです。

一括アップロード・ダウンロード・削除

  • アップロード (サブディレクトリを含む)
    oci os object bulk-upload -bn <bucket_name> --src-dir <source_dir_name>
  • ダウンロード (サブディレクトリを含む)
    oci os object bulk-download -bn <bucket_name> --dest-dir <dest_dir_name>
    ※、ローカルに、このディレクトリが存在しない場合は自動に作成されます。
  • 一括削除
    oci os object bulk-delete -bn <bucket_name>
    オプション引数:--force 一括削除実行前に確認を求めない。

※、アップロード/ダウンロードの共通オプション引数:--overwrite
(同名のオブジェクトが存在する場合、上書きする)

ディレクトリの同期

コマンド:oci os object sync -bn <bucket_name> --src-dir <source_dir_name>

※、ローカルのディレクトリをバケット内のオブジェクトと同期します。サブディレクトリをトラバースして、新規および変更されたファイルまたはオブジェクトをソースから宛先にコピーし、必要に応じてソースに存在しないファイルやオブジェクトを削除します。

バケット単位の近似サイズ(使用量)の確認

コマンド:oci os bucket get -bn <Bucket_Name> --fields approximateSize

ほかのコマンド例

リンクから、詳細な内容をご確認いただけます。

付録

以下の内容の詳細については、こちらをご覧ください。

  • 1. OCI-CLIに関するFAQ(詳細については、「OCI-CLIに関するFAQ」をご覧ください)

    • OCI-CLIを利用するのにPythonは必須ですか?
    • Oracle Base DBのインスタンスにもOCI-CLIを利用することができますか?
    • 特定のユーザーにOCI-CLIを使用させたくない場合、それは可能ですか?
  • 2. query引数の書き方
    --query引数の書き方は、実行環境の種類により違いがあります。

  • 3. 優先順位
    コマンド・オプション > 環境変数 > OCI構成ファイル

  • 4. 警告メッセージの回避
    エラー現象: OCI-CLIコマンドを実施する際、次の警告メッセージが出る。

WARNING: Permissions on <PEM_File>.pem are too open.

以上です。


関連記事
クラウド技術ブログ
OCIインスタンスの自動起動・停止
OCI-CLIオフライン・インストールの手順
OCI-CLIを使用してOCIインスタンスのライフサイクル状態を取得する方法

ドキュメント
コマンドライン・インタフェース(CLI) 英語 日本語
CLI環境変数 英語 日本語
Docs » setup » repair-file-permissions: 英語

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?