use*_*145 18 google-cloud-platform terraform terraform-provider-gcp
我对使用 terraform 的 GCP 非常陌生,我想使用集中式工具部署我的所有模块。
有没有什么办法可以去掉每次启用google API的步骤,这样部署就不会中断?
kar*_*bal 27
count您也可以循环使用有问题的服务,而不是按照@pradeep的建议使用:
variable "gcp_service_list" {
description ="The list of apis necessary for the project"
type = list(string)
default = [
"cloudresourcemanager.googleapis.com",
"serviceusage.googleapis.com"
]
}
resource "google_project_service" "gcp_services" {
for_each = toset(var.gcp_service_list)
project = "your-project-id"
service = each.key
}
Run Code Online (Sandbox Code Playgroud)
Kol*_*ban 15
有一个名为“google_project_service”的 Terraform 资源定义,它允许启用服务 (API)。这记录在google_project_service。
使用示例似乎是:
resource "google_project_service" "project" {
project = "your-project-id"
service = "iam.googleapis.com"
}
Run Code Online (Sandbox Code Playgroud)
pra*_*eep 10
是的,您可以使用google_project_service资源一次启用一个 API。您可以使用count或 其他循环方法来启用多个 API。您需要项目编辑者/所有者角色来执行此操作。
# Enable services in newly created GCP Project.
resource "google_project_service" "gcp_services" {
count = length(var.gcp_service_list)
project = google_project.demo_project.project_id
service = var.gcp_service_list[count.index]
disable_dependent_services = true
}
Run Code Online (Sandbox Code Playgroud)
nba*_*lle 10
对于那些在 2022 年阅读本文的人来说,从 Terraform 中自动启用serviceusage并cloudresourcesmanager不起作用,因为通过 API 启用这些 API 依赖于它们已经启用......
解决方案是通过 gcloud 命令行来完成:
# Use `gcloud` to enable:
# - serviceusage.googleapis.com
# - cloudresourcemanager.googleapis.com
resource "null_resource" "enable_service_usage_api" {
provisioner "local-exec" {
command = "gcloud services enable serviceusage.googleapis.com cloudresourcemanager.googleapis.com --project ${var.project_id}"
}
depends_on = [google_project.project]
}
# Wait for the new configuration to propagate
# (might be redundant)
resource "time_sleep" "wait_project_init" {
create_duration = "60s"
depends_on = [null_resource.enable_service_usage_api]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5843 次 |
| 最近记录: |