terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "4.5.0"
    }
  }
}

provider "docker" {}

resource "docker_network" "lab" {
  name = "tf-ansible-lab"
}

resource "docker_image" "node" {
  name = "debian:12-slim"
}

resource "docker_container" "web" {
  count = 3

  name    = "web-${count.index + 1}"
  image   = docker_image.node.image_id
  command = ["sleep", "infinity"]

  networks_advanced {
    name = docker_network.lab.name
  }

  ports {
    internal = 80
    external = 8080 + count.index
    ip       = "127.0.0.1"
  }
}

output "ansible_inventory" {
  value = join("\n", concat(
    ["[web]"],
    [for container in docker_container.web :
      "${container.name} ansible_connection=community.docker.docker"
    ]
  ))
}
