我在使用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
。提前致谢。
在 Azure 中手动生成服务主体时,作为操作的结果,我获得了密码。
但是,如果我使用 Terraform 创建服务主体,则情况并非如此,密码不在此模块的输出中:
+ azuread_service_principal.k8s_principal
id: <computed>
application_id: "${azuread_application.app.application_id}"
display_name: <computed>
Run Code Online (Sandbox Code Playgroud)
有什么我错过的吗?与 CLI 相比,为什么 Terraform 的输出行为不同?
我在官方文档中找不到是否NetworkPolicy
阻止NodePort
入口流量。
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
Run Code Online (Sandbox Code Playgroud)
考虑上面的 NetworkPolicy - 是否期望它会阻止任何进入NodePort
我的命名空间内的 -type 服务的流量?
如果是这样,我如何允许此类流量进入我的命名空间?会ipBlock
解决吗?
我需要迭代本地执行提供程序中的变量列表。那可能吗?
变量.tf:
variable "items" {
default = []
}
Run Code Online (Sandbox Code Playgroud)
主要.tf:
resource "null_resource" "loop_list" {
provisioner "local-exec" {
interpreter = ["/bin/bash", "-c"]
command = <<EOF
for i in ${join(' ', var.items)}
print $i
done
EOF
}
}
Run Code Online (Sandbox Code Playgroud)