106 lines
3.2 KiB
HCL
106 lines
3.2 KiB
HCL
/**
|
|
* Copyright 2022 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
variable "bundle_path" {
|
|
description = "Path used to write the intermediate Cloud Function code bundle."
|
|
type = string
|
|
default = "./bundle.zip"
|
|
}
|
|
|
|
variable "cloud_function_config" {
|
|
description = "Optional Cloud Function configuration."
|
|
type = object({
|
|
bucket_name = optional(string)
|
|
build_worker_pool_id = optional(string)
|
|
bundle_path = optional(string, "./bundle.zip")
|
|
debug = optional(bool, false)
|
|
memory_mb = optional(number, 256)
|
|
source_dir = optional(string, "../src")
|
|
timeout_seconds = optional(number, 540)
|
|
})
|
|
default = {}
|
|
nullable = false
|
|
}
|
|
|
|
variable "dashboard_json_path" {
|
|
description = "Optional monitoring dashboard to deploy."
|
|
type = string
|
|
default = null
|
|
}
|
|
|
|
variable "discovery_config" {
|
|
description = "Discovery configuration. Discovery root is the organization or a folder. If monitored folders and projects are empy, every project under the discovery root node will be monitored."
|
|
type = object({
|
|
discovery_root = string
|
|
monitored_folders = list(string)
|
|
monitored_projects = list(string)
|
|
custom_quota_file = optional(string)
|
|
})
|
|
nullable = false
|
|
validation {
|
|
condition = (
|
|
var.discovery_config.monitored_folders != null &&
|
|
var.discovery_config.monitored_projects != null
|
|
)
|
|
error_message = "Monitored folders and projects can be empty lists, but they cannot be null."
|
|
}
|
|
}
|
|
|
|
variable "grant_discovery_iam_roles" {
|
|
description = "Optionally grant required IAM roles to Cloud Function service account."
|
|
type = bool
|
|
default = false
|
|
nullable = false
|
|
}
|
|
|
|
variable "labels" {
|
|
description = "Billing labels used for the Cloud Function, and the project if project_create is true."
|
|
type = map(string)
|
|
default = {}
|
|
}
|
|
|
|
variable "name" {
|
|
description = "Name used to create Cloud Function related resources."
|
|
type = string
|
|
default = "net-dash"
|
|
}
|
|
|
|
variable "project_create_config" {
|
|
description = "Optional configuration if project creation is required."
|
|
type = object({
|
|
billing_account_id = string
|
|
parent_id = optional(string)
|
|
})
|
|
default = null
|
|
}
|
|
|
|
variable "project_id" {
|
|
description = "Project id where the Cloud Function will be deployed."
|
|
type = string
|
|
}
|
|
|
|
variable "region" {
|
|
description = "Compute region where the Cloud Function will be deployed."
|
|
type = string
|
|
default = "europe-west1"
|
|
}
|
|
|
|
variable "schedule_config" {
|
|
description = "Schedule timer configuration in crontab format."
|
|
type = string
|
|
default = "*/30 * * * *"
|
|
}
|