⚙️
Recap Terraform: Import blocks
Terraform について recap する。個人的な memo として。
まずは、Terraform v1.5.0
で追加された Import
blocks について。
Environment
Terraform v1.7.2
on linux_amd64
Your version of Terraform is out of date! The latest version
is 1.7.3. You can update by downloading from https://www.terraform.io/downloads.html
before v1.5.0
Plan and apply an import
インポートするには、以下の手順が必要だった。
-
/modules/gcs
を準備。 -
terraform import
で.tfstate
を更新。 -
terraform plan
で差分を確認。 - HCL を調整。
.
├── environments
│ └── dev
│ ├── backend.tf
│ ├── main.tf # edit
│ └── variables.tf
├── modules
│ └── gcs
│ ├── locals.tf # add
│ ├── main.tf # add
│ └── variables.tf # add
└── README.md
/modules/gcs/main.tf
resource "google_storage_bucket" "default" {
project = var.project_id
name = local.uploader_bucket_name
location = var.default_region
force_destroy = false
}
resource "google_storage_bucket_iam_binding" "object_admin" {
bucket = google_storage_bucket.default.name
role = "roles/storage.objectAdmin"
members = [for account in var.service_accounts : "serviceAccount:${account}"]
}
/environments/dev/main.tf
module "hoge_bucket" {
source = "../../modules/gcs"
project_id = var.project_id
default_region = var.region
service_accounts = var.service_accounts
depends_on = [
module.iam
]
}
-
hogebucket
は bucket name。
import
terraform import module.uploader_bucket.google_storage_bucket.default hogebucket
v1.5.0 and later
Plan and apply an import
インポートするには、以下の手順で出来るようになった。
-
import.tf
を準備。 terraform init
terraform plan -generate-config-out=generated.tf
terraform apply
.
├── environments
│ └── dev
│ ├── backend.tf
│ ├── generated.tf # generated
│ ├── import.tf # add
│ ├── main.tf
│ └── variables.tf
import.tf
import {
id = "hogehoge"
to = google_bigquery_dataset.default
}
generated.tf
# __generated__ by Terraform
# Please review these resources and move them into your main configuration files.
# __generated__ by Terraform
resource "google_bigquery_dataset" "main" {
dataset_id = "hogehoge"
default_collation = null
default_partition_expiration_ms = 0
default_table_expiration_ms = null
delete_contents_on_destroy = false
description = null
friendly_name = null
is_case_insensitive = false
labels = {}
location = "asia-northeast2"
max_time_travel_hours = "168"
project = "sandbox"
storage_billing_model = "LOGICAL"
access {
domain = null
group_by_email = null
iam_member = null
role = "OWNER"
special_group = "projectOwners"
user_by_email = null
}
access {
domain = null
group_by_email = null
iam_member = null
role = "READER"
special_group = "projectReaders"
user_by_email = null
}
access {
domain = null
group_by_email = null
iam_member = null
role = "WRITER"
special_group = "projectWriters"
user_by_email = null
}
timeouts {
create = null
delete = null
update = null
}
}
-
import
を認識。
Plan: 1 to import, 0 to add, 0 to change, 0 to destroy.
BTW
認知的変化について考える。
認知的変化 ≒ 学習
engineer それぞれの状態が異なるため、自分と同じことを求めることはできない。
その場合にどう言う選択をすることが良いのか。
自分に適した場所を探すのが 1 つの方法だと個人的に思う。
人生は一度しかない。
Discussion