48 lines
864 B
HCL
48 lines
864 B
HCL
|
|
||
|
source "file" "base" {
|
||
|
}
|
||
|
|
||
|
variables {
|
||
|
images = {
|
||
|
dummy = {
|
||
|
image = "dummy"
|
||
|
layers = ["base/main"]
|
||
|
}
|
||
|
postgres = {
|
||
|
image = "postgres/13"
|
||
|
layers = ["base/main", "base/init", "postgres"]
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
locals {
|
||
|
files = {
|
||
|
foo = {
|
||
|
destination = "fooo"
|
||
|
}
|
||
|
bar = {
|
||
|
destination = "baar"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
build {
|
||
|
dynamic "source" {
|
||
|
for_each = var.images
|
||
|
labels = ["file.base"]
|
||
|
content {
|
||
|
name = source.key
|
||
|
target = "${source.value.image}.txt"
|
||
|
content = join("\n", formatlist("layers/%s/files", var.images[source.key].layers))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
dynamic "provisioner" {
|
||
|
for_each = local.files
|
||
|
labels = ["shell-local"]
|
||
|
content {
|
||
|
inline = ["echo '' > ${var.images[source.name].image}-${provisioner.value.destination}.txt"]
|
||
|
}
|
||
|
}
|
||
|
}
|