#google-cloud-platform #terraform #google-cloud-composer
#google-cloud-platform #terraform #google-cloud-composer
Вопрос:
У меня ошибка с кодом terraform при развертывании ресурса GCP composer:
- google_composer_environment.composer-бета: googleapi: Ошибка 400: Ключ свойства должен иметь вид
section
—name
.section
Может не содержать открывающих квадратных скобок, закрывающих квадратных скобок или дефисов, аname
может не содержать точки с запятой или знака равенства. Весь ключ свойства может не содержать точек., Неверный запрос
Проблема возникает при развертывании этого ресурса GCP:https://www.terraform.io/docs/providers/google/r/composer_environment.html
Это мой код:
Variables.tf файл:
variable "composer_airflow_version" {
type = "map"
default = {
image_version="composer-1.6.1-airflow-1.10.1"
}
}
variable "composer_python_version" {
type = "map"
default = {
python_version="3"
}
}
my-composer.tf файл:
resource "google_composer_environment" "composer-beta" {
provider= "google-beta"
project = "my-proyect"
name = "${var.composer_name}"
region = "${var.region}"
config {
node_count = "${var.composer_node_count}"
node_config {
zone = "${var.zone}"
machine_type = "${var.composer_machine_type}"
network = "${google_compute_network.network.self_link}"
subnetwork = "${lookup(var.vpc_subnets_01[0], "subnet_name")}"
}
software_config {
airflow_config_overrides="${var.composer_airflow_version}",
airflow_config_overrides="${var.composer_python_version}",
}
}
depends_on = [
"google_service_account.comp-py3-dev-worker",
"google_compute_subnetwork.subnetwork",
]
}
Согласно сообщению об ошибке, основная причина ошибки, по-видимому, связана с разделом software_config в коде terraform. Я понимаю, что переменные «composer_airflow_version» и «composer_python_version» должны иметь тип «map», поэтому я настраиваю их как формат карты.
A очень признателен, если кто-нибудь сможет определить причину ошибки и сообщить мне, какую корректировку применить. Вероятно, мне следует применить изменение в переменных, но я не знаю, что это такое. 🙁
Заранее спасибо, Хосе
Ответ №1:
Исходя из документации, airflow_config_overrides, pypi_packages, env_variables, image_version и python_version должны находиться непосредственно в разделе software_config.
Variables.tf файл:
variable "composer_airflow_version" {
default = "composer-1.6.1-airflow-1.10.1"
}
variable "composer_python_version" {
default = "3"
}
my-composer.tf файл:
resource "google_composer_environment" "composer-beta" {
provider= "google-beta"
project = "my-proyect"
name = "${var.composer_name}"
region = "${var.region}"
config {
node_count = "${var.composer_node_count}"
node_config {
zone = "${var.zone}"
machine_type = "${var.composer_machine_type}"
network = "${google_compute_network.network.self_link}"
subnetwork = "${lookup(var.vpc_subnets_01[0], "subnet_name")}"
}
software_config {
image_version = "${var.composer_airflow_version}",
python_version = "${var.composer_python_version}",
}
}
depends_on = [
"google_service_account.comp-py3-dev-worker",
"google_compute_subnetwork.subnetwork",
]
}