Ber*_*las 6 google-cloud-platform terraform google-iam
我在使用iam_policy资源类型而不被锁定在terraform destroy. 这适用于google_storage_bucket_iam_policy和 等资源类型google_project_iam_policy。
此示例适用于google_storage_bucket_iam_policy资源。假设我有一个所有者列表以及 terraform 用于授予该roles/storage.admin角色的服务帐户。
resource "google_storage_bucket" "default" {
name = "default"
location = "EU"
}
resource "google_storage_bucket_iam_role" "owners" {
bucket = "default"
binding {
role = "roles/storage.admin"
members = [
"${var.owners}",
"${var.serviceAccount}"
]
}
}
Run Code Online (Sandbox Code Playgroud)
资源创建的顺序是先存储桶,再创建策略。当然,destroy操作会按相反的顺序处理资源 - 首先是策略,然后是存储桶。但是,删除策略后,服务帐户没有足够的权限来删除存储桶。
也许一种解决方法是google_storage_bucket_iam_member为所有者使用资源,但是这种方法看起来不太干净,因为它继承了之前在项目中定义的任何内容,这可能非常混乱。
顺便说一句,相同的逻辑适用于项目级别的资源google_project_iam_policy。提前致谢。
您可以创建显式依赖关系,它将:
这是您添加的示例depends_on:
resource "google_storage_bucket" "default" {
name = "default"
location = "EU"
depends_on = ["google_storage_bucket_iam_role.owners"]
}
resource "google_storage_bucket_iam_role" "owners" {
bucket = "default"
binding {
role = "roles/storage.admin"
members = [
"${var.owners}",
"${var.serviceAccount}"
]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |