CLIの構成

次のようなオプション構成を使用して、CLI機能を拡張できます。CLIでは、クライアント固有の構成のためにファイルの使用がサポートされます。可能なこと:

  • デフォルト・プロファイルを指定します。
  • コマンド・オプションのデフォルト値を設定します。コマンドラインで値を入力する必要がなくなります。
  • コマンドの別名を定義します。たとえば、listの別名として「ls」を使用します。
  • オプションの別名を定義します。たとえば、--availability-domainの別名として「--ad」を使用します。
  • 名前付き問合せを定義します。コマンドラインでJMESPath式を入力するかわりに、これが--queryオプションに渡されます。

CLIでは、環境変数を使用して一部のオプションのデフォルトを指定することもできます。詳細は、CLI環境変数を参照してください。

CLI構成ファイル

CLI固有の構成ファイルのデフォルトの場所とファイル名は~/.oci/oci_cli_rcですが、OCI_CLI_RC_FILE環境変数を使用すると、CLIが起動時に構成ファイルとそのデフォルト値を探す場所を変更できます。

--cli-rc-fileオプションを使用するか、従来の--defaults-fileオプションを使用して、CLI構成ファイルを明示的に指定することもできます。例:

# Uses the file from ~/.oci/oci_cli_rc 
# or OCI_CLI_RC_FILE environment variable
oci os bucket list
			
# Uses a custom file
oci os bucket list --cli-rc-file path/to/my/cli/rc/file

oci_cli_rcファイルを設定するには、次のコマンドを実行します。


oci setup oci-cli-rc --file path/to/target/file

このコマンドにより、デフォルトのコマンド別名、パラメータ別名および名前付き問合せの例を含む、指定のファイルが作成されます。

ノート

Windowsを使用している場合、パス名のディレクトリのセパレータとして、スラッシュではなくバックスラッシュを使用する必要があります。

デフォルト・プロファイルの指定

CLI構成ファイルのOCI_CLI_SETTINGSセクションでデフォルト・プロファイルを指定します。次の例は、IADという名前のデフォルト・プロファイルを指定する方法を示しています。CLIは、~/.oci/configファイル、あるいは--config-fileオプションまたはOCI_CLI_CONFIG_FILE環境変数を使用して指定したその他のファイルで、IADという名前のプロファイルを探します。

[OCI_CLI_SETTINGS]
default_profile=IAD

--profileオプションを使用するか、OCI_CLI_PROFILE環境変数を設定して、デフォルトのプロファイルを指定することもできます。

複数の場所でデフォルト・プロファイル値が指定されている場合、優先順位は次のとおりです:

  1. --profileオプションに指定された値。
  2. OCI_CLI_PROFILE環境変数に指定された値。
  3. CLI構成ファイルのOCI_CLI_SETTINGSセクションのdefault_profileフィールドに指定された値。

デフォルト値の指定

CLIでは、デフォルト値の使用がサポートされているため、コマンドラインにすべての値を常に入力する必要はありません。たとえば、インスタンスを起動するコマンドのたびに--compartment-idを入力する場合、またはオブジェクト・ストレージのコマンドを使用するとき--namespaceを常に指定する必要がある場合に、かわりに使用できます。この情報をデフォルト値ファイルに指定できます。

デフォルト値は、一般的なレベルから特定のレベルまで、様々なレベルで適用できます:

  • グローバル(すべてのCLIコマンド)。
  • 特定のサービス(コンピュートまたはオブジェクト・ストレージなど)。
  • 特定のグループ(イメージのエクスポートに関連するコマンドなど)。
  • 特定のコマンド。

デフォルト値は階層的に処理され、特定の値は一般的な値よりも優先順位が高くなります。たとえば、compartment-idのグローバルに定義された値があり、compute instance launchコマンドに定義された特定のcompartment-idがある場合、CLIはグローバルのデフォルトではなくcompute instance launchの値を使用します。

コマンド値の優先度

コマンドラインで指定された値が--cli-rc-fileにも存在する場合、コマンドラインの値が優先されます。複数の値を取るオプションがあるコマンドの場合、すべての値が、コマンドラインまたは--cli-rc-fileのいずれかから取得されます。2つのソースがマージされることはありません。

デフォルト値ファイルの構文

--cli-rc-fileファイルは、様々なセクションに分割することができ、セクションごとに1つ以上のキーを含みます。

セクション

次の例では、ファイルに2つのセクションがあり、各セクションに1つのキーがあります。使用するセクションを指定するには、CLIの--profileオプションを使用します。

[DEFAULT]
compartment-id = ocid1.compartment.oc1..<unique_ID_1>
[ANOTHER_SECTION]
compartment-id = ocid1.compartment.oc1..<unique_ID_2>

キー

キーにはコマンドライン・オプションの名前が付けられますが、先頭の2つのハイフン(--)は使用しないでください。たとえば、--image-idのキーはimage-idです。単一値、複数値およびフラグに対してキーを指定できます。

  • 単一値のキー。次の例は、様々なレベルおよび様々な範囲でキー値を指定する方法を示しています。

    [DEFAULT]
    # Defines a global default for bucket-name
    bucket-name = my-global-default-bucket-name
    
    # Defines a default for bucket-name, which applies to all 'compute' commands
    compute.bucket-name = bucket-name-for-image-import-export
    				
    # Defines a default for bucket-name, which applies to all 'os object' commands (e.g., os object get)
    os.object.bucket-name = bucket-name-for-object-commands
    
    # Defines a default for bucket-name, for the 'os object multipart list' command
    os.object.multipart.list.bucket-name = bucket-name-for-multipart-list
  • 複数値のキー。oci os object bulk-uploadコマンドの--include--excludeなど、一部のオプションは複数回指定できます。例:

    oci os object bulk-upload -ns my-namespace -bn my-bucket --src-dir my-directory --include *.txt --include *.png

    次の例は、--cli-rc-fileファイルに--include値を入力する方法を示しています

    [DEFAULT]
    os.object.bulk-upload.include =
    			*.txt
    			*.png

    前述の例では、各行に1つの値が指定され、各行はそのキーの下でインデントされている必要があります。タブまたはスペースを使用でき、インデントの幅に決まりはありません。キーと同じ行に1つの値を指定して、その他の値を後続行に追加したり、値にパス文を使用したりすることもできます。例:

    [DEFAULT]
    os.object.bulk-upload.include = *.pdf
    			*.txt
    			*.png
    			my-subfolder/*.tiff
  • フラグのキー。一部のコマンド・オプション(--forceなど)は、ブール値を使用するフラグです。--forceオプションのフラグを設定するには、次のコマンドを使用します。

    os.object.delete.force=true

コマンドの別名の指定

名前付き問合せは、CLI構成ファイルのOCI_CLI_COMMAND_ALIASESセクションに指定します。別名には、グローバル別名とコマンド・シーケンス別名の2つのタイプがあります。次の例は、それぞれのタイプの別名を示しています。

[OCI_CLI_COMMAND_ALIASES]
# This is a global alias that lets you use "ls" instead of "list" for any list command in the CLI.
#
ls = list

# Command examples:
# oci os object ls or oci os compute ls

# This is a command sequence alias that lets you use "oci os object rm" instead of "oci os 
# object delete". 
# <alias> = <dot-separated sequence of groups and sub-groups>.<command or group to alias>
# 
rm = os.object.delete					

# Command example:
# <alias> = rm, <sequence of groups and sub-groups> = os object, <command or group to alias> = delete	 								

CLI構成ファイルでオプションのデフォルト値を定義する場合、定義した別名を使用できます。たとえば、--listの別名として-lsがある場合、次のコマンドを使用して、インスタンスをリスト表示する際の可用性ドメインのデフォルトを定義できます。

[DEFAULT]
compute.instance.ls.compartment-id=ocid1.compartment.oc1..<unique_ID>

オプションの別名の指定

オプションの別名は、CLI構成ファイルのOCI_CLI_PARAM_ALIASESセクションに指定します。オプションの別名はグローバルに適用されます。次の例は、コマンド・オプションの別名を示しています。


[OCI_CLI_PARAM_ALIASES]
# Option aliases either start with a double hyphen (--) or are a single hyphen (-) followed by a # single letter. For example: --example-alias, -e
#
--ad = --availability-domain
--dn = --display-name
--egress-rules = --egress-security-rules
--ingress-rules = --ingress-security-rules

CLI構成ファイルでオプションのデフォルト値を定義する場合、定義した別名を使用できます。たとえば、--availability-domainの別名として-adがある場合、次のコマンドを使用して、インスタンスをリスト表示する際の可用性ドメインのデフォルトを定義できます。

[DEFAULT]
compute.instance.list.ad=xyx:PHX-AD-1

名前付き問合せの指定

--queryパラメータを使用して出力をフィルタリングまたは操作する場合、JMESPath式をコマンドラインで使用するかわりに、名前付き問合せを定義できます。

名前付き問合せは、CLI構成ファイルのOCI_CLI_CANNED_QUERIESセクションに指定します。

名前付き問合せの例
[OCI_CLI_CANNED_QUERIES]
#  For list results, this gets the ID and display-name of each item in the list. 
#  Note that when the names of attributes have dashes in them they need to be surrounded 
#  with double quotes. This query knows to look for a list because of the [*] syntax 

get_id_and_display_name_from_list=data[*].{id: id, "display-name": "display-name"}
 
get_id_and_display_name_from_single_result=data.{id: id, "display-name": "display-name"}
						
#  Retrieves a comma separated string, for example:
#  ocid1.instance.oc1.phx.xyz....,cli_test_instance_675195,RUNNING
#						
get_id_display_name_and_lifecycle_state_from_single_result_as_csv=data.[id, "display-name", "lifecycle-state"] | join(`,`, @)					
						
#  Retrieves comma separated strings from a list of results
#
get_id_display_name_and_lifecycle_state_from_list_as_csv=data[*].[join(`,`, [id, "display-name", "lifecycle-state"])][]
 
#  Filters where the display name contains some text
#
filter_by_display_name_contains_text=data[?contains("display-name", `your_text_here`)]	
						
#  Filters where the display name contains some text and pull out certain attributes(id and time-created)
#
filter_by_display_name_contains_text_and_get_attributes=data[?contains("display-name", `your_text_here`)].{id: id, timeCreated: "time-created"}
 
#  Get the top 5 results from a list operation
#						
get_top_5_results=data[:5]
 
#  Get the last 2 results from a list operation
#
get_last_2_results=data[-2:]				

query://<query name>の構文を使用して、これらの問合せのどれでも参照できます。

たとえば、リストからIDと表示名を取得するには、次のコマンドを実行します。

oci compute instance list -c $C --query query://get_id_and_display_name_from_list

オートコンプリートの有効化

CLIインストーラを使用した場合、オートコンプリートは自動的に有効になっているため、構成する必要はありません。

手動CLIインストールでオートコンプリート(タブ補完)を有効にするには、次のコマンドを実行します。

oci setup autocomplete

セッションごとにオートコンプリートを有効化するには、次のコマンドを実行します。

eval "$(_OCI_COMPLETE=source oci)"
ノート

Windowsでのオートコンプリートのサポート

Windowsでのオートコンプリートは、PowerShellを使用している場合にのみサポートされます。スクリプトを実行してこの機能を有効にします。ただし、PowerShellの実行ポリシーをRemoteSignedに変更する必要があります。このポリシーを構成するには、PowerShellコマンドラインで次のコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

プロキシ・サーバーの指定

送信HTTPリクエストにプロキシ・サーバーを使用する必要がある場合は、環境変数を使用してプロキシ設定を指定できます。

プロキシ・サーバーを構成するには、環境変数http_proxyhttps_proxyHTTP_PROXYおよびHTTPS_PROXYを環境内の正しいプロキシ・サーバーに設定します。

たとえば、LinuxまたはUnixシェル環境の場合:

export "https_proxy=http://www-proxy-example.com:80"
PowerShellの場合:
$Env:https_proxy = "http://www-proxy-example.com:80"

FIPS検証済ライブラリの使用

LinuxではFIPS検証済ライブラリを使用するようにCLIを構成できます。CLIはOracle Cloud Infrastructure SDK for Python上に構築され、オペレーティング・システム・レベルの暗号化ライブラリを利用します。

環境の構成

  1. インストールされているOpenSSLのバージョンがFIPSに準拠していることを確認します。次のコマンドを実行します。
    openssl version

    「fips」がバージョン名に含まれていない場合は、OpenSSLをFIPS準拠バージョンにアップグレードする必要があります。OpenSSLの最新バージョンは、https://www.openssl.org/source/からダウンロードできます

  2. FIPS準拠バージョンのlibcryptoの場所を確認します:
    ls -l /usr/lib64/libcrypto*
  3. 環境変数OCI_CLI_FIPS_LIBCRYPTO_FILEにlibcryptoの場所を設定します:
    export OCI_CLI_FIPS_LIBCRYPTO_FILE=</path/to/libcrypto.x.x.x>

    このコマンドをすべてのセッションの開始時に実行しない場合は、your.bashrcまたは.bash_profileファイルに追加できます。

    次のコマンドを使用して、環境変数が正しく設定されていることを確認できます:

    set | grep OCI_CLI_FIPS_LIBCRYPTO_FILE

これで、クイックスタートで説明している標準インストール・プロセスに進むことができます

構成の確認

CLIの構成で指定したライブラリをCLIが使用していることを確認するには、Pythonで次のコマンドを実行します。これは、CLIが使用するのと同じ環境で行ってください。

import ssl
ssl.FIPS_mode()

1が返されることが必要です。これは、SSLがOCI_CLI_FIPS_LIBCRYPTO_FILE環境変数で指定されたライブラリを使用していることを示します。