A Kafka Connect provider for Terraform allowing connectors to be managed by Terraform.
terraform-provider-kafkaconnect is based on Terraform and as such, you need Terraform >=0.10.0
The recommended way to install terraform-provider-kafkaconnect is use the binary distributions from the Releases page. The packages are available for Linux and macOS.
Download and uncompress the latest release for your OS. This example uses the linux binary.
> wget https://github.com/b-social/terraform-provider-kafkaconnect/releases/download/0.1.0-rc.5/terraform-provider-kafkaconnect_v0.1.0-rc.5_linux_amd64.tar.gz
> tar -xvf terraform-provider-kafkaconnect*.tar.gz
Now copy the binary to the Terraform's plugins folder. If this is your first plugin, the directory may need to be created first.
> mkdir -p ~/.terraform.d/plugins/
> mv terraform-provider-kafkaconnect*/terraform-provider-kafkaconnect ~/.terraform.d/plugins/
If you wish to compile the provider from source code, you'll first need
Go installed on your machine (version >=1.10 is
required). You'll also need to correctly setup a
GOPATH, as well as adding
$GOPATH/bin
to your $PATH
.
Clone this repository to:
$GOPATH/src/github.com/b-social/terraform-provider-kafkaconnect
> mkdir -p $GOPATH/src/github.com/b-social
> git clone https://github.com/b-social/terraform-provider-kafkaconnect.git $GOPATH/src/github.com/b-social/terraform-provider-kafkaconnect
Enter the provider directory and build the provider
> cd $GOPATH/src/github.com/b-social/terraform-provider-kafkaconnect
> ./build provider:build
Now copy the compiled binary to Terraform's plugins folder. If this is your first plugin, the directory may need to be created first.
> mkdir -p ~/.terraform.d/plugins/
> cd $GOPATH/bin
> cp terraform-provider-kafkaconnect ~/.terraform.d/plugins/
This plugin currently consists of a single resource kafkaconnect_connector
.
The resource supports arbitrary connectors, whether custom or bundled with
Kafka Connect.
To define a connector, first define the provider:
provider "kafkaconnect" {
url = "https://kafkaconnect.example.com"
}
Then, define a connector:
resource "kafkaconnect_connector" "file_stream_source" {
name = "local-file-source"
class = "FileStreamSource"
maximum_tasks = "1"
configuration = {
file = "/tmp/test.txt"
topic = "connect-test"
}
}
The name
, class
and maximum_tasks
arguments are required. If custom key
or value converters are required, the resource also supports
key_converter_class
, key_converter_configuration
, value_converter_class
and value_converter_configuration
arguments, where *_class
is a string
referencing the class to use and *_configuration
is a map of additional
configuration to provide to the converter. Any additional connector
configuration can be passed in the configuration
map.
After checking out the repo, run dep ensure
to install dependencies. Then,
run ./build provider:test:unit
to run the tests.
Bug reports and pull requests are welcome on GitHub at https://github.com/b-social/terraform-provider-kafkaconnect. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
The gem is available as open source under the terms of the MIT License.