- OpenTofu言語
- OpenTofu 設定
- バックエンド
- oss
バックエンドタイプ: oss
Alibaba Cloud OSSの指定されたバケット内の指定されたキーとして状態を保存します。このバックエンドは、Alibaba Cloud Table Storeを介した状態のロックと整合性チェックもサポートしており、tablestore_table
フィールドを既存の TableStore テーブル名に設定することで有効にできます。
このバックエンドは、TableStore を介した状態のロックをサポートしています。
設定例
terraform {
backend "oss" {
bucket = "bucket-for-tofu-state"
prefix = "path/mystate"
key = "version-1.tfstate"
region = "cn-beijing"
tablestore_endpoint = "https://tofu-remote.cn-hangzhou.ots.aliyuncs.com"
tablestore_table = "statelock"
}
}
これは、bucket-for-tofu-state
という名前の作成済みのOSSバケット、tofu-remote
という名前のOTSインスタンス、およびstatelock
という名前のOTS TableStoreがあることを前提としています。OpenTofuの状態は、ファイルpath/mystate/version-1.tfstate
に書き込まれます。TableStore
には、LockID
という名前のタイプがString
のプライマリキーが必要です。
データソースの設定
別の構成でOSSリモート状態を使用するには、terraform_remote_state
データソースを使用します。
terraform {
backend "oss" {
bucket = "remote-state-dns"
prefix = "mystate/state"
key = "terraform.tfstate"
region = "cn-beijing"
}
}
terraform_remote_state
データソースは、参照されたリモート状態に定義されたすべてのルート出力を返します。出力例は次のようになります。
data "terraform_remote_state" "network" {
backend = "oss"
config = {
bucket = "remote-state-dns"
key = "terraform.tfstate"
prefix = "mystate/state"
region = "cn-beijing"
}
outputs = {}
workspace = "default"
}
設定変数
認証情報やその他の機密データを提供するには、環境変数を使用することをお勧めします。-backend-config
を使用するか、これらの値を構成に直接ハードコードすると、OpenTofuはこれらの値を.terraform
サブディレクトリとプランファイルの両方に含めます。詳細については、認証情報と機密データを参照してください。
次の構成オプションまたは環境変数がサポートされています。
-
access_key
- (オプション) Alibaba Cloudアクセスキー。環境変数ALICLOUD_ACCESS_KEY
およびALICLOUD_ACCESS_KEY_ID
をサポートしています。 -
secret_key
- (オプション) Alibaba Cloudシークレットアクセスキー。環境変数ALICLOUD_SECRET_KEY
およびALICLOUD_ACCESS_KEY_SECRET
をサポートしています。 -
security_token
- (オプション) STSアクセストークン。環境変数ALICLOUD_SECURITY_TOKEN
をサポートしています。 -
ecs_role_name
- (オプション、0.12.14以降で使用可能) API操作のためにECSインスタンスにアタッチされたRAMロール名。Alibaba Cloudコンソールの「アクセス制御」セクションから取得できます。 -
region
- (オプション) OSSバケットのリージョン。環境変数ALICLOUD_REGION
およびALICLOUD_DEFAULT_REGION
をサポートしています。 -
endpoint
- (オプション) OSS APIのカスタムエンドポイント。環境変数ALICLOUD_OSS_ENDPOINT
およびOSS_ENDPOINT
をサポートしています。 -
bucket
- (必須) OSSバケットの名前。 -
prefix
- (オプション) ステートファイルが保存されるパスディレクトリ。デフォルトは "env:" です。 -
key
- (オプション) ステートファイルの名前。デフォルトはterraform.tfstate
です。 -
tablestore_endpoint
/ALICLOUD_TABLESTORE_ENDPOINT
- (オプション) TableStore APIのカスタムエンドポイント。 -
tablestore_table
- (オプション) 状態ロックと整合性のためのTableStoreテーブル。テーブルには、LockID
という名前のタイプがString
のプライマリキーが必要です。 -
sts_endpoint
- (オプション、1.0.11以降で使用可能) AliCloud Security Token Service (STS) APIのカスタムエンドポイント。環境変数ALICLOUD_STS_ENDPOINT
をサポートしています。 -
encrypt
- (オプション) ステートファイルのサーバー側暗号化を有効にするかどうか。trueの場合、OSSは'AES256'暗号化アルゴリズムを使用してステートファイルを暗号化します。 -
acl
- (オプション) ステートファイルに適用されるオブジェクトACL。 -
shared_credentials_file
- (オプション、0.12.8以降で使用可能) これは、共有認証情報ファイルへのパスです。ALICLOUD_SHARED_CREDENTIALS_FILE
環境変数からソースを取得することもできます。これが設定されておらず、プロファイルが指定されている場合は、~/.aliyun/config.json
が使用されます。 -
profile
- (オプション、0.12.8以降で使用可能) これは、共有認証情報ファイルで設定されているAlibaba Cloudプロファイル名です。ALICLOUD_PROFILE
環境変数からソースを取得することもできます。 -
assume_role_role_arn
- (オプション、1.1.0以降で使用可能) 引き受けるロールのARN。ARNが空の文字列に設定されている場合、ロールスイッチングは実行されません。環境変数ALICLOUD_ASSUME_ROLE_ARN
をサポートしています。OpenTofuは、提供された認証情報を持つアカウントで構成を実行します。 -
assume_role_policy
- (オプション、1.1.0以降で使用可能) 一時的な認証情報に適用するより制限的なポリシー。これにより、結果の一時的なセキュリティ認証情報の権限をさらに制限できます。このポリシーを使用して、引き受けられるロールの権限を超える権限を付与することはできません。 -
assume_role_session_name
- (オプション、1.1.0以降で使用可能) ロールを引き受けるときに使用するセッション名。省略した場合、'tofu' がセッション名としてAssumeRole呼び出しに渡されます。環境変数ALICLOUD_ASSUME_ROLE_SESSION_NAME
をサポートしています。 -
assume_role_session_expiration
- (オプション、1.1.0以降で使用可能) ロール引き受けのために確立されたセッションが期限切れになるまでの時間。有効な値の範囲: [900-3600]秒。デフォルトは3600(この場合、Alibaba Cloudは独自のデフォルト値を使用します)。環境変数ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION
をサポートしています。 -
assume_role
- (1.1.0+で非推奨、0.12.6+で利用可能) ロールARNが指定された場合、提供されたクレデンシャルを使用してこのロールをAssumeしようとします。assume_role_role_arn
が指定されている場合は無視されます。assume_role_* オプションをフラット化するために非推奨となりました。
-
role_arn
- (必須) AssumeするロールのARN。ARNが空文字列に設定されている場合、ロールの切り替えは行いません。環境変数ALICLOUD_ASSUME_ROLE_ARN
をサポートします。OpenTofu は、提供されたクレデンシャルを持つアカウント上で構成を実行します。 -
policy
- (オプション) 一時的なクレデンシャルに適用する、より制限的なポリシー。これにより、結果として得られる一時的なセキュリティクレデンシャルの権限をさらに制限する方法が提供されます。このポリシーを使用して、Assumeされるロールの権限を超える権限を付与することはできません。 -
session_name
- (オプション) ロールをAssumeする際に使用するセッション名。省略した場合、'tofu' がセッション名として AssumeRole 呼び出しに渡されます。環境変数ALICLOUD_ASSUME_ROLE_SESSION_NAME
をサポートします。 -
session_expiration
- (オプション) ロールをAssumeするための確立されたセッションが期限切れになるまでの時間。有効な値の範囲: [900-3600] 秒。デフォルトは3600(この場合、Alibaba Cloudは独自のデフォルト値を使用します)。環境変数ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION
をサポートします。
-
カスタムOSSエンドポイントに状態を保存したい場合は、環境変数 OSS_ENDPOINT
を "oss-cn-beijing-internal.aliyuncs.com" のように指定できます。