Skip to content

safespring/cassandra

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cassandra

Puppet Forge Github Tag Build Status Coverage Status Join the chat at https://gitter.im/locp/cassandra

Table of Contents

  1. Overview
  2. Setup - The basics of getting started with cassandra
  3. Usage - Configuration options and additional functionality
  4. Reference - An under-the-hood peek at what the module is doing and how
  5. Limitations - OS compatibility, etc.
  6. Contributers

Overview

A Puppet module to install and manage Cassandra and DataStax Agent.

Setup

What the cassandra module affects

What the cassandra class affects

  • Installs the Cassandra package (default dsc21).
  • Configures settings in ${config_path}/cassandra.yaml.
  • Optionally ensures that the Cassandra service is enabled and running.
  • Optionally configures a Yum repository to install the Cassandra packages from (on Red Hat).
  • Optionally configures an Apt repository to install the Cassandra packages from (on Ubuntu).

What the cassandra::datastax_agent class affects

  • Optionally installs the DataStax agent.

What the cassandra::java class affects

  • Optionally installs a JRE/JDK package (e.g. java-1.7.0-openjdk).

What the cassandra::optutils class affects

  • Optionally installs the Cassandra support tools (e.g. cassandra21-tools).

Beginning with cassandra

This most basic example would attempt to install the default Cassandra package (assuming there is an available repository). See the Usage(#usage) section for more realistic scenarios.

node 'example' {
  include '::cassandra'
}

To install the DataStax agent, include the specific class.

node 'example' {
  include '::cassandra'
  include '::cassandra::datastax_agent'
}

To install with a reasonably sensible Java environment include the java subclass.

node 'example' {
  include '::cassandra'
  include '::cassandra::java'
}

To install Cassandra with the optional utilities.

node 'example' {
  include '::cassandra'
  include '::cassandra::optutils'
}

To install the main cassandra package (which is mandatory) and all the optional packages, do the following:

node 'example' {
  include '::cassandra'
  include '::cassandra::datastax_agent'
  include '::cassandra::java'
  include '::cassandra::optutils'
}

By saying the cassandra class/package is mandatory, what is meant is that all the sub classes have a dependency on the main class. So for example one could not specify the cassandra::java class for a node with the cassandra class also being included.

Upgrading

The following changes to the API have taken place.

Changes in 0.4.0

There is now a cassandra::datastax_agent class, therefore:

  • cassandra::datastax_agent_package_ensure has now been replaced with cassandra::datastax_agent::package_ensure.
  • cassandra::datastax_agent_service_enable has now been replaced with cassandra::datastax_agent::service_enable.
  • cassandra::datastax_agent_service_ensure has now been replaced with cassandra::datastax_agent::service_ensure.
  • cassandra::datastax_agent_package_name has now been replaced with cassandra::datastax_agent::package_name.
  • cassandra::datastax_agent_service_name has now been replaced with cassandra::datastax_agent::service_name.

Likewise now there is a new class for handling the installation of Java:

  • cassandra::java_package_ensure has now been replaced with cassandra::java::ensure.
  • cassandra::java_package_name has now been replaced with cassandra::java::package_name.

Also there is now a class for installing the optional utilities:

  • cassandra::cassandra_opt_package_ensure has now been replaced with cassandra::optutils:ensure.
  • cassandra::cassandra_opt_package_name has now been replaced with cassandra::optutils:package_name.

Changes in 0.3.0

  • cassandra_opt_package_ensure changed from 'present' to undef.

  • The manage_service option has been replaced with service_enable and service_ensure.

Usage

Create a Small Cluster

To install Cassandra in a two node cluster called 'Foobar Cluster' where node1 (192.168.42.1) is the seed and node2 (192.168.42.2) is also to be a member, do something similar to this:

include cassandra::java
include cassandra::optutils

node 'node1' {
  class { 'cassandra':
    cluster_name    => 'Foobar Cluster',
    listen_address  => "${::ipaddress}",
    seeds           => "${::ipaddress}",
    manage_dsc_repo => true
  }
}

node 'node2' {
  class { 'cassandra':
    cluster_name    => 'Foobar Cluster',
    listen_address  => "${::ipaddress}",
    seeds           => '192.168.42.1',
    manage_dsc_repo => true
  }
}

This would also ensure that the JDK is installed and the optional Cassandra tools.

Reference

Public Classes

  • cassandra
  • cassandra::datastax_agent
  • cassandra::java
  • cassandra::optutils

Class: cassandra

A class for installing the Cassandra package and manipulate settings in the configuration file.

Parameters

authenticator

This is passed to the cassandra.yaml file (default AllowAllAuthenticator).

authorizer

This is passed to the cassandra.yaml file (default: AllowAllAuthorizer).

auto_snapshot

This is passed to the cassandra.yaml file (default true).

cassandra_package_ensure

The status of the package specified in cassandra_package_name. Can be present, latest or a specific version number (default present).

cassandra_package_name

The name of the Cassandra package. Must be available from a repository (default dsc21).

cassandra_yaml_tmpl

The path to the Puppet template for the Cassandra configuration file. This allows the user to supply their own customized template. A Cassandra 1.X compatible template called cassandra1.yaml.erb has been provided by @Spredzy (default cassandra/cassandra.yaml.erb).

client_encryption_enabled

This is passed to the cassandra.yaml file (default false).

client_encryption_keystore

This is passed to the cassandra.yaml file (default conf/.keystore).

client_encryption_keystore_password

This is passed to the cassandra.yaml file (default cassandra).

cluster_name

This is passed to the cassandra.yaml file (default Test Cluster).

commitlog_directory

This is passed to the cassandra.yaml file (default /var/lib/cassandra/commitlog).

concurrent_counter_writes

This is passed to the cassandra.yaml file (default 32).

concurrent_reads

This is passed to the cassandra.yaml file (default 32).

concurrent_writes

This is passed to the cassandra.yaml file (default 32).

config_path

The path to the cassandra configuration file. If this is undef, it will be changed to /etc/cassandra/default.conf on the Red Hat family of operating systems or /etc/cassandra on Ubuntu. Otherwise the user can specify the path name (default undef).

data_file_directories

This is passed to the cassandra.yaml file (default ['/var/lib/cassandra/data']).

disk_failure_policy

This is passed to the cassandra.yaml file (default: stop).

endpoint_snitch

This is passed to the cassandra.yaml file (default: SimpleSnitch).

hinted_handoff_enabled

This is passed to the cassandra.yaml file (defaults to 'true').

incremental_backups

This is passed to the cassandra.yaml file (default false).

internode_compression

This is passed to the cassandra.yaml file (default all).

listen_address

This is passed to the cassandra.yaml file (default localhost).

manage_dsc_repo

If set to true then a repository will be setup so that packages can be downloaded from the DataStax community edition (default false).

native_transport_port

This is passed to the cassandra.yaml file (default 9042).

num_tokens

This is passed to the cassandra.yaml file (default 256).

partitioner

This is passed to the cassandra.yaml file (default org.apache.cassandra.dht.Murmur3Partitioner)

rpc_address

This is passed to the cassandra.yaml file (default localhost).

rpc_port

This is passed to the cassandra.yaml file (default 9160).

rpc_server_type

This is passed to the cassandra.yaml file (default sync).

saved_caches_directory

This is passed to the cassandra.yaml file (default /var/lib/cassandra/saved_caches).

seeds

This is passed to the cassandra.yaml file (default 127.0.0.1).

server_encryption_internode

This is passed to the cassandra.yaml file (default none).

server_encryption_keystore

This is passed to the cassandra.yaml file (default conf/.keystore).

server_encryption_keystore_password

This is passed to the cassandra.yaml file (default cassandra).

server_encryption_truststore

This is passed to the cassandra.yaml file (default conf/.truststore).

server_encryption_truststore_password

This is passed to the cassandra.yaml file (default cassandra).

service_enable

Enable the Cassandra service to start at boot time. Valid values are true or false (default: true)

service_ensure

Ensure the Cassandra service is running. Valid values are running or stopped (default: running)

service_name

The name of the service that runs the Cassandra software (default cassandra).

snapshot_before_compaction

This is passed to the cassandra.yaml file (default false).

start_native_transport

This is passed to the cassandra.yaml file (default true).

start_rpc

This is passed to the cassandra.yaml file (default true).

storage_port

This is passed to the cassandra.yaml file (default 7000).

Class: cassandra::datastax_agent

A class for installing the DataStax agent and to point it at an Opscenter instance.

Parameters

package_ensure

Is passed to the package reference. Valid values are present or a version number (default present).

package_name

Is passed to the package reference (default datastax-agent).

service_ensure

Is passed to the service reference (default running).

service_enable

Is passed to the service reference (default true).

service_name

Is passed to the service reference (default datastax-agent).

stomp_interface

If the value is changed from the default of undef then this is what is set as the stomp_interface setting in /var/lib/datastax-agent/conf/address.yaml which connects the agent to an Opscenter instance (default undef).

Class: cassandra::java

A class to install a reasonably sensible Java package.

Parameters

ensure

Is passed to the package reference. Valid values are present or a version number (default present).

package_name

If the default value of undef is left as it is, then a package called java-1.8.0-openjdk-headless or openjdk-7-jre-headless will be installed on a Red Hat family or Ubuntu system respectively. Alternatively, one can specify a package that is available in a package repository to the node (default undef).

Class: cassandra::optutils

A class to install the optional Cassandra tools package.

Parameters

ensure

Is passed to the package reference. Valid values are present or a version number (default present).

package_name

If the default value of undef is left as it is, then a package called cassandra21-tools or cassandra-tools will be installed on a Red Hat family or Ubuntu system respectively. Alternatively, one can specify a package that is available in a package repository to the node (default undef).

Limitations

Tested on the Red Hat family versions 6 and 7, Ubuntu 12.04 and 14.04, Puppet (CE) 3.7.5 and DSC 2.1.

Contributers

Contributions will be gratefully accepted. Please go to the project page, fork the project, make your changes locally and then raise a pull request. Details on how to do this are available at https://guides.github.com/activities/contributing-to-open-source.

Additional Contributers

  • Yanis Guenane (GitHub @spredzy) provided the Cassandra 1.x compatible template (see #11).

  • Amos Shapira (GitHub @amosshapira) fixed a bug in the requirements metadata that caused a problem with Puppetfile (see #34).

About

A Puppet module to install and manage Cassandra and DataStax Agent.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 82.1%
  • Ruby 9.8%
  • Puppet 8.1%