Jasper
Jasper

Reputation: 11

How I config zk port for kafka in terraform

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
  }
}

Upvotes: 1

Views: 166

Answers (1)

Marko E
Marko E

Reputation: 18203

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
  }
}

Upvotes: 1

Related Questions