Page MenuHomeSoftware Heritage

README.md
No OneTemporary

README.md

# cassandra
[![Puppet Forge](http://img.shields.io/puppetforge/v/locp/cassandra.svg)](https://forge.puppetlabs.com/locp/cassandra)
[![Github Tag](https://img.shields.io/github/tag/locp/cassandra.svg)](https://github.com/locp/cassandra)
[![Build Status](https://travis-ci.org/locp/cassandra.png?branch=master)](https://travis-ci.org/locp/cassandra)
[![Join the chat at https://gitter.im/locp/cassandra](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/locp/cassandra?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
#### Table of Contents
1. [Overview](#overview)
2. [Setup - The basics of getting started with cassandra](#setup)
* [What cassandra affects](#what-cassandra-affects)
* [Beginning with cassandra](#beginning-with-cassandra)
* [Upgrading](#upgrading)
3. [Usage - Configuration options and additional functionality](#usage)
4. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
* [cassandra](#class-cassandra)
* [cassandra::datastax_agent](#class-cassandradatastax_agent)
* [cassandra::java](#class-cassandrajava)
* [cassandra::optutils](#class-cassandraoptutils)
5. [Limitations - OS compatibility, etc.](#limitations)
6. [Contributers](#contributers)
## Overview
A Puppet module to install and manage Cassandra and DataStax Agent.
## Setup
### What cassandra affects
* Installs the Cassandra package (default **dsc21**).
* Configures settings in *${config_path}/cassandra.yaml*.
* Optionally insures that the Cassandra service is enabled and running.
* Optionally installs the Cassandra support tools (e.g. cassandra21-tools).
* 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).
* Optionally installs a JRE/JDK package (e.g. java-1.7.0-openjdk).
* Optionally installs the DataStax agent.
### 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.
```puppet
node 'example' {
include '::cassandra'
}
```
To install the DataStax agent, include the specific class.
```puppet
node 'example' {
include '::cassandra'
include '::cassandra::datastax_agent'
}
```
To install with a reasonably sensible Java environment include the java
subclass.
```puppet
node 'example' {
include '::cassandra'
include '::cassandra::java'
}
```
To install Cassandra with the optional utilities.
```puppet
node 'example' {
include '::cassandra'
include '::cassandra::optutils'
}
```
To install the main cassandra package (which is mandatory) and all the
optional packages, do the following:
```puppet
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:
```puppet
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](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **AllowAllAuthenticator**).
##### `authorizer`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default: **AllowAllAuthorizer**).
##### `auto_snapshot`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) 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](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **false**).
##### `client_encryption_keystore`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **conf/.keystore**).
##### `client_encryption_keystore_password`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **cassandra**).
##### `cluster_name`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **Test Cluster**).
##### `commitlog_directory`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **/var/lib/cassandra/commitlog**).
##### `concurrent_counter_writes`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **32**).
##### `concurrent_reads`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **32**).
##### `concurrent_writes`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) 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](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **['/var/lib/cassandra/data']**).
##### `disk_failure_policy`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default: **stop**).
##### `endpoint_snitch`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default: **SimpleSnitch**).
##### `hinted_handoff_enabled`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(defaults to **'true'**).
##### `incremental_backups`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **false**).
##### `internode_compression`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **all**).
##### `listen_address`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) 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](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **9042**).
##### `num_tokens`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **256**).
##### `partitioner`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **org.apache.cassandra.dht.Murmur3Partitioner**)
##### `rpc_address`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **localhost**).
##### `rpc_port`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **9160**).
##### `rpc_server_type`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **sync**).
##### `saved_caches_directory`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **/var/lib/cassandra/saved_caches**).
##### `seeds`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **127.0.0.1**).
##### `server_encryption_internode`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **none**).
##### `server_encryption_keystore`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **conf/.keystore**).
##### `server_encryption_keystore_password`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **cassandra**).
##### `server_encryption_truststore`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **conf/.truststore**).
##### `server_encryption_truststore_password`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) 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](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **false**).
##### `start_native_transport`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **true**).
##### `start_rpc`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) file
(default **true**).
##### `storage_port`
This is passed to the
[cassandra.yaml](http://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html) 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](https://github.com/Spredzy)) provided the
Cassandra 1.x compatible template
(see [#11](https://github.com/locp/cassandra/pull/11)).
* Amos Shapira (GitHub [@amosshapira](https://github.com/amosshapira)) fixed
a bug in the requirements metadata that caused a problem with Puppetfile
(see [#34](https://github.com/locp/cassandra/pull/34)).

File Metadata

Mime Type
text/plain
Expires
Sat, Jun 21, 6:29 PM (1 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3447372

Event Timeline