Я пытаюсь разработать универсальные модули terraform для поддержки мониторов data-dog и позволить пользователю модулей добавлять ресурсы и / или переопределять ресурсы в побочных универсальных модулях.
terraform переопределяет Функция прекрасно работает без модулей, но не работает при использовании модулей.
как переопределить некоторые параметры ресурса внутри модулей?
Требования:
/ modules / datadog / monitors.tf содержит список ресурсов, каждый ресурс представляет собой общийМонитор данных со значениями параметров по умолчанию.Каждое отдельное приложение может выбрать переопределение одного или нескольких параметров внутри каждого ресурса .
/ application-1 / monitors.tf содержит модуль сsource как / modules / datadog / , еще несколько мониторов, которые не включены в универсальные мониторы и некоторые переменные.
/ application-1 / monitors.tf
module "datadog" {
source = "/modules/datadog/"
}
/ modules / datadog / monitors.tf
# Generic Datadog monitor to monitor cpu
resource "datadog_monitor" "foo" {
name = "Name for monitor foo"
type = "metric alert"
message = "Monitor triggered. Notify: @hipchat-channel"
escalation_message = "Escalation message @pagerduty"
query = "avg(last_1h):avg:aws.ec2.cpu{environment:foo,host:foo} by {host} > 4"
thresholds {
ok = 0
warning = 2
warning_recovery = 1
critical = 4
critical_recovery = 3
}
notify_no_data = false
renotify_interval = 60
notify_audit = false
timeout_h = 60
include_tags = true
silenced {
"*" = 0
}
tags = ["foo:bar", "baz"]
}
Решение 1 : Добавить файл overrides.tf в каталог / modules / datadog .terraform функция переопределения объединяет содержимое в файле overrides.tf с конфигурацией, определенной в файле monitors.tf.
Но проблема этого решения заключается в том, что для каждого приложения необходимо скопировать файл overrides.tf в каталог / modules / datadogперед запуском примените команду.
overrides.tf
resource "datadog_monitor" "foo" {
escalation_message = "Escalation message @pagerduty1"
thresholds {
ok = 0
warning = 20
warning_recovery = 10
critical = 40
critical_recovery = 35
}
notify_no_data = false
}
Решение 2 : можно ли использовать переопределения с модулями?я попытался переопределить параметры ресурса, скопировав файл overrides.tf в каталог / application-1 / Directory, но terraform не переопределяет ресурсы, а рассматривает оба ресурса как разные.