#terraform
#terraform
Вопрос:
У меня есть модуль beanstalk, в котором есть ресурс Terraform для aws_elastic_beanstalk_environment, который загружает переменные среды с карты.
resource "aws_elastic_beanstalk_environment" "default" {
name = module.label.id
...
...
dynamic "setting" {
for_each = var.env_vars
content {
namespace = "aws:elasticbeanstalk:application:environment"
name = setting.key
value = setting.value
resource = ""
}
}
...
Я также загружаю секреты из источника данных aws_secretsmanager_secret и передаю их в модуль beanstalk.
module "web-secrets" {
source = "../modules/web/secrets" <- just loads secrets was data source aws_secrets_manager_secret
}
module "elastic-beanstalk-environment-lenz" {
source = "../modules/beanstalk/beanstalk"
...
...
env_vars = {
"APPLICATION_NAME" = "web"
...
...
"API_KEY" = module.web-secrets.api_key
}
}
однако во время планирования terraform ресурс aws_elastic_beanstalk_environment отображает его выходные данные на экране.
terraform plan
...
...
setting {
name = "API_KEY"
namespace = "aws:elasticbeanstalk:application:environment"
value = "password"
}
...
Поскольку я использую Terraform cloud, я не могу пытаться использовать другую утилиту в tfmask, чтобы скрыть конфиденциальную информацию перед возвратом вывода на экран.
Комментарии:
1. Обычно вы просто передаете имя своего секрета в качестве переменной env в EB. Тогда в вашем приложении вы фактически получите значение секрета.
2. К сожалению, у меня нет возможности, чтобы мои разработчики извлекали секрет из SSM непосредственно перед запуском приложения.