Каков наилучший способ передачи переменных в json с помощью Terraform

#json #terraform

Вопрос:

У меня есть простой terraform модуль, который использует json файл, как показано ниже:

 resource "aws_ecs_task_definition" "ecs_task_definition" {
  container_definitions    = file(var.CONTAINER_DEFINITION_PATH)
  cpu                      = var.TASK_CPU
  execution_role_arn       = var.EXECUTION_ROLE_ARN
  family                   = var.TASK_FAMILY
  memory                   = var.TASK_MEMORY
  network_mode             = var.TASK_NETWORK_MODE
  requires_compatibilities = var.TASK_REQUIRES_COMPATABILITIES

  tags = var.TASK_TAGS

  task_role_arn = var.EXECUTION_ROLE_ARN
}
 

И я использую этот модуль, как показано ниже:

main.tf

 module "agent_connect_service_ecs_task_definition" {
  source = "./modules/task_definition"

  CONTAINER_DEFINITION_PATH     = "./container_definitions/agent_connect_service.json"
  TASK_CPU                      = "256"
  EXECUTION_ROLE_ARN            = data.aws_iam_role.ecsTaskExecutionRole.arn
  TASK_FAMILY                   = var.AGENT_CONNECT_SERVICE_SERVICE_NAME // change me
  TASK_MEMORY                   = "512"
  TASK_NETWORK_MODE             = "awsvpc"
  TASK_REQUIRES_COMPATABILITIES = ["FARGATE"]
  TASK_TAGS                     = { "Name" : "mlb-agent-connect", "Project" : "mlb"  } // change me
}
 

И здесь, в json agent_connect_service.json , мне нужно динамически изменять некоторые значения. Я привел ниже только часть объекта json для вашей читаемости, где мне нужно иметь динамически изменяющееся значение:

 [
    {
        "cpu": 0,
        "environment": [
            {
                "name": "ASPNETCORE_ENVIRONMENT",
                "value": "<VALUE-I-NEED-TO-CHANGE-DYNAMICALLY>"
            }
        ]
        .
        .
        .
    }
]
 

В приведенном выше json, как я могу передать некоторые случайные значения в VALUE-I-NEED-TO-CHANGE-DYNAMICALLY раздел? Каков наилучший способ, которым я могу это сделать, не загромождая main.tf (это означает, что мне не нужно определять файл json внутри main.tf , потому что мне нужно это определение json в другом каталоге, как сейчас)

Спасибо

Ответ №1:

Я думаю, что лучшим способом было бы использовать файл шаблона и превратить json его в шаблон.

Это позволяет вам передавать ваши переменные в templatefile файл, который сгенерирует ваш окончательный json.