From 67f50225a8d226a5da55a2f4a179d656b84ca367 Mon Sep 17 00:00:00 2001 From: Aline Freitas Date: Tue, 13 Jun 2023 15:34:45 -0300 Subject: [PATCH] fix: allow multiple networks to same container (#57) * fix: allow multiple networks to same container * docs: add example to networks_advanced --- README.md | 2 +- main.tf | 15 ++++++++++----- variables.tf | 25 +++++++++++++++++-------- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index c297a64..45185f9 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ No modules. | [image](#input\_image) | Specify the image to start the container from. Can either be a repository/tag or a partial image ID | `string` | n/a | yes | | [named\_volumes](#input\_named\_volumes) | Mount named volumes |
map(object({
container_path = string
read_only = bool
create = bool
}))
| `{}` | no | | [network\_mode](#input\_network\_mode) | Specify a custom network mode | `string` | `null` | no | -| [networks\_advanced](#input\_networks\_advanced) | Advanced network options for the container |
object({
name = string
aliases = list(string)
ipv4_address = string
ipv6_address = string
})
| `null` | no | +| [networks\_advanced](#input\_networks\_advanced) | Advanced network options for the container
networks_advanced = [
{
name = "proxy-tier"
ipv4_address = "10.0.0.14"
},
{
name = "media-tier"
ipv4_address = "172.0.0.14"
}
]
| `any` | `null` | no | | [ports](#input\_ports) | Expose ports |
list(object({
internal = number
external = number
protocol = string
}))
| `null` | no | | [privileged](#input\_privileged) | Give extended privileges to this container | `bool` | `false` | no | | [restart\_policy](#input\_restart\_policy) | Restart policy. Default: no | `string` | `"no"` | no | diff --git a/main.tf b/main.tf index 0aa40a9..1df3b98 100644 --- a/main.tf +++ b/main.tf @@ -2,6 +2,11 @@ locals { image = var.image img_nouser = replace(local.image, "/", "") != local.image ? split("/", local.image)[1] : split("/", local.image)[0] container_name = split(":", local.img_nouser)[0] + networks_advanced = try( + element(var.networks_advanced, 0), + var.networks_advanced + ) + networks_advanced_list = tolist([local.networks_advanced]) } data "docker_registry_image" "default" { @@ -98,12 +103,12 @@ resource "docker_container" "default" { } dynamic "networks_advanced" { - for_each = var.networks_advanced == null ? [] : [var.networks_advanced] + for_each = local.networks_advanced_list == null ? [] : local.networks_advanced_list content { - name = var.networks_advanced.name - ipv4_address = var.networks_advanced.ipv4_address - ipv6_address = var.networks_advanced.ipv6_address - aliases = var.networks_advanced.aliases + name = networks_advanced.value.name + ipv4_address = networks_advanced.value.ipv4_address + ipv6_address = networks_advanced.value.ipv6_address + aliases = networks_advanced.value.aliases } } diff --git a/variables.tf b/variables.tf index d214f05..806324a 100644 --- a/variables.tf +++ b/variables.tf @@ -95,14 +95,23 @@ variable "capabilities" { default = null } variable "networks_advanced" { - description = "Advanced network options for the container" - type = object({ - name = string - aliases = list(string) - ipv4_address = string - ipv6_address = string - }) - default = null + description = <