Terraform aws_ssm_parameter null / пустой с ignore_changes - PullRequest
3 голосов
/ 05 мая 2020

У меня есть конфигурация Terraform, которая выглядит так:

resource "random_string" "foo" {
  length = 31
  special = false
}

resource "aws_ssm_parameter" "bar" {
  name = "baz"
  type = "SecureString"
  value = random_string.foo.result
  lifecycle {
    ignore_changes = [value]
  }
}

Идея состоит в том, что на первом terraform apply ресурс bar будет сохранен в baz в SSM на основе значения из foo, а затем при последующих вызовах apply я смогу ссылаться на aws_ssm_parameter.bar.value, однако я вижу, что он работает при первом запуске, сохраняет вновь созданное случайное значение, а затем при последующих запусках aws_ssm_parameter.bar.value пусто.

Если я создаю источник данных aws_ssm_parameter, который может правильно извлекать значение, но он не работает с первым apply, когда он еще не существует. Как я могу изменить эту конфигурацию, чтобы получить значение, хранящееся в baz в SSM, и работать над созданием значения в той же конфигурации?

1 Ответ

0 голосов
/ 05 мая 2020

(К сожалению, недостаточно кармы для комментариев)

Чтобы исправить проблему курица-яйцо, вы можете добавить depends_on = [aws_ssm_parameter.bar] к ресурсу данных, но это вносит некоторую неудобство (особенно если вам нужно позвонить destroy часто в вашем рабочем процессе). Это не особенно рекомендуется (см. здесь ).

На самом деле не имеет смысла, что он возвращается пустым, поэтому мне интересно, столкнулись ли вы с другой ошибкой. Публикуется ли значение на самом деле в SSM (т. Е. Вы видите его при запуске aws ssm get-paramter ...)?

Изменить. Я только что протестировал приведенный выше пример кода:

output "bar" {
  value = aws_ssm_parameter.bar.value
}

и вроде нормально работает. Может нужно обновить tf или плагины?

...