У меня есть модуль terraform и .yaml docker-compose с конфигурацией службы. В Yaml есть такие переменные, как:
version: '3.2'
services:
cadvisor:
image: gcr.io/google-containers/cadvisor:${var.image_version}
container_name: cadvisor
volumes:
- /:/rootfs:ro
- /var/lib/docker:/var/lib/docker:ro
mem_limit: ${var.limit}
mem_reservation: ${var.reservation}
ports:
- 8080:8080
и мой ресурс:
resource "local_file" "compose" {
content = file("${var.compose_path}/docker-compose.yml")
filename = "${path.module}/foo.bar"
}
Значения объявлены в моем модуле. Я собираюсь использовать этот файл docker-compose.yml в своем проекте, например. отправить на удаленный сервер и запустить там. Как передать значения переменных из моего модуля в yaml?
Я попытался объявить значения и выполнить некоторые действия с моим yaml, такие как resource "local_file" , чтобы сохранить как файл, но .yaml остается без значений.


Вы можете добиться того, чего хотите, используя встроенную функцию templatefile [1]:
resource "local_file" "compose" {
content = templatefile("${var.compose_path}/docker-compose.yml", {
image_version = var.image_version
limit = var.limit
reservation = var.reservation
})
filename = "${path.module}/docker-compose.yml"
}
Это также потребует незначительных изменений в файле docker-compose.yml:
version: '3.2'
services:
cadvisor:
image: gcr.io/google-containers/cadvisor:${image_version}
container_name: cadvisor
volumes:
- /:/rootfs:ro
- /var/lib/docker:/var/lib/docker:ro
mem_limit: ${limit}
mem_reservation: ${reservation}
ports:
- 8080:8080
[1] https://www.terraform.io/language/functions/templatefile
Можете ли вы добавить весь блок кода к вопросу? У меня есть представление об ответе, но мне нужно увидеть все, что у вас есть на данный момент.