Передать команду как переменную в определение задачи ECS - PullRequest
0 голосов
/ 24 апреля 2020

Есть ли способ передать команду Docker в качестве переменной Terraform в определение задачи ECS, определенное в Terraform?

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Согласно документации aws_ecs_task_definition , свойство container_definitions является неразобранным JSON объектом, который является массивом определений контейнера , как вы перейти непосредственно к AWS API. Одним из свойств этого объекта является command.

В некоторой степени перефразируя документацию, вы получите пример определения задачи, например:

resource "aws_ecs_task_definition" "service" {
  family                = "service"
  container_definitions = <<DEFINITIONS
[
  {
    "name": "first",
    "image": "service-first",
    "command": ["httpd", "-f", "-p", "8080"],
    "cpu": 10,
    "memory": 512,
    "essential": true
  }
]
DEFINITIONS
}
0 голосов
/ 25 апреля 2020

Вы можете попробовать следующий метод, чтобы взять command в качестве переменной с условием шаблона, если ничего не передано из модуля root. service. json

[
  {
    ...
    ],
    %{ if command != "" }
    "command"  : [${command}],
    %{ endif ~}
    ...
  }
]

container.tf

data "template_file" "container_def" {
  count    = 1
  template = file("${path.module}/service.json")
  vars = {
    command        = var.command != "" ? join(",", formatlist("\"%s\"", var.command)) : ""
  }
}

main.tf

module "example" {
...
     command                 = ["httpd", "-f", "-p", "8080"]
...
}

variables.tf

variable "command" {
  default = ""
}
...