Ошибка предоставления terraform: неподдерживаемый аргумент в модуле при запуске плана terraform?
Я получаю аргумент Ошибка: Неподдерживаемый при запуске плана terraform в версии 12.24.
Error: Unsupported argument
on .terraform/modules/app/main.tf line 261, in resource "aws_db_instance" "db_instance":
261: timeouts = {
An argument named "timeouts" is not expected here. Did you mean to define a
block of type "timeouts"?
Это код в tf файле:
timeouts = {
create = "${var.db_instance_create_timeout}"
update = "${var.db_instance_update_timeout}"
delete = "${var.db_instance_delete_timeout}"
}
Я не знаю, как исправить эту ошибку.
- Вышеупомянутая ошибка была исправлена удалением символа "=" по истечении времени ожидания.
Я также получаю больше ошибок, требующих решения:
Error: Unsupported argument
on .terraform/modules/rds/main.tf line 150, in resource "aws_db_parameter_group" "db_parameter_group":
150: parameter = concat(var.parameters, local.parameters[local.parameter_lookup])
An argument named "parameter" is not expected here. Did you mean to define a
block of type "parameter"?
Код в tf файле:
parameter = concat(var.parameters, local.parameters[local.parameter_lookup])
как это исправить?
2 ответа
Я копирую решение, которое сработало для меня, с github , спасибо члену hashicorp bflad :
В Terraform 0.12 (или выше) синтаксический анализатор языка конфигурации более строг в отношении различия между аргументами и блоками конфигурации. Эта ошибка:
An argument named "XXX" is not expected here. Did you mean to
define a block of type "XXX"?
Обычно означает, что = (знак равенства) необходимо удалить из назначения аргумента, чтобы он правильно анализировался как блок конфигурации, например
root_block_device {
Это различие в синтаксисе HCL может показаться тривиальным, но внутри эта более строгая проверка типов обеспечивает согласованность с синтаксисом JSON. Дополнительную информацию об этом изменении можно найти в руководстве по обновлению Terraform 0.12. Говоря об этом, в этом руководстве упоминается полезная команда terraform 0.12upgrade, которая должна автоматически исправлять подобные проблемы в ваших конфигурациях Terraform при обновлении с Terraform 0.11.
Ошибка
Аргумент с именем «secret_environment_variables» здесь не ожидается. Вы хотели определить блок типа «secret_environment_variables»?
Проблема
main.tf
resource "google_cloudfunctions_function" "this" {
secret_environment_variables = var.secret_environment_variables
}
variables.tf
variable "secret_environment_variables" {
type = any
default = {}
description = "Secret environment variables configuration."
}
Решение
resource "google_cloudfunctions_function" "this" {
secret_environment_variables {
key = var.secret_environment_variables_key
secret = var.secret_environment_variables_secret
version = var.secret_environment_variables_version
}
}
variable "secret_environment_variables_key" {
type = string
default = null
nullable = true
description = "Name of the environment variable."
}
variable "secret_environment_variables_secret" {
type = string
default = null
nullable = true
description = "ID of the secret in secret manager (not the full resource name)."
}
variable "secret_environment_variables_version" {
type = string
default = null
nullable = true
description = "Version of the secret (version number or the string `latest`). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new clones start."
}