nebula/modules/container/main.tf

126 lines
3.2 KiB
Terraform
Raw Normal View History

data "docker_registry_image" "image" {
name = "${var.image}"
}
resource "docker_image" "image" {
name = "${var.image}"
pull_triggers = ["${data.docker_registry_image.image.sha256_digest}"]
2019-04-27 10:54:48 +00:00
keep_locally = "${var.keep_image}"
}
data "docker_network" "traefik" {
name = "traefik"
}
resource "docker_container" "container" {
name = "${var.name}"
image = "${docker_image.image.latest}"
ports = "${var.ports}"
restart = "${var.restart}"
env = ["${var.env}"]
command = "${var.command}"
entrypoint = "${var.entrypoint}"
user = "${var.user}"
network_mode = "${var.network_mode}"
capabilities = ["${var.capabilities}"]
2019-01-17 19:21:36 +00:00
// Only attach the traefik network if
// service is exposed to the web
networks = ["${concat(var.networks,compact(split(",",lookup(var.web, "expose", "false") == "false" ? "" :"${data.docker_network.traefik.id}")))}"]
networks_advanced = ["${var.networks_advanced}"]
memory = "${local.resource["memory"]}"
memory_swap = "${local.resource["memory_swap"]}"
2018-08-02 18:29:39 +00:00
volumes = ["${var.volumes}"]
devices = ["${var.devices}"]
2018-08-21 03:00:17 +00:00
dns = ["${var.dns}"]
2018-08-02 18:29:39 +00:00
# Look at this monstrosity
# And then https://github.com/hashicorp/terraform/issues/12453#issuecomment-365569618
# for why this is needed
labels = "${merge(local.default_labels,
zipmap(
concat(
2018-08-06 21:25:46 +00:00
keys(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "expose", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", keys(local.traefik_common_labels))
2018-08-02 18:29:39 +00:00
)
2018-08-06 21:25:46 +00:00
),
concat(
values(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "expose", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", values(local.traefik_common_labels))
2018-08-02 18:29:39 +00:00
)
)
),
zipmap(
concat(
2018-08-06 21:25:46 +00:00
keys(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "expose", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", keys(local.web))
2018-08-02 18:29:39 +00:00
)
2018-08-06 21:25:46 +00:00
),
concat(
values(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "expose", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", values(local.web))
2018-08-02 18:29:39 +00:00
)
)
),
2018-08-06 21:25:46 +00:00
2018-08-02 18:29:39 +00:00
zipmap(
concat(
2018-08-06 21:25:46 +00:00
keys(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "expose", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", keys(local.traefik_common_labels))
2018-08-02 18:29:39 +00:00
)
2018-08-06 21:25:46 +00:00
),
concat(
values(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "expose", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", values(local.traefik_common_labels))
2018-08-02 18:29:39 +00:00
)
)
),
zipmap(
concat(
2018-08-06 21:25:46 +00:00
keys(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "auth", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", keys(local.traefik_auth_labels))
2018-08-02 18:29:39 +00:00
)
2018-08-06 21:25:46 +00:00
),
concat(
values(local.default_labels),
split("~",
2018-08-02 18:29:39 +00:00
lookup(var.web, "auth", "false") == "false" ?
"" :
2018-08-06 21:25:46 +00:00
join("~", values(local.traefik_auth_labels))
2018-08-02 18:29:39 +00:00
)
)
)
)}"
destroy_grace_seconds = "${var.destroy_grace_seconds}"
must_run = "${var.must_run}"
}