- OpenTofu言語
- OpenTofu設定
- バックエンド
- cos
バックエンドタイプ: COS
状態を、指定されたTencent Cloud Object Storage (COS) バケット内の設定可能なプレフィックスにオブジェクトとして保存します。
このバックエンドは状態のロックをサポートしています。COSバケットに状態を保存するには、以下の権限が必要です。
- タグキー
tencentcloud-terraform-lockに対するCreateTag、DeleteTag、およびDescribeTags - 指定されたバケットのプレフィックスに対するファイルの
Put、Get、およびDelete
誤って削除したり、ヒューマンエラーが発生した場合に状態を復旧できるように、COSバケットでオブジェクトのバージョン管理を有効にすることを強くお勧めします。
設定例
terraform {
backend "cos" {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-1258798060"
prefix = "tofu/state"
}
}
ここでは、bucket-for-tofu-state-1258798060という名前のCOSバケットが既に作成されていると仮定します。OpenTofuの状態は、tofu/state/terraform.tfstateファイルに書き込まれます。
データソースの設定
別の設定でCOSリモート状態を利用するには、terraform_remote_stateデータソースを使用します。
data "terraform_remote_state" "foo" {
backend = "cos"
config = {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-1258798060"
prefix = "tofu/state"
}
}
設定変数
認証情報やその他の機密データを提供するには、環境変数を使用することをお勧めします。 -backend-config を使用するか、これらの値を構成に直接ハードコードすると、OpenTofu はこれらの値を .terraform サブディレクトリとプランファイルの両方に含めます。詳細は、認証情報と機密データを参照してください。
以下の設定オプションまたは環境変数がサポートされています。
secret_id- (オプション) Tencent CloudのシークレットID。環境変数TENCENTCLOUD_SECRET_IDをサポートしています。secret_key- (オプション) Tencent Cloudのシークレットキー。環境変数TENCENTCLOUD_SECRET_KEYをサポートしています。security_token- (オプション) 一時アクセス認証情報のTencentCloud Security Token。環境変数TENCENTCLOUD_SECURITY_TOKENをサポートしています。region- (オプション) COSバケットのリージョン。環境変数TENCENTCLOUD_REGIONをサポートしています。bucket- (必須) COSバケットの名前。事前に手動で作成する必要があります。prefix- (オプション) バケット内の状態ファイルを保存するディレクトリ。デフォルトは "env:" です。key- (オプション) バケット内の状態ファイルを保存するパス。デフォルトはterraform.tfstateです。encrypt- (オプション) 状態ファイルのサーバー側暗号化を有効にするかどうか。trueの場合、COSは「AES256」暗号化アルゴリズムを使用して状態ファイルを暗号化します。acl- (オプション) 状態ファイルに適用されるオブジェクトACL。privateとpublic-readが許可されます。デフォルトはprivateです。accelerate- (オプション) グローバルアクセラレーションを有効にするかどうか。デフォルトはfalseです。
ロールの引き受け
ロールの引き受けが提供されている場合、OpenTofu は提供された認証情報を使用してこのロールを引き受けようとします。ロールの引き受けは、cosバックエンドブロックにassume_roleブロックを追加することで提供できます。
assume_role- (オプション)assume_roleブロック。指定されている場合、OpenTofu は提供された認証情報を使用してこのロールを引き受けようとします。
assume_role ブロックの詳細は以下のとおりです。
role_arn- (必須) 引き受けるロールのARN。TENCENTCLOUD_ASSUME_ROLE_ARNから取得できます。session_name- (必須) AssumeRole呼び出しを行うときに使用するセッション名。TENCENTCLOUD_ASSUME_ROLE_SESSION_NAMEから取得できます。session_duration- (必須) AssumeRole呼び出しを行うときのセッションの期間。値の範囲は0〜43200(秒)で、デフォルトは7200秒です。TENCENTCLOUD_ASSUME_ROLE_SESSION_DURATIONから取得できます。policy- (オプション) AssumeRole呼び出しを行うときの、より制限的なポリシー。その内容には、principal要素を含めてはなりません。注意:構文の詳細は、ポリシー構文ロジックを参照してください。
使用方法
terraform {
backend "cos" {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-{appid}"
prefix = "tofu/state"
assume_role {
role_arn = "qcs::cam::uin/xxx:roleName/yyy"
session_name = "my-session-name"
session_duration = 3600
}
}
}
さらに、これらのassume_role設定は環境変数によっても提供できます。
使用方法
$ export TENCENTCLOUD_SECRET_ID="my-secret-id"
$ export TENCENTCLOUD_SECRET_KEY="my-secret-key"
$ export TENCENTCLOUD_REGION="ap-guangzhou"
$ export TENCENTCLOUD_ASSUME_ROLE_ARN="qcs::cam::uin/xxx:roleName/yyy"
$ export TENCENTCLOUD_ASSUME_ROLE_SESSION_NAME="my-session-name"
$ export TENCENTCLOUD_ASSUME_ROLE_SESSION_DURATION=3600
$ tofu plan