I am very new to GCP with terraform and I want to deploy all my modules using centralized tools.
Is there any way to remove the step of enabling google API's every time so that deployment is not interrupted?
I am very new to GCP with terraform and I want to deploy all my modules using centralized tools.
Is there any way to remove the step of enabling google API's every time so that deployment is not interrupted?
There is a Terraform resource definition called "google_project_service" that allows one to enable a service (API). This is documented at google_project_service.
An example of usage appears to be:
resource "google_project_service" "project" {
project = "your-project-id"
service = "iam.googleapis.com"
}
Yes , you can use google_project_service resource to enable one API at a time. You can use count or other loop methods to enable multiple APIs. You would need project editor/owner role to do this.
# 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
}
You can find the complete example here.
instead of using count as suggested by @pradeep you may also loop over the services in question:
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
}