How I config zk port for kafka in terraform

154 Views Asked by At

As you know. kafka is depends on zookeeper. I want to config zk port for kafka.

zk

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

resource "docker_image" "zookeeper" {
  name = "ubuntu/zookeeper:latest"
}

resource "docker_container" "zookeeper" {
  image = docker_image.zookeeper.name
  name  = "zookeeper_test"
  ports {
    internal = 2181
    external = 12181
  }
}

kafka

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

resource "docker_image" "kafka" {
  name = "ubuntu/kafka:latest"
}

resource "docker_container" "kafka" {
  image = docker_image.kafka.name
  name  = "kafka_test"
// Maybe this field "command" to use, but it's not work.
  command = [
    "-e", "ZOOKEEPER_PORT=12181"
  ]
  ports {
    internal = 9092
    external = 19092
  }
}
1

There are 1 best solutions below

0
On

You should use env option. Additionally, in order to tell terraform that the Kafka container depends on the Zookeeper, you have to use implicit dependency to make sure one is created before the other:

resource "docker_container" "kafka" {
  image = docker_image.kafka.name
  name  = "kafka_test"
  env = [
    "ZOOKEEPER_PORT=${docker_container.zookeeper.ports[0].external}"
  ]
  ports {
    internal = 9092
    external = 19092
  }
}