プロバイダの構成
必要な認証およびオプションの環境変数を使用してOCI Terraformプロバイダを構成します。
特定のリソースを作成するためのTerraform構成ファイルの例は、Terraform Oracle Cloud Infrastructure Provider Examplesを参照してください。
認証
Oracle Cloud Infrastructure (OCI)サービスおよびサポートされているリソースと対話するには、OCIアカウントの認証資格証明を使用してOCI Terraformプロバイダを構成します。
OCI Terraformプロバイダは、4つの認証方法をサポートしています:
APIキー認証
デフォルトでは、TerraformプロバイダはAPIキー認証を使用しますが、これを明示的に指定するには、プロバイダ定義でauth属性を"APIKey"に設定します。APIキー認証を使用してOCIをコールするには、次の資格証明を指定する必要があります:
-
tenancy_ocid- テナンシのOCID。値を取得するには、テナンシのOCIDとユーザーのOCIDを取得する場所を参照してください。 -
user_ocid- APIをコールするユーザーのOCID。値を取得するには、テナンシのOCIDとユーザーのOCIDを取得する場所を参照してください。 -
private_key- 秘密キー・ファイルのコンテンツ。private_key_pathが定義されていない場合は必須で、両方が定義されている場合はprivate_key_pathよりも優先されます。キーの作成および構成方法の詳細は、API署名キーの生成方法および公開キーのアップロード方法を参照してください。 -
private_key_path- コンピュータに格納されている秘密キーのパス(ファイル名を含む)。private_keyが定義されていない場合は必須です。キーの作成および構成方法の詳細は、API署名キーの生成方法および公開キーのアップロード方法を参照してください。 -
private_key_password- (オプション)キーに使用されるパスフレーズ(キーに使用される場合)。 -
fingerprint- 使用されているキー・ペアのフィンガープリント。値を取得するには、キーのフィンガープリントの取得方法を参照してください。 -
region- OCIリージョン。リージョンと可用性ドメインを参照してください。 -
config_file_profile- プロファイル名(OCI構成ファイルのカスタム・プロファイルを使用して認証資格証明を指定する場合)。詳細は、SDKおよびCLIの構成ファイルの使用を参照してください。
たとえば、これらの値を環境変数として、またはTerraform構成変数内に指定します。
インスタンス・プリンシパル認可
インスタンス・プリンシパル認可は、Oracle Cloud Infrastructureで実行中のインスタンスにのみ適用されます。
インスタンス・プリンシパル認可を使用して、プロバイダ定義内の次の属性の要件を削除します。
-
tenancy_ocid -
user_ocid -
private_key_path -
fingerprint
インスタンス・プリンシパル認可が有効になっている場合、プロバイダは、これらの属性なしでコンピュート・インスタンスからAPIコールを実行できます。
OCI Terraformプロバイダのインスタンス・プリンシパル認可を有効にするには、次の例に示すように、プロバイダ定義でauth属性にInstancePrincipalを設定します:
variable "region" {}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
詳細は、インスタンスからのサービスのコールを参照してください。
リソース・プリンシパル認可
インスタンス・プリンシパル認可などのリソース・プリンシパル認可では、プロバイダ定義内で資格証明を指定せずに、プロバイダがAPIコールを実行できます。リソース・プリンシパル認可を使用すると、実行中のファンクションなどのリソースが他のOracle Cloud Infrastructureリソースにアクセスできます。詳細は、実行しているファンクションからの他のOracle Cloud Infrastructureリソースへのアクセスを参照してください。
OCI Terraformプロバイダのリソース・プリンシパル認可を有効にするには:
- 実行中のファンクションで他のOCIリソースを管理するために必要な動的グループおよびポリシーを作成します。「ファンクションの実行からの他のOracle Cloud Infrastructureリソースへのアクセス」のコンソールの使用の手順に従い、ポリシーで他のリソースの管理が許可されていることを確認します。
-
次の環境変数を設定します:
-
OCI_RESOURCE_PRINCIPAL_VERSION: 値2.2が含まれます。値が
1の場合、リージョンのオーバーライドはサポートされていません。 -
OCI_RESOURCE_PRINCIPAL_RPST:rpstファイルのRAWコンテンツ、またはrpstファイルへの絶対パスを含みます(ファイル名を含む)。 -
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM:private.pemファイルへの絶対パスを含みます(ファイル名を含む)。 -
OCI_RESOURCE_PRINCIPAL_REGION: プロバイダがデプロイされるリージョン識別子を含みます(たとえば、us-phoenix-1)。
-
-
プロバイダ定義で
auth属性を"ResourcePrincipal"に設定します。ノート
プロバイダ・ブロック内の
regionの値は、環境変数OCI_RESOURCE_PRINCIPAL_REGIONで設定されたリージョン値をオーバーライドします。Terraform Providerバージョン5.0.0で導入されたこの変更は、下位互換性がありません。OCI_RESOURCE_PRINCIPAL_VERSION環境変数の値が1の場合、リージョンのオーバーライドはサポートされていません。次に例を示します:
provider "oci" { auth = "ResourcePrincipal" region = var.region }
セキュリティ・トークン認証
CLIでのトークンベースの認証で生成されたトークンを使用してTerraformを実行します。セキュリティ・トークン認証を有効にするには、次のようにプロバイダ定義を更新します:
auth属性をSecurityTokenに設定します。config_file_profileの値を指定します。regionを設定します。
たとえば:
# Configure the Oracle Cloud Infrastructure provider to use Security Token authentication
provider "oci" {
auth = "SecurityToken"
config_file_profile = "PROFILE"
region = var.region
}
OKEワークロードのアイデンティティ認証
Kubernetesでは、ワークロードはKubernetesクラスタで実行されているアプリケーションです。ワークロードには、1つのポッド内で1つのアプリケーション・コンポーネントを実行することも、1つのポッドのセット内で複数のアプリケーション・コンポーネントを実行することもできます。ワークロード内のすべてのポッドは同じネームスペースで実行されます。
Oracle Cloud Infrastructureでは、Kubernetes Engine (OKEとも呼ばれる)によって管理されるKubernetesクラスタで実行されるワークロードは、それ自体がリソースと見なされます。ワークロード・リソースは、Kubernetesクラスタ、ネームスペースおよびサービス・アカウントの一意の組合せによって識別されます。この一意の組合せは、ワークロード・アイデンティティと呼ばれます。
OKEワークロード・アイデンティティ認証では、Kubernetesエンジンによって管理されるKubernetesクラスタで実行されているワークロードが、他のOracle Cloud Infrastructureリソースにアクセスできます。詳細は、「ワークロードのOCIリソースへのアクセス権の付与」を参照してください。
OCI TerraformプロバイダのOKEワークロード・アイデンティティ認証を有効にするには、次の例に示すように、プロバイダ定義でauth属性にOKEWorkloadIdentityを設定します:
variable "region" {}
provider "oci" {
auth = "OKEWorkloadIdentity"
region = var.region
}
環境変数
プロバイダの構成には、次の環境変数を使用できます。
| 環境変数 | 説明とコメント |
|---|---|
OCI_DEFAULT_CERTS_PATH |
証明書の経路。 ノート:一度に1つの証明書パス変数のみを使用してください。 |
OCI_SDK_APPEND_USER_AGENT |
カスタム・ユーザー・エージェント。 |
realm_specific_service_endpoint_template_enabled |
ストレージ・バケットに安全にアクセスするための専用エンドポイント。 |
TF_APPEND_USER_AGENT |
カスタム・ユーザー・エージェント。 |
TF_VAR_authまたはOCI_AUTH |
デフォルトでは、OCI TerraformプロバイダはAPIキー認証を使用しますが、この環境変数を使用して変更できます。使用可能な値は、このページの各セクションで説明します。 |
TF_VAR_compartment_ocid |
コンパートメントOCID認証値。 |
TF_VAR_config_file_profileまたはOCI_CONFIG_FILE_PROFILE |
プロファイル名(OCI構成ファイルのカスタム・プロファイルを使用して認証資格証明を指定する場合)。詳細は、SDKおよびCLIの構成ファイルの使用を参照してください。 |
TF_VAR_fingerprintまたはOCI_FINGERPRINT |
キー・フィンガープリント認証値。 |
TF_VAR_private_key_passwordまたはOCI_PRIVATE_KEY_PASSWORD |
(オプション)キーに使用されるパスフレーズ(キーが暗号化されている場合)。 |
TF_VAR_private_key_pathまたはOCI_PRIVATE_KEY_PATH |
秘密キー・パス認証値。 |
TF_VAR_private_keyまたはOCI_PRIVATE_KEY |
秘密キー・ファイルの内容。private_key_pathが定義されていない場合は必須で、両方が定義されている場合はprivate_key_pathよりも優先されます。キーの作成および構成方法の詳細は、API署名キーの生成方法および公開キーのアップロード方法を参照してください。 |
TF_VAR_regionまたはOCI_REGION |
リージョン値。例: us-ashburn-1 |
TF_VAR_tenancy_ocidまたはOCI_TENANCY_OCID |
テナンシOCID認証値。 |
TF_VAR_user_ocidまたはOCI_USER_OCID |
ユーザーOCID認証値。 |
USER_AGENT_PROVIDER_NAME |
カスタム・ユーザー・エージェント。 |
環境変数のエクスポートおよびソーシング
環境変数として必要な認証値をエクスポートするか、Terraformコマンドの実行時に様々なbashプロファイルでそれらをソース指定できます。
主に単一のコンパートメントで動作する場合は、環境変数としてコンパートメントOCIDをエクスポートすることを検討してください。テナンシOCIDは、ルート・コンパートメントのOCIDでもあり、任意のコンパートメントOCIDが必要な場合に使用できます。
- UNIXおよびLinuxのエクスポートの例
- 次のUNIXおよびLinuxの
bash_profileの例は、Terraform構成が単一のコンパートメントまたはユーザーに制限されている場合に適用されます。
- Windowsエクスポートの例
カスタム・ユーザー・エージェントの使用
カスタム・ユーザー・エージェントを使用するには、次のいずれかの環境変数をエクスポートします。この優先順位に従って、一度に考慮される環境変数は1つだけです。
-
USER_AGENT_PROVIDER_NAME -
OCI_SDK_APPEND_USER_AGENT -
TF_APPEND_USER_AGENT
オブジェクト・ストレージ・サービスの専用エンドポイントの指定
OCI Terraformプロバイダを使用して、専用エンドポイントでオブジェクト・ストレージのストレージ・バケットにセキュアにアクセスします。プロバイダを構成する場合は、環境変数、プロバイダ・ブロック内のパラメータ、またはその両方を使用します。両方を使用する場合、プロバイダ・ブロック・パラメータが優先されます。
環境変数はOCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLEDです。デフォルトはfalseです。専用エンドポイントを使用するには、値をtrueに設定します。
プロバイダ・ブロック・パラメータはrealm_specific_service_endpoint_template_enabledです。デフォルトはfalseです。専用エンドポイントを使用するには、値をtrueに設定します。
専用エンドポイントのみの使用
-
providerブロックで、realm_specific_service_endpoint_template_enabledをtrueに設定します。provider "oci" { realm_specific_service_endpoint_template_enabled = true }
デフォルト・エンドポイントと専用エンドポイントの両方の使用
Terraform別名メタ引数を使用して、デフォルトのサービス・エンドポイントとレルム固有のエンドポイントの両方にアクセスします。リソース作成でプロバイダ・パラメータを指定して、デフォルト・エンドポイントをレルム固有のエンドポイントでオーバーライドします。
-
エンドポイントごとに
providerブロックを定義します。provider "oci" { realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false } -
専用エンドポイント用の
providerブロックでTerraformaliasメタ引数を使用します。たとえば、
alias = "custom_endpoint"を追加します。provider "oci" { alias = "custom_endpoint" realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false } -
専用エンドポイントを使用する各
resourceブロックで、alias値でproviderを参照します。たとえば、
provider = "custom_endpoint"を追加します。次の例は、2つのプロバイダ・ブロックと2つのリソース・ブロックを示しています。この例では、
bucket1はデフォルト・エンドポイントを使用し、bucket2は専用エンドポイントを使用します。provider "oci" { alias = "custom_endpoint" realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false } resource "oci_objectstorage_bucket" "bucket1" { compartment_id = var.compartment_ocid1 namespace = var.namspace1 name = var.name1 access_type = var.access_type1 } resource "oci_objectstorage_bucket" "bucket2" { provider = "oci.custom_endpoint" compartment_id = var.compartment_ocid2 namespace = var.namspace2 name = var.name2 access_type = var.access_type2 }
SDKおよびCLIの構成ファイルの使用
SDKおよびCLIの構成ファイルのパラメータ名は、多少異なります。
SDKおよびCLIが使用するのと同じ~/.oci/configファイルで、必要なプロバイダ値を定義できます。この構成の設定の詳細は、SDKおよびCLIの構成ファイルを参照してください。
Terraform構成ファイルのプロバイダ・ブロックは、APIキー認証に必要なすべての値が環境変数として指定されているか、
~/.oci/configファイルに設定されている場合、削除できます。デフォルト以外のOCI構成プロファイルを環境値として設定するには、次のコマンドを使用します:
export TF_VAR_config_file_profile=<config_file_profile_name>
プロバイダ・ブロックにOCI構成プロファイルを設定することもできます。たとえば:
provider "oci" {
tenancy_ocid = var.tenancy_ocid
config_file_profile= var.config_file_profile
}優先順位
パラメータが複数の場所に設定されている場合、優先順位は次のとおりです:
- 環境変数
- OCI構成ファイルのデフォルト以外のプロファイル(指定されている場合)
- OCI構成ファイルのDEFAULTプロファイル