#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.