TerraformのStateをCloudflare R2に置く

こんなこと言ってもらったので。 StateはTerraformが管理しているリソースの現在の状態を表すやつね。

やる。はじめに適当にCloudflare R2にバケットを作成しておくこと。

バックエンドの追加

provider.tfのterraformブロック内に下記内容を追記する。

terraform {
    backend "s3" {
        bucket = "バケット名"
        key    = "states/test-terraform/terraform.tfstate"

        region                      = "auto"
        skip_credentials_validation = true
        skip_metadata_api_check     = true
        skip_region_validation      = true
        skip_requesting_account_id  = true
        skip_s3_checksum            = true
        use_path_style              = true
    }
}

provider "cloudflare" { }

R2 APIトークンの設定

APIトークン(S3でいうアクセスキー)を環境変数にいれる。 APIトークンは「Cloudflare>R2>API>APIトークンの管理」から取得できる。

$ export AWS_ACCESS_KEY_ID='アクセス キー ID'
$ export AWS_SECRET_ACCESS_KEY='シークレット アクセス キー'
$ export AWS_ENDPOINT_URL_S3='S3クライアントのエンドポイント'

R2へのStateの引っ越し

下記コマンドでbackendをR2に変更する。

$ terraform init -reconfigure

これで完成。

参考

ほぼこれのまんま。

github.com