Giter Club home page Giter Club logo

cass-config-builder's Introduction

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

Docker images are built automatically and pushed to GitHub packages for pushes to master and PRs against master. When creating a release tag (e.g. v1.2.0) an image is produced and pushed to DockerHub.

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
DEFINITIONS_LOCATION Filesystem location of the Definition Files. Defaults to /definitions
POD_IP The IP of the Kubernetes Pod
HOST_IP The IP of the Kubernetes worker hosting the 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

cass-config-builder's People

Contributors

respringer avatar cpmcdaniel avatar johntrimble avatar jimdickinson avatar jsanda avatar burmanm avatar miles-garnsey avatar scotthaleen avatar bradfordcp avatar xn137 avatar jdonenine avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.