- 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