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
環境変数を設定して、デフォルトのプロファイルを指定することもできます。
複数の場所でデフォルト・プロファイル値が指定されている場合、優先順位は次のとおりです:
--profile
オプションに指定された値。OCI_CLI_PROFILE
環境変数に指定された値。- 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_proxy
、https_proxy
、HTTP_PROXY
およびHTTPS_PROXY
を環境内の正しいプロキシ・サーバーに設定します。
たとえば、LinuxまたはUnixシェル環境の場合:
export "https_proxy=http://www-proxy-example.com:80"
$Env:https_proxy = "http://www-proxy-example.com:80"
FIPS検証済ライブラリの使用
LinuxではFIPS検証済ライブラリを使用するようにCLIを構成できます。CLIはOracle Cloud Infrastructure SDK for Python上に構築され、オペレーティング・システム・レベルの暗号化ライブラリを利用します。
環境の構成
- インストールされているOpenSSLのバージョンがFIPSに準拠していることを確認します。次のコマンドを実行します。
openssl version
「fips」がバージョン名に含まれていない場合は、OpenSSLをFIPS準拠バージョンにアップグレードする必要があります。OpenSSLの最新バージョンは、https://www.openssl.org/source/からダウンロードできます
- FIPS準拠バージョンのlibcryptoの場所を確認します:
ls -l /usr/lib64/libcrypto*
- 環境変数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環境変数で指定されたライブラリを使用していることを示します。