/cass-config-builder

Configuration builder for Apache Cassandra based on definitions at datastax/cass-config-definitions

Primary LanguageClojureApache License 2.0Apache-2.0

Introduction

The cass-config-builder can be consumed as either a jar artifact or inside of a Docker image.

Testing

./gradlew test

This task, without additional parameters, will test the cass-config-definitions submodule. However, this can be inconvenient if you want to make changes in your own fork of the cass-config-definitions repo. The following -P option allows you to point to a different directory for the definition files to test with:

./gradlew test -Pdefinitions.location=~/cass-config-definitions/resources

Build all artifacts

./gradlew assemble

Push the jar artifact to your local Maven repository

./gradlew publishToMavenLocal

Publish the jar artifact to your remote Maven repository

./gradlew publish

This task uses the following gradle settings:

Setting Description
mavenRepositoryUrl Maven repository to publish to
mavenRepositoryUsername Username for publishing
mavenRepositoryPassword Password for publishing

Build the Docker image

./gradlew dockerImage

Publish the Docker image to a remote docker repository

./gradlew pushDockerImage

This task uses the following gradle settings:

Setting Description
dockerRegistry Docker registry to publish to
dockerRegistryUsername Username for publishing
dockerRegistryPassword Password for publishing

Using the cass-config-builder docker image

The cass-config-builder receives input via the following environment variables:

Variable Description
CONFIG_FILE_DATA See below for explanation
CONFIG_OUTPUT_DIRECTORY Filesystem location to place rendered files. Defaults to /config
DEFINITION_LOCATION Filesystem location of the Definition Files. Defaults to /definitions
POD_IP The IP of the Kubernetes Pod
PRODUCT_NAME Either "cassandra" or "dse"
PRODUCT_VERSION The version number for Cassandra or DSE
RACK_NAME The Cassandra rack name for this Pod

CONFIG_FILE_DATA

This is a JSON-encoded string representation of a nested dictionary. At the top-level of this data structure there are three special keys and an optional number of additional keys.

The three required top-level keys are "cluster-info", "datacenter-info", and "node-info".

cluster-info key

The value for cluster-info key is a dictionary with two required fields:

Key Description
name:Cluster name
seeds:A comma separated list of IP addresses of Cassandra seed nodes

datacenter-info key

The value for datacenter-info key is a dictionary with four required fields:

Key Description
name:Datacenter name
graph-enabled:Enable DSE graph workload
solr-enabled:Enable DSE Solr workload
spark-enabled:Enable DSE Spark workload

Note: Graph, Solr, and Spark workloads are not currently supported in the Cass-Operator.

node-info key

The value for node-info key is a dictionary with eight required fields:

Key Description
name:Node name
rack:Rack name
listen_address:IP for listen address
native_transport_address:IP for native_transport address
native_transport_broadcast_address:IP for native_transport broadcast address
initial_token:The initial token
auto_bootstrap:The auto_bootstrap value
agent_version:The version of Datastax Agent to support

IP Address defaulting

The POD_IP will be used as the default value for the listen_address and native_transport_broadcast_address if they are not specified.

Cassandra refers to native_transport address as rpc_address and native_transport_broadcast_address as broadcast_rpc_address.

native_transport_address will be defaulted to "0.0.0.0".

Additional Top-Level CONFIG_FILE_DATA keys

The list of supported additional fields is dependent upon the exact version of DSE or Cassandra that is being targetted. Each key is called a "config-file-id" and corresponds to a specific configuration file in that version of DSE or Cassandra. The exact details of the config-file-ids and their supported values are defined in the cass-config-builder Definition Files.

For more details on the Definition Files, see the Github repository:

https://github.com/datastax/cass-config-definitions