This is a Terraform provider for managing Kafka topics with Terraform.
Why use this Kafka provider?
- Supports adding partitions and altering configs
- Supports TLS/SASL
- Uses Kafka's new admin APIs rather than shelling out to old bash scripts
-
Download the latest compiled binary from GitHub releases.
-
Unzip/untar the archive.
-
Move it into
$HOME/.terraform.d/plugins
:$ mkdir -p $HOME/.terraform.d/plugins $ mv terraform-provider-kafka $HOME/.terraform.d/plugins/terraform-provider-kafka
-
Create your Terraform configurations as normal, and run
terraform init
:$ terraform init
This will find the plugin locally.
-
Create a Terraform configuration file:
provider "kafka" { hosts = ["localhost:9092"] } resource "kafka_topic" "example" { name: "example" num_partitions: "8" replication_factor: "1" config_entries: { retention.bytes: "102400" cleanup.policy: "compact } }
-
Run
terraform init
to pull in the provider:$ terraform init
-
Run
terraform plan
andterraform apply
to interact with the filesystem:$ terraform plan $ terraform apply
This provider supports importing externally created topics by their name. Assuming you've already created a topic declaration like the one above, you can get Terraform to manage the state of the existing topic:
$ terraform import kafka_topic.example example
For more examples, please see the examples folder in this repository.
MIT
- travisjeffery.com
- GitHub @travisjeffery
- Twitter @travisjeffery
- Medium @travisjeffery