Version information
This version is compatible with:
- Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x
- Puppet >= 5.5.8 < 7.0.0
- , , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'puppet-cassandra', '3.1.0'
Learn more about managing modules with a PuppetfileDocumentation
Cassandra
Table of Contents
- Overview
- Setup - The basics of getting started with Cassandra
- Usage - Configuration options and additional functionality
- Reference
- Limitations - OS compatibility, etc.
- Development
Overview
A Puppet module to install and manage Cassandra, DataStax Agent & OpsCenter
Setup
What Cassandra affects
What the Cassandra class affects
- Installs the Cassandra package (default cassandra22 on Red Hat and cassandra on Debian).
- Configures settings in
${config_path}/cassandra.yaml
. - On CentOS 7 if the
init
service provider is used, then cassandra is added as a system service. - Optionally ensures that the Cassandra service is enabled and running.
- On Debian systems:
- Optionally replace
/etc/init.d/cassandra
with a workaround for CASSANDRA-9822.
- Optionally replace
What the cassandra::datastax_agent class affects
- Optionally installs the DataStax agent.
- Optionally sets JAVA_HOME in /etc/default/datastax-agent.
What the cassandra::datastax_repo class affects
- 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 Debian).
What the cassandra::dse class affects
- Optionally configures files in the
/etc/dse
directory if one is using DataStax Enterprise.
What the cassandra::firewall_ports class affects
- Optionally configures the firewall for the Cassandra related network ports.
What the cassandra::java class affects
- Optionally installs a JRE/JDK package (e.g. java-1.7.0-openjdk) and the Java Native Access (JNA).
What the cassandra::optutils class affects
- Optionally installs the Cassandra support tools (e.g. cassandra22-tools).
Upgrading
We follow SemVer Versioning and an update of the major release (i.e. from 1.Y.Z to 2.Y.Z) will indicate a significant change to the API which will most probably require a change to your manifest.
Changes in 2.0.0
This is a major change to the API and you will more than likely need to change your manifest to accomodate these changes.
The service_ensure
attribute of the cassandra class now defaults to
undef, users who do want to manage service status in Puppet can still set
it to true. If leaving the value at the default and setting
service_refresh
and service_enable
to false will mean that the
user and not Puppet running will control the running state of
Cassandra. This currently works OK on the Red Hat family, but
has issues on Debian due to
CASSANDRA-2356
during an initial install or package upgrade.
All the functionality relating to OpsCenter has been divested to the locp/opscenter module on Puppet Forge.
It should also be noted that the module no longer creates directories for
the data
, commitlog
, saved_caches
and for Cassandra 3 the hints
directory. These resources will now need to be defined in your
manifest/profile.
For a list of features that have been deprecated in this release, please see https://github.com/voxpupuli/puppet-cassandra/wiki/Deprecations
For details on migrating from the version 1.X.X attributes to the settings
hash, see
(https://github.com/voxpupuli/puppet-cassandra/wiki/Suggested-Baseline-Settings)
Please also see the notes for 2.0.0 in the CHANGELOG.
Changes in 1.19.0
The hints_directory documentation will cause a change in the cassandra.yaml file regardless of the value you set it to. If you do not wish this to result in a refesh of the Cassandra service, please set service_refresh to false.
Changes in 1.9.2
Now that Cassandra 3 is available from the DataStax repositories, there is a problem (especially on Debian) with the operating system package manager attempting to install Cassandra 3. This can be mitigated against using something similar to the code in this modules acceptance test. Please note that the default Cassandra package name has now been changed from 'dsc'. See the documentation for cassandra::package_name below for details.
if $::osfamily == 'RedHat' {
$version = '2.2.4-1'
} else {
$version = '2.2.4'
}
class { 'cassandra':
package_ensure => $version,
}
Changes in 1.8.0
A somewhat embarrassing correction to the spelling of the cassandra::fail_on_non_suppoted_os to cassandra::fail_on_non_supported_os.
Issues when Upgrading to 1.4.0
Unfortunately both releases 1.3.7 and 1.4.0 have subsequently been found to call a refresh service even when no changes had been made to the underlying configuration. In release 1.8.0 (somewhat belatedly) the service_refresh flag has been introduced to mitigate against similar problems.
Issues When Upgrading to 1.3.7
- Please see the notes for 1.4.0.
Changes in 1.0.0
- cassandra::cassandra_package_ensure has been renamed to cassandra::package_ensure.
- cassandra::cassandra_package_name has been renamed to cassandra::package_name.
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.
Beginning with Cassandra
Create a Cassandra 2.X cluster called MyCassandraCluster which uses the GossipingPropertyFileSnitch and password authentication. In this very basic example the node itself becomes a seed for the cluster and the credentials will default to a user called cassandra with a password called of cassandra.
# Cassandra pre-requisites
include cassandra::datastax_repo
include cassandra::java
class { 'cassandra':
settings => {
'authenticator' => 'PasswordAuthenticator',
'cluster_name' => 'MyCassandraCluster',
'commitlog_directory' => '/var/lib/cassandra/commitlog',
'commitlog_sync' => 'periodic',
'commitlog_sync_period_in_ms' => 10000,
'data_file_directories' => ['/var/lib/cassandra/data'],
'endpoint_snitch' => 'GossipingPropertyFileSnitch',
'listen_address' => $::ipaddress,
'partitioner' => 'org.apache.cassandra.dht.Murmur3Partitioner',
'saved_caches_directory' => '/var/lib/cassandra/saved_caches',
'seed_provider' => [
{
'class_name' => 'org.apache.cassandra.locator.SimpleSeedProvider',
'parameters' => [
{
'seeds' => $::ipaddress,
},
],
},
],
'start_native_transport' => true,
},
require => Class['cassandra::datastax_repo', 'cassandra::java'],
}
However, PLEASE note that this is the ABSOLUTE MINIMUM configuration to get Cassandra up and running but will probably give you a rather badly configured node. Please see Suggested Baseline Settings for details on making your configuration a lot more robust.
For this code to run with version 3.X of Cassandra, the hints_directory
will
also need to be specified:
...
class { 'cassandra':
settings => {
...
'hints_directory' => '/var/lib/cassandra/hints',
...
},
require => Class['cassandra::datastax_repo', 'cassandra::java'],
}
Hiera
In your top level node classification (usually common.yaml
), add the
settings hash and all the tweaks you want all the clusters to use:
cassandra::baseline_settings:
authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
auto_bootstrap: true
auto_snapshot: true
...
Then, in the individual node classification add the parts which define the cluster:
cassandra::settings:
cluster_name: developer playground cassandra cluster
cassandra::dc: Onsite1
cassandra::rack: RAC1
cassandra::package_ensure: 3.0.5-1
cassandra::package_name: cassandra30
Usage
Setup a keyspace and users
We assume that authentication has been enabled for the cassandra cluster and we are connecting with the default user name and password ('cassandra/cassandra').
In this example, we create a keyspace (mykeyspace) with a table called 'users' and an index called 'users_lname_idx'.
We also add three users (to Cassandra, not the mykeyspace.users table) called spillman, akers and boone while ensuring that a user called lucan is absent.
class { 'cassandra':
...
}
class { 'cassandra::schema':
cqlsh_password => 'cassandra',
cqlsh_user => 'cassandra',
cqlsh_host => $::ipaddress,
indexes => {
'users_lname_idx' => {
table => 'users',
keys => 'lname',
keyspace => 'mykeyspace',
},
},
keyspaces => {
'mykeyspace' => {
durable_writes => false,
replication_map => {
keyspace_class => 'SimpleStrategy',
replication_factor => 1,
},
}
},
permissions => {
'Grant select permissions to spillman to all keyspaces' => {
permission_name => 'SELECT',
user_name => 'spillman',
},
'Grant modify to to keyspace mykeyspace to akers' => {
keyspace_name => 'mykeyspace',
permission_name => 'MODIFY',
user_name => 'akers',
},
'Grant alter permissions to mykeyspace to boone' => {
keyspace_name => 'mykeyspace',
permission_name => 'ALTER',
user_name => 'boone',
},
'Grant ALL permissions to mykeyspace.users to gbennet' => {
keyspace_name => 'mykeyspace',
permission_name => 'ALTER',
table_name => 'users',
user_name => 'gbennet',
},
},
tables => {
'users' => {
columns => {
user_id => 'int',
fname => 'text',
lname => 'text',
'PRIMARY KEY' => '(user_id)',
},
keyspace => 'mykeyspace',
},
},
users => {
'spillman' => {
password => 'Niner27',
},
'akers' => {
password => 'Niner2',
superuser => true,
},
'boone' => {
password => 'Niner75',
},
'gbennet' => {
'password' => 'foobar',
},
'lucan' => {
'ensure' => absent
},
},
}
Create a Cluster in a Single Data Center
In the DataStax documentation Initializing a multiple node cluster (single data center) http://docs.datastax.com/en/cassandra/2.2/cassandra/initialize/initSingleDS.html there is a basic example of a six node cluster with two seeds to be created in a single data center spanning two racks. The nodes in the cluster are:
Node Name | IP Address |
---|---|
node0 (seed 1) | 110.82.155.0 |
node1 | 110.82.155.1 |
node2 | 110.82.155.2 |
node3 (seed 2) | 110.82.156.3 |
node4 | 110.82.156.4 |
node5 | 110.82.156.5 |
Each node is configured to use the GossipingPropertyFileSnitch and 256 virtual nodes (vnodes). The name of the cluster is MyCassandraCluster. Also, while building the initial cluster, we are setting the auto_bootstrap to false.
In this initial example, we are going to expand the example by:
- Ensuring that the software is installed via the DataStax Community
repository by including
cassandra::datastax_repo
. This needs to be executed before the Cassandra package is installed. - That a suitable Java Runtime environment (JRE) is installed with Java Native
Access (JNA) by including
cassandra::java
. This need to be executed before the Cassandra service is started.
node /^node\d+$/ {
class { 'cassandra::datastax_repo':
before => Class['cassandra']
}
class { 'cassandra::java':
before => Class['cassandra']
}
class { 'cassandra':
settings => {
'authenticator' => 'AllowAllAuthenticator',
'auto_bootstrap' => false,
'cluster_name' => 'MyCassandraCluster',
'commitlog_directory' => '/var/lib/cassandra/commitlog',
'commitlog_sync' => 'periodic',
'commitlog_sync_period_in_ms' => 10000,
'data_file_directories' => ['/var/lib/cassandra/data'],
'endpoint_snitch' => 'GossipingPropertyFileSnitch',
'hints_directory' => '/var/lib/cassandra/hints',
'listen_interface' => 'eth1',
'num_tokens' => 256,
'partitioner' => 'org.apache.cassandra.dht.Murmur3Partitioner',
'saved_caches_directory' => '/var/lib/cassandra/saved_caches',
'seed_provider' => [
{
'class_name' => 'org.apache.cassandra.locator.SimpleSeedProvider',
'parameters' => [
{
'seeds' => '110.82.155.0,110.82.156.3',
},
],
},
],
'start_native_transport' => true,
},
}
}
The default value for the num_tokens is already 256, but it is included in the example for clarity. Do not forget to either set auto_bootstrap to true or not set the attribute at all after initializing the cluster.
Create a Cluster in Multiple Data Centers
To continue with the examples provided by DataStax, we look at the example for a cluster across multiple data centers http://docs.datastax.com/en/cassandra/2.2/cassandra/initialize/initMultipleDS.html.
Node Name | IP Address | Data Center | Rack |
---|---|---|---|
node0 (seed 1) | 10.168.66.41 | DC1 | RAC1 |
node1 | 10.176.43.66 | DC1 | RAC1 |
node2 | 10.168.247.41 | DC1 | RAC1 |
node3 (seed 2) | 10.176.170.59 | DC2 | RAC1 |
node4 | 10.169.61.170 | DC2 | RAC1 |
node5 | 10.169.30.138 | DC2 | RAC1 |
For the sake of simplicity, we will confine this example to the nodes:
node /^node[012]$/ {
class { 'cassandra':
dc => 'DC1',
settings => {
'authenticator' => 'AllowAllAuthenticator',
'auto_bootstrap' => false,
'cluster_name' => 'MyCassandraCluster',
'commitlog_directory' => '/var/lib/cassandra/commitlog',
'commitlog_sync' => 'periodic',
'commitlog_sync_period_in_ms' => 10000,
'data_file_directories' => ['/var/lib/cassandra/data'],
'endpoint_snitch' => 'GossipingPropertyFileSnitch',
'hints_directory' => '/var/lib/cassandra/hints',
'listen_interface' => 'eth1',
'num_tokens' => 256,
'partitioner' => 'org.apache.cassandra.dht.Murmur3Partitioner',
'saved_caches_directory' => '/var/lib/cassandra/saved_caches',
'seed_provider' => [
{
'class_name' => 'org.apache.cassandra.locator.SimpleSeedProvider',
'parameters' => [
{
'seeds' => '110.82.155.0,110.82.156.3',
},
],
},
],
'start_native_transport' => true,
},
}
}
node /^node[345]$/ {
class { 'cassandra':
dc => 'DC2',
settings => {
'authenticator' => 'AllowAllAuthenticator',
'auto_bootstrap' => false,
'cluster_name' => 'MyCassandraCluster',
'commitlog_directory' => '/var/lib/cassandra/commitlog',
'commitlog_sync' => 'periodic',
'commitlog_sync_period_in_ms' => 10000,
'data_file_directories' => ['/var/lib/cassandra/data'],
'endpoint_snitch' => 'GossipingPropertyFileSnitch',
'hints_directory' => '/var/lib/cassandra/hints',
'listen_interface' => 'eth1',
'num_tokens' => 256,
'partitioner' => 'org.apache.cassandra.dht.Murmur3Partitioner',
'saved_caches_directory' => '/var/lib/cassandra/saved_caches',
'seed_provider' => [
{
'class_name' => 'org.apache.cassandra.locator.SimpleSeedProvider',
'parameters' => [
{
'seeds' => '110.82.155.0,110.82.156.3',
},
],
},
],
'start_native_transport' => true,
},
}
}
We don't need to specify the rack name (with the rack attribute) as RAC1 is the default value. Again, do not forget to either set auto_bootstrap to true or not set the attribute at all after initializing the cluster.
DataStax Enterprise
After configuring the relevant repository, the following snippet works on CentOS 7 to install DSE Cassandra 4.7.0, set the HADOOP_LOG_DIR, set the DSE_HOME and configure DataStax Enterprise to use LDAP for authentication:
class { 'cassandra::datastax_repo':
descr => 'DataStax Repo for DataStax Enterprise',
pkg_url => 'https://username:password@rpm.datastax.com/enterprise',
before => Class['cassandra'],
}
class { 'cassandra':
cluster_name => 'MyCassandraCluster',
config_path => '/etc/dse/cassandra',
package_ensure => '4.7.0-1',
package_name => 'dse-full',
service_name => 'dse',
...
}
class { 'cassandra::dse':
file_lines => {
'Set HADOOP_LOG_DIR directory' => {
ensure => present,
path => '/etc/dse/dse-env.sh',
line => 'export HADOOP_LOG_DIR=/var/log/hadoop',
match => '^# export HADOOP_LOG_DIR=<log_dir>',
},
'Set DSE_HOME' => {
ensure => present,
path => '/etc/dse/dse-env.sh',
line => 'export DSE_HOME=/usr/share/dse',
match => '^#export DSE_HOME',
},
},
settings => {
ldap_options => {
server_host => localhost,
server_port => 389,
search_dn => 'cn=Admin',
search_password => secret,
use_ssl => false,
use_tls => false,
truststore_type => jks,
user_search_base => 'ou=users,dc=example,dc=com',
user_search_filter => '(uid={0})',
credentials_validity_in_ms => 0,
connection_pool => {
max_active => 8,
max_idle => 8,
}
}
}
}
Apache Cassandra
DataStax announced in late October 2016 that it was no longer supporting
the community edition of Cassandra or DSC as it was known (see
[Take a bow Planet
Cassandra](http://www.datastax.com/2016/10/take-a-bow-planet-cassandra)
for details). However, the following snippet of code running on Ubuntu
14.04 worked fine without having to change any of the ::cassandra
class
settings:
require cassandra::java
include cassandra::optutils
class { 'cassandra::apache_repo':
release => '310x',
before => Class['cassandra', 'cassandra::optutils'],
}
class { 'cassandra':
...
}
Reference
The reference documentation is generated using the puppet-strings tool. To see all of it, please go to http://voxpupuli.github.io/puppet-cassandra.
Limitations
- When using a Ruby version before 1.9.0, the contents of the Cassandra configuration file may change order of elements due to a problem with to_yaml in earlier versions of Ruby.
- When creating key spaces, indexes, cql_types and users the settings will only be used to create a new resource if it does not currently exist. If a change is made to the Puppet manifest but the resource already exits, this change will not be reflected.
- At the moment the
cassandra::system::transparent_hugepage
does not persist between reboots. - Acceptance for Debian 7 are confined to Cassandra 2.1 and 2.2. There is a conflict between the GLIBC on Debian 7 and the newer releases of Cassandra 3.X.
Development
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.
Please also see the CONTRIBUTING.md page for project specific requirements.
Additional Contributers
For a list of contributers see CONTRIBUTING.md and https://github.com/voxpupuli/puppet-cassandra/graphs/contributors
Reference
Table of Contents
Classes
cassandra
: A class for installing the Cassandra package and manipulate settings in the configuration file.cassandra::apache_repo
: An optional class that will allow a suitable repository to be configured from which packages for Apache Cassandra can be downloaded.cassandra::datastax_agent
: A class for installing the DataStax Agent and to point it at an OpsCenter instance.cassandra::datastax_repo
: An optional class that will allow a suitable repository to be configured from which packages for DataStax Community can be downloaded. Changcassandra::dse
: A class for configuring DataStax Enterprise (DSE) specific settings.cassandra::firewall_ports
: An optional class to configure incoming network ports on the host that are relevant to the Cassandra installation. If firewalls are being macassandra::java
: A class to install Java and JNA packages.cassandra::optutils
: A class to install the optional Cassandra tools package.cassandra::params
: This class is meant to be called from the locp-cassandra module. It sets variables according to platform.cassandra::schema
: A class to maintain the database schema. Please note that cqlsh expects Python 2.7 to be installed. This may be a problem of older distributions (CentOS 6 for example).cassandra::system::swapoff
: Disable swap on the node as suggested at http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettingsLinux.htmlcassandra::system::sysctl
: Set Sysctl (kernel runtime parameters) as suggested in http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettingsLinux.htmcassandra::system::transparent_hugepage
: Disable Transparant Huge Pages as suggested in http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettingsLinux.html.
Defined types
cassandra::file
: A defined type for altering files relative to the configuration directory.cassandra::private::firewall_ports::rule
: A defined type to be used as a macro for setting host based firewall rules. This is not intended to be used by a user (who should use the APcassandra::schema::cql_type
: Create or drop user defined data types within the schema.cassandra::schema::index
: Create or drop indexes within the schema.cassandra::schema::keyspace
: Create or drop keyspaces within the schema.cassandra::schema::permission
: Grant or revoke permissions. To use this class, a suitableauthenticator
(e.g. PasswordAuthenticator) andauthorizer
(e.g. CassandraAuthocassandra::schema::table
: Create or drop tables within the schema.cassandra::schema::user
: Create or drop users. To use this class, a suitableauthenticator
(e.g. PasswordAuthenticator) must be set in the Cassandra class.
Classes
cassandra
A class for installing the Cassandra package and manipulate settings in the configuration file.
Parameters
The following parameters are available in the cassandra
class.
baseline_settings
Data type: hash
If set, this is a baseline of settings that
are merged with the settings
hash. The values of the settings
hash overriding the values in this hash. This is most useful when used
with hiera.
Default value: {}
cassandra_2356_sleep_seconds
Data type: boolean
This will provide a workaround for CASSANDRA-2356 by sleeping for the specifed number of seconds after an event involving the Cassandra package. This option is silently ignored on the Red Hat family of operating systems as this bug only affects Debian systems.
Default value: 5
cassandra_9822
Data type: boolean
If set to true, this will apply a patch to the init file for the Cassandra service as a workaround for CASSANDRA-9822. This this bug only affects Debian systems.
Default value: false
cassandra_yaml_tmpl
Data type: string
The path to the Puppet template for the Cassandra configuration file. This allows the user to supply their own customized template.`
Default value: 'cassandra/cassandra.yaml.erb'
commitlog_directory
Data type: string
The path to the commitlog directory.
If set, the directory will be managed as a Puppet resource. Do not
specify a value here and in the settings
hash as they are mutually
exclusive.
Default value: undef
commitlog_directory_mode
Data type: string
The mode for the
commitlog_directory
is ignored unless commitlog_directory
is
specified.
Default value: '0750'
manage_config_file
Data type: Boolean
Whether or not to manage the cassandra configuration file.
Default value: true
config_file_mode
Data type: string
The permissions mode of the cassandra configuration file.
Default value: '0644'
config_path
Data type: string
The path to the cassandra configuration file.
Default value: $cassandra::params::config_path
data_file_directories
Data type: array
The path(s) to the date directory or
directories.
If set, the directories will be managed as a Puppet resource. Do not
specify a value here and in the settings
hash as they are mutually
exclusive.
Default value: undef
data_file_directories_mode
Data type: string
The mode for the
data_file_directories
is ignored unless data_file_directories
is
specified.
Default value: '0750'
dc
Data type: string
Sets the value for dc in config_path/snitch_properties_file http://docs.datastax.com/en/cassandra/2.1/cassandra/architecture/architectureSnitchesAbout_c.html for more details.
Default value: 'DC1'
dc_suffix
Data type: string
Sets the value for dc_suffix in config_path/snitch_properties_file see http://docs.datastax.com/en/cassandra/2.1/cassandra/architecture/architectureSnitchesAbout_c.html for more details. If the value is undef then no change will be made to the snitch properties file for this setting.
Default value: undef
fail_on_non_supported_os
Data type: boolean
A flag that dictates if the module should
fail if it is not RedHat or Debian. If you set this option to false then
you must also at least set the config_path
attribute as well.
Default value: true
hints_directory
Data type: string
The path to the hints directory.
If set, the directory will be managed as a Puppet resource. Do not
specify a value here and in the settings
hash as they are mutually
exclusive. Do not set this option in Cassandra versions before 3.0.0.
Default value: undef
hints_directory_mode
Data type: string
The mode for the
hints_directory
is ignored unless hints_directory
is
specified.
Default value: '0750'
package_ensure
Data type: present|latest|string
The status of the package specified in package_name. Can be present, latest or a specific version number.
Default value: 'present'
package_name
Data type: string
The name of the Cassandra package which must be available from a repository.
Default value: $cassandra::params::cassandra_pkg
prefer_local
Data type: boolean
Sets the value for prefer_local in config_path/snitch_properties_file see http://docs.datastax.com/en/cassandra/2.1/cassandra/architecture/architectureSnitchesAbout_c.html for more details. Valid values are true, false or undef. If the value is undef then change will be made to the snitch properties file for this setting.
Default value: undef
rack
Data type: string
Sets the value for rack in config_path/snitch_properties_file see http://docs.datastax.com/en/cassandra/2.1/cassandra/architecture/architectureSnitchesAbout_c.html for more details.
Default value: 'RAC1'
rackdc_tmpl
Data type: string
The template for creating the snitch properties file.
Default value: 'cassandra/cassandra-rackdc.properties.erb'
saved_caches_directory
Data type: string
The path to the saved caches directory.
If set, the directory will be managed as a Puppet resource. Do not
specify a value here and in the settings
hash as they are mutually
exclusive.
Default value: undef
saved_caches_directory_mode
Data type: string
The mode for the
saved_caches_directory
is ignored unless saved_caches_directory
is
specified.
Default value: '0750'
service_enable
Data type: boolean
enable the Cassandra service to start at boot time.
Default value: true
service_ensure
Data type: string
Ensure the Cassandra service is running. Valid values are running or stopped.
Default value: undef
service_name
Data type: string
The name of the service that runs the Cassandra software.
Default value: 'cassandra'
service_provider
Data type: string
The name of the provider that runs the service. If left as undef then the OS family specific default will be used, otherwise the specified value will be used instead.
Default value: undef
service_refresh
Data type: boolean
If set to true, changes to the Cassandra config file or the data directories will ensure that Cassandra service is refreshed after the changes. Setting this flag to false will disable this behaviour, therefore allowing the changes to be made but allow the user to control when the service is restarted.
Default value: true
settings
Data type: hash
A hash that is passed to to_yaml
which dumps the results
to the Cassandra configuring file. The minimum required settings for
Cassandra 2.X are as follows:
{
'authenticator' => 'PasswordAuthenticator',
'cluster_name' => 'MyCassandraCluster',
'commitlog_directory' => '/var/lib/cassandra/commitlog',
'commitlog_sync' => 'periodic',
'commitlog_sync_period_in_ms' => 10000,
'data_file_directories' => ['/var/lib/cassandra/data'],
'endpoint_snitch' => 'GossipingPropertyFileSnitch',
'listen_address' => $::ipaddress,
'partitioner' => 'org.apache.cassandra.dht.Murmur3Partitioner',
'saved_caches_directory' => '/var/lib/cassandra/saved_caches',
'seed_provider' => [
{
'class_name' => 'org.apache.cassandra.locator.SimpleSeedProvider',
'parameters' => [
{
'seeds' => $::ipaddress,
},
],
},
],
'start_native_transport' => true,
}
For Cassandra 3.X you will also need to specify the hints_directory
attribute.
Default value: {}
snitch_properties_file
Data type: string
The name of the snitch properties file. The full path name would be config_path/snitch_properties_file.
Default value: 'cassandra-rackdc.properties'
systemctl
Data type: string
The full path to the systemctl command. Only needed when the package is installed. Will silently continue if the executable does not exist.
Default value: $cassandra::params::systemctl
cassandra::apache_repo
An optional class that will allow a suitable repository to be configured from which packages for Apache Cassandra can be downloaded.
Parameters
The following parameters are available in the cassandra::apache_repo
class.
descr
Data type: string
On the Red Hat family, this is passed as the descr
attribute to a yumrepo
resource. On the Debian family, it is passed as
the comment
attribute to an apt::source
resource.
Default value: 'Repo for Apache Cassandra'
key_id
Data type: string
On the Debian family, this is passed as the id
attribute to an apt::key
resource. On the Red Hat family, it is
ignored.
Default value: 'A26E528B271F19B9E5D8E19EA278B781FE4B2BDA'
key_url
Data type: string
On the Debian family, this is passed as the
source
attribute to an apt::key
resource. On the Red Hat family,
it is set to the gpgkey
attribute on the yumrepo
resource.
Default value: 'https://www.apache.org/dist/cassandra/KEYS'
pkg_url
Data type: string
On the Red Hat family, leaving this as default will
set the baseurl
on the yumrepo
resource to
'http://www.apache.org/dist/cassandra/redhat' with whatever is set in the
'release' attribute appended.
On the Debian family, leaving this as the default
will set the location
attribute on an apt::source
to
'http://www.apache.org/dist/cassandra/debian'.
Default value: undef
release
Data type: string
On the Debian family, this is passed as the release
attribute to an apt::source
resource. On the Red Hat family, it is the
major version number of Cassandra, without dot, and with an appended 'x'
(e.g. '311x')
Default value: 'main'
cassandra::datastax_agent
A class for installing the DataStax Agent and to point it at an OpsCenter instance.
Examples
Set agent_alias to foobar, stomp_interface to localhost and ensure that async_pool_size is absent from the file.
class { 'cassandra::datastax_agent':
settings => {
'agent_alias' => {
'setting' => 'agent_alias',
'value' => 'foobar',
},
'stomp_interface' => {
'setting' => 'stomp_interface',
'value' => 'localhost',
},
'async_pool_size' => {
'ensure' => absent,
},
},
}
Parameters
The following parameters are available in the cassandra::datastax_agent
class.
address_config_file
Data type: Any
The full path to the address config file.
Default value: '/var/lib/datastax-agent/conf/address.yaml'
defaults_file
Data type: Any
The full path name to the file where java_home
is set.
Default value: '/etc/default/datastax-agent'
java_home
Data type: Any
If the value of this variable is left as undef, no
action is taken. Otherwise the value is set as JAVA_HOME in
defaults_file
.
Default value: undef
package_ensure
Data type: Any
Is passed to the package reference. Valid values are present or a version number.
Default value: 'present'
package_name
Data type: Any
Is passed to the package reference.
Default value: 'datastax-agent'
service_ensure
Data type: Any
Is passed to the service reference.
Default value: 'running'
service_enable
Data type: Any
Is passed to the service reference.
Default value: true
service_name
Data type: Any
Is passed to the service reference.
Default value: 'datastax-agent'
service_provider
Data type: Any
The name of the provider that runs the service. If left as undef then the OS family specific default will be used, otherwise the specified value will be used instead.
Default value: undef
settings
Data type: Any
A hash that is passed to [create_ini_settings] (https://github.com/puppetlabs/puppetlabs-inifile#function-create_ini_settings) with the following additional defaults:
{
path => $address_config_file,
key_val_separator => ': ',
require => Package[$package_name],
notify => Service['datastax-agent'],
}
Default value: {}
cassandra::datastax_repo
An optional class that will allow a suitable repository to be configured from which packages for DataStax Community can be downloaded. Changing the defaults will allow any Debian Apt or Red Hat Yum repository to be configured.
Parameters
The following parameters are available in the cassandra::datastax_repo
class.
descr
Data type: string
On the Red Hat family, this is passed as the descr
attribute to a yumrepo
resource. On the Debian family, it is passed as
the comment
attribute to an apt::source
resource.
Default value: 'DataStax Repo for Apache Cassandra'
key_id
Data type: string
On the Debian family, this is passed as the id
attribute to an apt::key
resource. On the Red Hat family, it is
ignored.
Default value: '7E41C00F85BFC1706C4FFFB3350200F2B999A372'
key_url
Data type: string
On the Debian family, this is passed as the
source
attribute to an apt::key
resource. On the Red Hat family,
it is ignored.
Default value: 'http://debian.datastax.com/debian/repo_key'
pkg_url
Data type: string
If left as the default, this will set the baseurl
to 'http://rpm.datastax.com/community' on a yumrepo
resource
on the Red Hat family. On the Debian family, leaving this as the default
will set the location
attribute on an apt::source
to
'http://debian.datastax.com/community'.
Default value: undef
release
Data type: string
On the Debian family, this is passed as the release
attribute to an apt::source
resource. On the Red Hat family, it is
ignored.
Default value: 'stable'
cassandra::dse
A class for configuring DataStax Enterprise (DSE) specific settings.
Examples
Configure a cluster with LDAP authentication
class { 'cassandra::dse':
file_lines => {
'Set HADOOP_LOG_DIR directory' => {
ensure => present,
path => '/etc/dse/dse-env.sh',
line => 'export HADOOP_LOG_DIR=/var/log/hadoop',
match => '^# export HADOOP_LOG_DIR=<log_dir>',
},
'Set DSE_HOME' => {
ensure => present,
path => '/etc/dse/dse-env.sh',
line => 'export DSE_HOME=/usr/share/dse',
match => '^#export DSE_HOME',
},
},
settings => {
ldap_options => {
server_host => localhost,
server_port => 389,
search_dn => 'cn=Admin',
search_password => secret,
use_ssl => false,
use_tls => false,
truststore_type => jks,
user_search_base => 'ou=users,dc=example,dc=com',
user_search_filter => '(uid={0})',
credentials_validity_in_ms => 0,
connection_pool => {
max_active => 8,
max_idle => 8,
}
}
}
}
Parameters
The following parameters are available in the cassandra::dse
class.
config_file
Data type: string
The full path to the DSE configuration file.
Default value: '/etc/dse/dse.yaml'
config_file_mode
Data type: string
The mode for the DSE configuration file.
Default value: '0644'
dse_yaml_tmpl
Data type: string
A path to a template for the dse.yaml
file.
Default value: 'cassandra/dse.yaml.erb'
file_lines
Data type: hash
A hash of values that are passed to
create_resources
as a file_line
resource.
Default value: undef
service_refresh
Data type: boolean
Whether or not the Cassandra service should be refreshed if the DSE configuration files are changed.
Default value: true
settings
Data type: hash
Unless this attribute is set to a hash (which is
then placed as YAML inside dse.yaml
) then the dse.yaml
is left
unchanged.
Default value: undef
cassandra::firewall_ports
An optional class to configure incoming network ports on the host that are relevant to the Cassandra installation. If firewalls are being managed already, simply do not include this module in your manifest.
IMPORTANT: The full list of which ports should be configured is assessed at evaluation time of the configuration. Therefore if one is to use this class, it must be the final cassandra class included in the manifest.
Parameters
The following parameters are available in the cassandra::firewall_ports
class.
client_ports
Data type: array
Only has any effect if the cassandra
class is defined on the node.
Allow these TCP ports to be opened for traffic coming from the client
subnets.
Default value: [9042, 9160]
client_subnets
Data type: array
Only has any effect if the cassandra
class is defined on the node.
An array of the list of subnets that are to allowed connection to
cassandra::native_transport_port and cassandra::rpc_port.
Default value: ['0.0.0.0/0']
inter_node_ports
Data type: array
Only has any effect if the cassandra
class is defined on the node.
Allow these TCP ports to be opened for traffic between the Cassandra nodes.
Default value: [7000, 7001, 7199]
inter_node_subnets
Data type: array
Only has any effect if the cassandra
class is defined on the node.
An array of the list of subnets that are to allowed connection to
cassandra::storage_port
, cassandra::ssl_storage_port
and port 7199
for cassandra JMX monitoring.
Default value: ['0.0.0.0/0']
public_ports
Data type: array
Allow these TCP ports to be opened for traffic
coming from public subnets the port specified in $ssh_port
will be
appended to this list.
Default value: [8888]
public_subnets
Data type: array
An array of the list of subnets that are to allowed connection to cassandra::firewall_ports::ssh_port.
Default value: ['0.0.0.0/0']
ssh_port
Data type: integer
Which port does SSH operate on.
Default value: 22
opscenter_ports
Data type: array
Only has any effect if the cassandra::datastax_agent
is defined.
Allow these TCP ports to be opened for traffic coming to or from OpsCenter
appended to this list.
Default value: [9042, 9160, 61620, 61621]
opscenter_subnets
Data type: array
A list of subnets that are to be allowed connection to port 61621 for nodes built with cassandra::datastax_agent.
Default value: ['0.0.0.0/0']
cassandra::java
A class to install Java and JNA packages.
Parameters
The following parameters are available in the cassandra::java
class.
aptkey
Data type: hash
If supplied, this should be a hash of apt::key
resources that will be passed to the create_resources function.
This is ignored on non-Debian systems.
Default value: undef
aptsource
Data type: hash
If supplied, this should be a hash of
apt::source
resources that will be passed to the create_resources
function. This is ignored on non-Red Hat`
Default value: undef
jna_ensure
Data type: string
Is passed to the package reference for the JNA
package. Valid values are present
or a version number.
Default value: present
jna_package_name
Data type: string
The name of the JNA package.
Default value: $cassandra::params::jna_package_name
package_ensure
Data type: string
Is passed to the package reference for the JRE/JDK
package. Valid values are present
or a version number.
Default value: present
package_name
Data type: string
The name of the Java package to be installed.
Default value: $cassandra::params::java_package
yumrepo
Data type: hash
If supplied, this should be a hash of yumrepo resources that will be passed to the create_resources function. This is ignored on non-Red Hat systems.
Default value: undef
cassandra::optutils
A class to install the optional Cassandra tools package.
Parameters
The following parameters are available in the cassandra::optutils
class.
package_ensure
Data type: string
Can be present
, latest
or a specific
version number.
Default value: 'present'
package_name
Data type: string
The name of the optional utilities package to be installed.
Default value: $cassandra::params::optutils_package_name
cassandra::params
This class is meant to be called from the locp-cassandra module. It sets variables according to platform.
cassandra::schema
A class to maintain the database schema. Please note that cqlsh expects Python 2.7 to be installed. This may be a problem of older distributions (CentOS 6 for example).
Parameters
The following parameters are available in the cassandra::schema
class.
connection_tries
Data type: integer
How many times do try to connect to
Cassandra. See also connection_try_sleep
.
Default value: 6
connection_try_sleep
Data type: integer
How much time to allow between the
number of tries specified in connection_tries
.
Default value: 30
cql_types
Data type: hash
Creates new cassandra::schema::cql_type
resources.
Default value: {}
cqlsh_additional_options
Data type: string
Any additional options to be passed
to the cqlsh
command.
Default value: ''
cqlsh_client_config
Data type: string
Set this to a file name (e.g. '/root/.puppetcqlshrc') that will then be used to contain the the credentials for connecting to Cassandra. This is a more secure option than having the credentials appearing on the command line. This option is only available in Cassandra >= 2.1.
Default value: undef
cqlsh_client_tmpl
Data type: string
The location of the template for configuring
the credentials for the cqlsh client. This is ignored unless
cqlsh_client_config
is set.
Default value: 'cassandra/cqlshrc.erb'
cqlsh_command
Data type: string
The full path to the cqlsh
command.
Default value: '/usr/bin/cqlsh'
cqlsh_host
Data type: string
The host for the cqlsh
command to connect to.
See also cqlsh_port
.
Default value: 'localhost'
cqlsh_password
Data type: string
If credentials are require for connecting,
specify the password here. See also cqlsh_user
, cqlsh_client_config
.
Default value: undef
cqlsh_port
Data type: integer
The host for the cqlsh
command to connect to.
See also cqlsh_host
.
Default value: 9042
cqlsh_user
Data type: string
If credentials are required for connecting,
specify the password here. See also cqlsh_password
,
cqlsh_client_config
Default value: 'cassandra'
indexes
Data type: hash
Creates new cassandra::schema::index
resources.
Default value: {}
keyspaces
Data type: hash
Creates new cassandra::schema::keyspace
resources.
Default value: {}
permissions
Data type: hash
Creates new cassandra::schema::permission
resources.
Default value: {}
tables
Data type: hash
Creates new cassandra::schema::table
resources.
Default value: {}
users
Data type: hash
Creates new cassandra::schema::user
resources.
Default value: {}
use_scl
Data type: Boolean
Default value: $cassandra::params::use_scl
scl_name
Data type: String[1]
Default value: $cassandra::params::scl_name
cassandra::system::swapoff
Disable swap on the node as suggested at http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettingsLinux.html
- See also cassandra::params
Parameters
The following parameters are available in the cassandra::system::swapoff
class.
device
Data type: string
If provided a mount resource will be created to ensure that the device is absent from /etc/fstab to permanently disable swap.
Default value: undef
mount
Data type: string
The name of the swap mount point. Ignored unless
device
has been set.
Default value: 'swap'
path
Data type: string
The full path to the file to check if swap is enabled.
Default value: '/proc/swaps'
cassandra::system::sysctl
Set Sysctl (kernel runtime parameters) as suggested in http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettingsLinux.html
If any of the values is set into the target file, the sysctl command will be called with the provided file name as an argument.
- See also cassandra::params
Examples
Basic requirement
require cassandra::system::sysctl
Parameters
The following parameters are available in the cassandra::system::sysctl
class.
sysctl_args
Data type: string
Passed to the sysctl
command
Default value: '-p'
sysctl_file
Data type: string
Path to the file to insert the settings into.
Default value: $cassandra::params::sysctl_file
net_core_optmem_max
Data type: integer
The value to set for net.core.optmem_max
Default value: 40960
net_core_rmem_default
Data type: integer
The value to set for net.core.rmem_default.
Default value: 16777216
net_core_rmem_max
Data type: integer
The value to set for net_core_rmem_max.
Default value: 16777216
net_core_wmem_default
Data type: integer
The value to set for net.core.wmem_default.
Default value: 16777216
net_core_wmem_max
Data type: integer
The value to set for net.core.wmem_max.
Default value: 16777216
net_ipv4_tcp_rmem
Data type: string
The value to set for net.ipv4.tcp_rmem.
Default value: $cassandra::params::net_ipv4_tcp_rmem
net_ipv4_tcp_wmem
Data type: string
The value to set for net.ipv4.tcp_wmem.
Default value: $cassandra::params::net_ipv4_tcp_wmem
vm_max_map_count
Data type: integer
The value to set for vm.max_map_count.
Default value: 1048575
cassandra::system::transparent_hugepage
Disable Transparant Huge Pages as suggested in http://docs.datastax.com/en/landing_page/doc/landing_page/recommendedSettingsLinux.html.
- See also cassandra::params
Parameters
The following parameters are available in the cassandra::system::transparent_hugepage
class.
path
Data type: string
The full path to the file for checking/setting if Transparent Hugepages is enabled.
Default value: '/sys/kernel/mm/transparent_hugepage/defrag'
Defined types
cassandra::file
A defined type for altering files relative to the configuration directory.
Examples
if $::memorysize_mb < 24576.0 {
$max_heap_size_in_mb = floor($::memorysize_mb / 2)
} elsif $::memorysize_mb < 8192.0 {
$max_heap_size_in_mb = floor($::memorysize_mb / 4)
} else {
$max_heap_size_in_mb = 8192
}
$heap_new_size = $::processorcount * 100
cassandra::file { "Set Java/Cassandra max heap size to ${max_heap_size_in_mb}.":
file => 'cassandra-env.sh',
file_lines => {
'MAX_HEAP_SIZE' => {
line => "MAX_HEAP_SIZE='${max_heap_size_in_mb}M'",
match => '^#?MAX_HEAP_SIZE=.*',
},
}
}
cassandra::file { "Set Java/Cassandra heap new size to ${heap_new_size}.":
file => 'cassandra-env.sh',
file_lines => {
'HEAP_NEWSIZE' => {
line => "HEAP_NEWSIZE='${heap_new_size}M'",
match => '^#?HEAP_NEWSIZE=.*',
}
}
}
$tmpdir = '/var/lib/cassandra/tmp'
file { $tmpdir:
ensure => directory,
owner => 'cassandra',
group => 'cassandra',
}
cassandra::file { 'Set java.io.tmpdir':
file => 'jvm.options',
file_lines => {
'java.io.tmpdir' => {
line => "-Djava.io.tmpdir=${tmpdir}",
},
},
require => File[$tmpdir],
}
Parameters
The following parameters are available in the cassandra::file
defined type.
file
Data type: string
The name of the file relative to the config_path
.
Default value: $title
config_path
Data type: string
The path to the configuration directory.
Default value: $cassandra::config_path
file_lines
Data type: string
If set, then the [create_resources] (https://docs.puppet.com/puppet/latest/reference/function.html#createresources) will be used to create an array of [file_line] (https://forge.puppet.com/puppetlabs/stdlib#file_line) resources.
Default value: undef
service_refresh
Data type: boolean
Is the Cassandra service is to be notified if the environment file is changed.
Default value: true
cassandra::private::firewall_ports::rule
A defined type to be used as a macro for setting host based firewall rules. This is not intended to be used by a user (who should use the API provided by cassandra::firewall_ports instead) but is documented here for completeness.
Parameters
The following parameters are available in the cassandra::private::firewall_ports::rule
defined type.
ports
Data type: integer
The number(s) of the port(s) to be opened.
cassandra::schema::cql_type
Create or drop user defined data types within the schema.
Examples
cassandra::schema::cql_type { 'fullname':
keyspace => 'mykeyspace',
fields => {
'fname' => 'text',
'lname' => 'text',
},
}
Parameters
The following parameters are available in the cassandra::schema::cql_type
defined type.
keyspace
Data type: string
The name of the keyspace that the data type is to be associated with.
ensure
Data type: present|absent
ensure the data type is created, or is dropped.
Default value: present
fields
Data type: hash
A hash of the fields that will be components for the data type.
Default value: {}
cql_type_name
Data type: string
The name of the CQL type to be created.
Default value: $title
use_scl
Data type: Boolean
Default value: $cassandra::params::use_scl
scl_name
Data type: String[1]
Default value: $cassandra::params::scl_name
cassandra::schema::index
Create or drop indexes within the schema.
Parameters
The following parameters are available in the cassandra::schema::index
defined type.
ensure
Data type: present|absent
Create or dro[ the index.
Default value: present
class_name
Data type: string
The name of the class to be associated with an index when creating a custom index.
Default value: undef
index
Data type: string
The name of the index. Defaults to the name of the resource.
Default value: $title
keys
Data type: string
The columns that the index is being created on.
Default value: undef
keyspace
Data type: string
The name the keyspace that the index is to be associated with.
options
Data type: string
Any options to be added to the index.
Default value: undef
table
Data type: string
The name of the table that the index is to be associated with.
use_scl
Data type: Boolean
Default value: $cassandra::params::use_scl
scl_name
Data type: String[1]
Default value: $cassandra::params::scl_name
cassandra::schema::keyspace
Create or drop keyspaces within the schema.
Examples
$network_topology_strategy = {
keyspace_class => 'NetworkTopologyStrategy',
dc1 => 3,
dc2 => 2
}
cassandra::schema::keyspace { 'mykeyspace':
replication_map => {
keyspace_class => 'SimpleStrategy',
replication_factor => 1,
},
durable_writes => false,
}
Parameters
The following parameters are available in the cassandra::schema::keyspace
defined type.
ensure
Data type: present|absent
Create or drop the keyspace.
Default value: present
durable_writes
Data type: boolean
When set to false, data written to the keyspace bypasses the commit log. Be careful using this option because you risk losing data. Set this attribute to false on a keyspace using the SimpleStrategy.
Default value: true
keyspace_name
Data type: string
The name of the keyspace to be created.
Default value: $title
replication_map
Data type: hash
Needed if the keyspace is to be present. Optional if it is to be absent.
Default value: {}
use_scl
Data type: Boolean
Default value: $cassandra::params::use_scl
scl_name
Data type: String[1]
Default value: $cassandra::params::scl_name
cassandra::schema::permission
Grant or revoke permissions.
To use this class, a suitable authenticator
(e.g. PasswordAuthenticator)
and authorizer
(e.g. CassandraAuthorizer) must be set in the Cassandra
class.
WARNING: Specifying keyspace 'ALL' and 'ALL' for permissions at the same time is not currently supported by this module.
Parameters
The following parameters are available in the cassandra::schema::permission
defined type.
user_name
Data type: string
The name of the user who is to be granted or revoked.
ensure
Data type: present | absent
Set to present to grant a permission or absent to revoke it.
Default value: present
keyspace_name
Data type: string
The name of the keyspace to grant/revoke the permissions on. If set to 'ALL' then the permission will be applied to all of the keyspaces.
Default value: 'ALL'
permission_name
Data type: string
Can be one of the following:
- 'ALTER' - ALTER KEYSPACE, ALTER TABLE, CREATE INDEX, DROP INDEX.
- 'AUTHORIZE' - GRANT, REVOKE.
- 'CREATE' - CREATE KEYSPACE, CREATE TABLE.
- 'DROP' - DROP KEYSPACE, DROP TABLE.
- 'MODIFY' - INSERT, DELETE, UPDATE, TRUNCATE.
- 'SELECT' - SELECT.
If the permission_name is set to 'ALL', this will set all of the specific permissions listed.
Default value: 'ALL'
table_name
Data type: string
The name of a table within the specified keyspace. If left unspecified, the procedure will be applied to all tables within the keyspace.
Default value: undef
use_scl
Data type: Boolean
Default value: $cassandra::params::use_scl
scl_name
Data type: String[1]
Default value: $cassandra::params::scl_name
cassandra::schema::table
Create or drop tables within the schema.
Examples
cassandra::schema::table { 'users':
keyspace => 'mykeyspace',
columns => {
'userid' => 'int',
'fname' => 'text',
'lname' => 'text',
'PRIMARY KEY' => '(userid)',
},
}
Parameters
The following parameters are available in the cassandra::schema::table
defined type.
keyspace
Data type: string
The name of the keyspace.
columns
Data type: hash
A hash of the columns to be placed in the table. Optional if the table is to be absent.
Default value: {}
ensure
Data type: present|absent
Ensure a keyspace is created or dropped.
Default value: present
options
Data type: array
Options to be added to the table creation.
Default value: []
table
Data type: string
The name of the table. Defaults to the name of the resource.
Default value: $title
use_scl
Data type: Boolean
Default value: $cassandra::params::use_scl
scl_name
Data type: String[1]
Default value: $cassandra::params::scl_name
cassandra::schema::user
Create or drop users.
To use this class, a suitable authenticator
(e.g. PasswordAuthenticator)
must be set in the Cassandra class.
Examples
cassandra::schema::user { 'akers':
password => 'Niner2',
superuser => true,
}
cassandra::schema::user { 'lucan':
ensure => absent,
}
Parameters
The following parameters are available in the cassandra::schema::user
defined type.
ensure
Data type: present | absent
Valid values can be present to ensure a user is created, or absent to remove the user if it exists.
Default value: present
password
Data type: string
A password for the user.
Default value: undef
superuser
Data type: boolean
If the user is to be a super-user on the system.
Default value: false
login
Data type: boolean
Allows the role to log in.
Default value: true
user_name
Data type: string
The name of the user.
Default value: $title
use_scl
Data type: Boolean
Default value: $cassandra::params::use_scl
scl_name
Data type: String[1]
Default value: $cassandra::params::scl_name
Changelog
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not affect the functionality of the module.
v3.1.0 (2020-09-18)
Merged pull requests:
- modulesync 3.0.0 & puppet-lint autofix #465 (bastelfreak)
- Bump puppet-firewall version to allow version 2.x #464 (waipeng)
v3.0.0 (2020-05-09)
Breaking changes:
- drop EOL Ubuntu 14.04 #449 (bastelfreak)
- Drop support for Puppet 4 #448 (bastelfreak)
Implemented enhancements:
- Add SCL support to cassandra::schema #445 (russellshackleford)
- Add Ubuntu 18.04 support #443 (paulseward)
Fixed bugs:
- Wrong logic in example code #459
- Actually choosing to manage the config file, not directory of it #417 (zmarois)
Closed issues:
Merged pull requests:
- Bugfix: Correct example of calculating MAX_HEAP_SIZE. Fixes #459. #460 (dallinb)
- Various test fixups #457 (alexjfisher)
- Allow puppetlabs/stdlib 6.x #455 (dhoppe)
- allow puppetlabs/inifile 4.x #453 (bastelfreak)
- Add default SCL params to Debian family OS #452 (iain-buclaw-sociomantic)
- fix puppet-string annotations & Generate REFERENCE.md #451 (bastelfreak)
- Allow puppetlabs/apt 7.x, puppetlabs/inifile 3.x #447 (dhoppe)
v2.7.3 (2018-10-19)
Merged pull requests:
- modulesync 2.1.0 and allow puppet 6.x #439 (bastelfreak)
- allow puppetlabs/stdlib 5.x and puppetlabs/apt 6.x #438 (bastelfreak)
v2.7.2 (2018-08-18)
Merged pull requests:
- allow puppetlabs/inifile 2.x #433 (bastelfreak)
v2.7.1 (2018-08-03)
Closed issues:
- Fix / update modules puppetlabs/apt dependencies #426
Merged pull requests:
- allow puppetlabs-apt version 5.x #430 (bastelfreak)
- bumping version dependency for puppetlabs/apt #429 (paulseward)
- Remove docker nodesets #425 (bastelfreak)
- drop EOL OSs; fix puppet version range #423 (bastelfreak)
v2.7.0 (2018-01-04)
Implemented enhancements:
- migrate to voxpupuli #394
- adding paramter to define whether or not to manage the config file at… #411 (zmarois)
- #395 Adding Red Hat OS #396 (stijnvdb)
Closed issues:
- Review metadata.json and README.md #410
Merged pull requests:
- replace validate_hash with assert_type #415 (bastelfreak)
- regenerate puppet-strings docs #414 (bastelfreak)
- Changes towards #410 (Review metadata.json and README.md) #412 (dallinb)
- This project no longer uses CircleCI. #408 (dallinb)
- Fix merge conflicts for PR #404 #405 (dallinb)
- Release 2.6.0 #403 (dallinb)
- Implement apache_repo for RedHat #400 (dallinb)
- Cassandra 3.X and Debian 7 clash over GLIBC version. #399 (dallinb)
- Bugfix 397 - Spec tests not working. #398 (dallinb)
2.6.0 (2017-09-11)
Implemented enhancements:
- Implement apache_repo for RedHat #395
Fixed bugs:
- Unit and acceptance tests are failing that have been successful in the past. #397
Closed issues:
- Release 2.6.0 #401
2.5.0 (2017-05-31)
Implemented enhancements:
Closed issues:
- Tests failing for CentOS 6 on "Create schema for 2.1" #392
- Rubocop failing tests since upgrade from 0.48.1 to 0.49.0 #391
Merged pull requests:
2.4.1 (2017-04-24)
Summary
A non-functional release of improvements.
Improvements
- A refactoring and extension of the acceptance tests.
- Migrated from version 1.0 to 2.0 of the CircleCI API.
2.4.0 (2017-03-30)
Summary
- Added the
cassandra::dse
class to 2.X.Y of the module. - Added the new
cassandra::apache_repo
class. - Minor bug fixes and improvements.
2017-02-28 - Release 1.27.0 (diff)
Summary
Add the cassandra::dse
class.
2017-01-21 - Release 2.3.0 (diff)
New attribute to ::cassandra
class:
baseline_settings
New defined types:
cassandra::system::swapoff
cassandra::system::sysctl
cassandra::system::transparent_hugepage
2016-12-08 - Release 2.2.1 (diff)
Summary
Non-functional improvements and some documentation fixes.
Improvements
- All beaker spec tests have been migrated from AWS/EC2 to Docker.
- Installed Python 2.7 onto the CentOS 6 docker image allowing the full test suite to be run against that operating system.
- Some documentation improvements and fixed some typos.
- The spec tests will now fail if there is not 100% coverage.
2016-12-01 - Release 2.2.0 (diff)
Summary
At long last we have a defined type for handling permissions (something that we have been promising since May). Added some more facts for assisting in JVM tuning. Also fixed an error that was happening when attempting to build the project.
Features
- Added the
permissions
attribute to thecassandra::schema
class. - Added the
cassandra::schema::permission
Bugfixes
- Some refactoring of the ruby code since the release of Rubocop 0.46.0 which was failing code that previously had passed OK.
2016-11-02 - Release 2.1.2 (diff)
Summary
Basically a non-functional release to reduce some of the technical debt from the 2.0.0 release. Also some minor improvements to the documentation.
2016-11-19 - Release 1.26.1 (diff)
Summary
Retro-fitted a bug that was fixed in 2.1.1 into the 1.X.Y version of the module.
Bugfixes
- A hotfix for a bug in
cassandra::schema
that has been around since version 1.18.0 of this module.
2016-11-02 - Release 2.1.1 (diff)
Summary
A hotfix for a bug in cassandra::schema
that has been around since version 1.18.0 of this
module.
Bugfixes
- Fixed a bug where cql_types would not be created unless keyspaces were also provided.
- Fixed a minor typo in the README.
2016-10-29 - Release 2.1.0 (diff)
Summary
A mixture of new features, a new style of documentation and other improvements. Also ran the Sonar-Puppet plugin against the code to improve the code quality.
Features
- The following facts are now available:
- cassandramajorversion
- cassandraminorversion
- cassandrapatchversion
- cassandrarelease
- The following attributes are now available:
- cassandra::commitlog_directory
- cassandra::commitlog_directory_mode
- cassandra::data_file_directories
- cassandra::data_file_directories_mode
- cassandra::hints_directory
- cassandra::hints_directory_mode
- cassandra::saved_caches_directory
- cassandra::saved_caches_directory_mode
- cassandra::systemctl
Bugfixes
- Resolved all issues identified by Sonar-Puppet from 38 (2 major, 36 minor). In doing so, this reduced the technical debt ration from 0.9% to 0.0%.
Improvements
- The reference documentation is now processed via http://locp.github.io/cassandra
- Made a start on refactoring the spec/unit tests so that there is less duplication of code.
2016-10-12 - Release 2.0.2 (diff)
Summary
This is a non-functional patch release that fixes some issues in documentation, and fixes some bugs and makes some improvements in our testing framework.
Improvements
- Ensure there is a framework for supporting the legacy 1.X.Y. module until the end of 2016.
- A more obvious test rig for the beaker/acceptance tests on TravisCI.
Bugfixes
- Corrected misleading documentation.
- Ensure legacy test builds still work against Ruby 1.9.3.
- Corrected deprecated tags in the module metadata.
2016-10-08 - Release 1.26.0 (diff)
Improvements
- The
cassandra::seeds
paramater can now be provided as an array or as a string.
Bugfixes
- Ensure legacy builds still work on TravisCI.
2016-10-01 - Release 2.0.1 (diff)
Summary
A non-functional release containing some improvements and documentation corrections.
Improvements
- Corrected some out of date documentation.
- Removed some deprecated files.
- Regained 100% spec test coverage.
2016-09-29 - Release 2.0.0 (diff)
Summary
This is a major release and will more than likely break your existing manifest until you alter your code. Please see the Upgrading section of the README for further details.
- The method of passing parameters to Cassandra has been made more flexible.
- Support for Ubuntu 16.04.
- Changes to how
service_ensure
is handled. cassandra::file
is now a define, not a class (as it should have been).
2016-09-03 - Release 1.25.2 (diff)
Summary
The service_systemd
attribute is now deprecated for the cassandra
,
cassandra::datastax_agent
and cassandra::opscenter
classes. See
https://github.com/locp/cassandra/wiki/DEP-020 for more details.
2016-08-14 - Release 1.25.1 (diff)
Summary
Bugfix to ensure that the name of the PID file for the DataStax Agent service matches with the service name.
2016-07-17 - Release 1.25.0 (diff)
Summary
A feature release.
Features
- The
cassandra
class now has adisk_access_mode
attribute.
2016-06-26 - Release 1.24.3 (diff)
Summary
A couple of non-functional bug fixes.
Bugfixes
- The new version of RuboCop flagged code changes required in the Vagrantfile.
- The new version of Puppet Lint flagged code changes required in cassandra::java.
2016-06-20 - Release 1.24.2 (diff)
Summary
A non-functional bug fix.
Bugfixes
- The release of the specinfra gem (2.59.1) caused problems with our build. Pinned now to 2.59.0.
2016-06-18 - Release 1.24.1 (diff)
Summary
Really only affects CentOS 7 as all the other supported operating systems do not require the systemd file to be installed.
Bugfixes
- Change the way that systemd shuts Cassandra down.
2015-05-25 - Release 1.24.0 (diff)
Summary
A Debian-centric release. Debian 8 is now supported and a workaround for CASSANDRA-2356 (which only affects Debian.
Features
- New attributes to the
::cassandra
class are:- cassandra_2356_sleep_seconds
- config_path_parents
- rackdc_tmpl
Bugfixes
- CASSANDRA-2356
Improvements
- Debian 8 is now part of the acceptance testing release process.
2016-05-10 - Release 1.23.1 (diff)
Summary
A minor bugfix that fixes a problem that would only affect module developers, not users of the module.
Bugfixes
- Rubocop 0.4.0 is stricter so implemented changes that were flagged by it.
2016-05-07 - Release 1.23.0 (diff)
Summary
A couple of new features, a non-functional improvement and a bugfix.
Features
- Added the cassandra::file class.
- Added the following attributes to the cassandra::schema class:
- cqlsh_client_tmpl
- cqlsh_client_config
Bugfixes
- Fixed a daft error that stopped beaker tests running on CentOS 7.
Improvements
- Improved how fast the beaker/acceptance tests are run from TravisCI.
2016-05-03 - Release 1.22.1 (diff)
Summary
A non-functional release for a minor improvement and a bug fix.
Bugfixes
- Fixes a problem with resource ordering if the service_refresh attribute is set to false.
Improvements
- Test coverage in Coveralls is now back at 100% (https://coveralls.io/github/locp/cassandra).
2016-04-25 - Release 1.22.0 (diff)
Summary
Two new features.
Features
- Allow the creation and dropping of users with the following:
- A new defined type cassandra::schema::user
- The new attribute cassandra::schema::users
- Allow the manipulation of the environment file with the new class cassandra::env.
2016-04-20 - Release 1.21.0 (diff)
Summary
Some minor bug fixes. Also some features and improvements that allow acceptance tests to be run against Cassandra 3.
Features
-
Added the following attributes to cassandra::java:
- aptkey
- aptsource
- yumrepo
Bugfixes
- Corrected some errors in the README and CHANGELOG.
- Fixed problems with TravisCI builds.
- Fixed problems with CircleCI builds.
Improvements
- Acceptance testing of Cassandra 3.
2016-04-13 - Release 1.20.0 (diff)
Summary
A minor release for client requirements.
Features
- Added the compaction_large_partition_warning_threshold_mb and memtable_allocation_type attributes to the cassandra class.
2016-04-06 - Release 1.19.0 (diff)
Summary
A new template attribute and a couple of bug fixes.
Features
- The hints_directory attribute has been added to the cassandra class for placing into the template.
Bugfixes
- Some documentation errors that had been identified have been resolved.
- A problem with OpsCenter and systemd has been resolved. So far only CentOS 7 from the supported operating systems has been identified as being required to use systemd.
2016-03-27 - Release 1.18.1 (diff)
Summary
Bug fixes and some minor and non-functional improvements.
Bugfixes
- Resource ordering clarified in the cassandra::schema class.
- The cqlsh command now attempts to connect to rpc_address, not the listen_address.
Improvements
- Optimised the CircleCI build process.
- Made some changes to the documentation to better reflect the new functionality delivered in 1.18.0.
2016-03-26 - Release 1.18.0 (diff)
Summary
Some more functionality and sub-classes for cassandra::schema. Also some code and pipe-line improvements and a couple of bug fixes.
Features
-
The cassandra::schema class now has the following additional attributes:
- cql_types
- indexes
- tables
There are also corresponting defined types for those attributes:
- cassandra::schema::cql_type
- cassandra::schema::index
- cassandra::schema::table
-
The cassandra::opscenter class now has a new attribute called ldap_group_search_filter_with_dn.
Bugfixes
- In the firewalls class, an OpsCenter server also needs to connect to the Cassandra node it is monitoring as a client. The ports have been adjusted to allow this to happen.
- rspec-puppet version 2.4.0 was breaking our builds so pegged ourselves to 2.3.2.
Improvements
- Some minor and non-functional improvements to the build pipe-line.
- Carried out an audit using the Puppet plugin for SonarQube. The number of issues has been reduced from 227 (13 major, 214 minor) to 4 major issues of which 2 are false positives. The remaining issues will be resolved in 2.0.0.
2016-03-22 - Release 1.17.0 (diff)
Summary
Another small change that is an emergency requirement for a client.
Features
- Added the
storage_keyspace
attribute to the cassandra::datastax_agent class.
2016-03-15 - Release 1.16.0 (diff)
Summary
A smaller release than usual, but containing changes required for a client.
Features
- Added the
hosts
attribute to the cassandra::datastax_agent class.
Bugfixes
- The address.yaml file for the DataStax agent is now owned by the cassandra user.
2016-03-11 - Release 1.15.1 (diff)
Summary
A small improvement.
Improvements
- Clarified CQL and Python versions.
2016-03-10 - Release 1.15.0 (diff)
Summary
A rather large release. Minor (non-functional) fixes to the production pipeline and new features.
Features
-
A new class
cassandra::schema
allows the creation and dropping of keyspaces. -
Added the
additional_lines
attribute to thecassandra
class. -
Added the
service_systemd
attribute to thecassandra::opscenter
class. -
Allow the systemd template sources to be specified by the user. This is with the
service_systemd_tmpl
attribute to the following classes:- cassandra
- cassandra::datastax_agent
- cassandra::opscenter
-
Added another template file for
cassandra
=>service_systemd_tmpl
that is suitable for Cassandra 2.0.
Bugfixes
- Worked around a problem with rake-11 in the Gemfile.
- Fixed a problem in the CircleCI configuration.
Improvements
-
Renamed the
ensure
attribute topackage_ensure
so that it is more in line with how it's called in other modules. This was done on the the following classes:- cassandra::optutils
- cassandra::opscenter
- cassandra::opscenter::pycrypto
- cassandra::java
-
Updated the AWS AMI for the TravisCI/AWS acceptance testing to hopefully speed up builds a bit.
2016-02-29 - Release 1.14.2 (diff)
Summary
A small bugfix release.
Bugfixes
- Removed
Restart=always
from the Systemd configuration files.
2016-02-27 - Release 1.14.1 (diff)
Summary
A non-functional release of improvements and a bugfix.
Bugfixes
- If a systemd service file is created or updated, then systemctl daemon-reload is now be executed.
Improvements
- The workflow for building the module has been improved to include:
- Automatic integration of improvements and bugfixes into release candidates.
- Testing of release candidates includes acceptance (beaker) as well as unit (spec) tests.
- The refactoring of the majority of the Ruby code used to test and build this module so that it is hopefully more readable and easier to maintain.
- The automation of what had previously been manual steps when building a release.
2016-02-19 - Release 1.14.0 (diff)
Summary
A minor release with one of each of a feature, bug fix and improvement.
Features
- Added the orbited_longpoll attribute to the cassandra::opscenter class.
Bugfixes
- Fixed a problem with the DataStax agent and systemd.
Improvements
- Refactored the contributors section of the README.
2016-02-14 - Release 1.13.0 (diff)
Summary
A mixed back of new features in the shape of attributes for the cassandra, cassandra::datastax_agent and cassandra::opscenter classes. A couple of bug fixes and some non-functional improvements.
Features
- Added the thrift_framed_transport_size_in_mb attribute to ::cassandra.
- Added the following attributes to ::cassandra::datastax_agent:
- async_pool_size
- async_queue_size
- service_systemd
- Added the config_purge attribute to ::cassandra::opscenter.
Bugfixes
- Removed incorrect puppet code from the README examples.
- Fixed a problem with the beaker 2.34.0 gem which was causing problems during automated acceptance testing.
Improvements
- Changed the AWS instance type used by the TravisCI triggered acceptance tests from a c3.xlarge to c4.xlarge.
- Merged the acceptance tests virtual nodes into family specific node sets.
- Refactored the Gemfile.
- Changed references in the documentation to parameters to refer to attributes as that is more Puppet-like.
- Changed the format of the contributers section.
2016-02-12 - Release 1.12.2 (diff)
Summary
More bug fixes.
Bugfixes
- Fixed a problem with the Red Hat family and systemd not starting the service and reporting all service stops as failures, regardless of if they were or not.
2016-02-08 - Release 1.12.1 (diff)
Summary
This is a non-functional release. Some bug fixes and release improvements.
Bugfixes
- Completed documentation for attributes. This was missing for the
inter_dc_stream_throughput_outbound_megabits_per_sec
andstream_throughput_outbound_megabits_per_sec
options. - Corrected the ownership and directories for the OpsCenter configuration.
Improvements
- Nightly build created so that issues similar to those found in issues #136 and #157 can be caught quicker.
2016-01-27 - Release 1.12.0 (diff)
Summary
A new feature in the cassandra::datastax_agent class, a minor bug fix and integration with CircleCI.
Features
- There is now an agent_alias attribute for the cassandra::datastax_agent class.
Bugfixes
- Unit tests were failing due to problems with the puppet-3.8.5 gem.
Improvements
- In addition to TravisCI, the build process is now integrated with CircleCI.
2016-01-01 - Release 1.11.0 (diff)
Summary
New features added to the main class. Also some non-functional improvements.
Features
- The addition of the listen_interface and rpc_interface attributes to the main class.
Improvements
- Added more detail to the attributes to the main class in the README.
- Improved the module metadata.
- Clarified private defined types with the private subclass.
- The test coverage in release 1.10.0 dropped to 99.09%. Got it back to 100% in this release.
2015-12-19 - Release 1.10.0 (diff)
Summary
A feature release with minor improvements.
Features
- Added the ability to allow setting the local_interface for the DataStax agent configuration.
- Allow the service provider to be specified for the Cassandra, DataStax agent and OpsCenter services with the service_provider attribute.
- Optionally allow a systemd system file be inserted with the cassandra::service_systemd attribute.
Improvements
-
Allow the files resources specified with in the cassandra attributes:
- commitlog_directory
- data_file_directories
- saved_caches_directory
To co-exist with file resources with the same name.
2015-11-21 - Release 1.9.2 (diff)
Summary
A bug fix release that deals with some problems with Cassandra 3.
Bugfixes
- Attempt to mitigate against problems with Debian attempting to install Cassandra 3 when installing the dsc22 package.
- Also reverted the project home to the GitHub project page.
2015-11-09 - Release 1.9.1 (diff)
Summary
A bug fix release.
Bugfixes
- The default value for the permissions mode of the Cassandra configuration file were far too open. Changed from 0666 to 0644.
2015-10-25 - Release 1.9.0 (diff)
Summary
Added more features for the configuration of Cassandra, some improvements to the testing carried out before a release and a minor correction to the change log documentation.
Features
-
The following attributes have been added to the ::cassandra class to be configured into the configuration file:
- client_encryption_algorithm
- client_encryption_cipher_suites
- client_encryption_protocol
- client_encryption_require_client_auth
- client_encryption_store_type
- client_encryption_truststore
- client_encryption_truststore_password
- counter_cache_size_in_mb
- index_summary_capacity_in_mb
- key_cache_save_period
- key_cache_keys_to_save
- seed_provider_class_name
- server_encryption_algorithm
- server_encryption_cipher_suites
- server_encryption_protocol
- server_encryption_require_client_auth
- server_encryption_store_type
Please see the README file for more details.
Bugfixes
- Corrected an incorrect date (typo) in this document.
Improvements
- There is now an automated test to mitigate the risk of unnecessarily refreshes of the Cassandra service due to non-functional changes to the configuration file.
2015-10-14 - Release 1.8.1 (diff)
Summary
A minor bug fix.
Bugfixes
- Fixed an edge case issue concerning users that may have been using the fail_on_non_supported_os before it was fixed in 1.8.0.
2015-10-06 - Release 1.8.0 (diff)
Summary
Some new features a minor bug fix and some non-functional improvements.
Features
- Added the service_refresh and config_file_mode attributes to the Cassandra class.
Bugfixes
- The name of the fail_on_non_supported_os attribute has been corrected.
Improvements
- Automated acceptance tests in preparation for a release now run faster.
##1015-10-01 - Release 1.7.1 (diff)
Summary
A minor bug fix that incorrctly gave a failed build status for the module.
Bugfixes
- Fixed a problem that was showing the status of the module build as an error since the release of the fog-google gem version 0.1.1.
2015-10-01 - Release 1.7.0 (diff)
Summary
- Corrected a bug in how commitlog_sync has handled by Cassandra.
- Some non-functional improvements
- Additional features for the cassandra::datastax_repo class.
Features
-
Added the commitlog_segment_size_in_mb attribute to the cassandra class.
-
Added the following fields to the cassandra::datastax_repo class:
- descr
- key_id
- key_url
- pkg_url
- release
This should make the configuring of repositories more flexible.
Bugfixes
- Fixed a bug in how the commitlog_sync and the attributes that are associated with it are handled
Improvements
The following non-functional improvements were implemented:
- Added tags to the module metadata.
- Migrated the acceptance tests from Vagrant to Docker. The associated improvements to performance means that more rigorous acceptance tests can be applied in a shorter time. For the first time as well, they are visible on Travis.
2015-09-23 - Release 1.6.0 (diff)
Summary
More attributes for ::cassandra and ::cassandra::datastax_agent. Also some non-functional improvements in the automated unit tests.
Features
- The JAVA_HOME can now be set for the datastax_agent (see the cassandra::datastax_agent => java_home attribute).
- The file mode for the directories can now be specified for the commitlog_directory, data_file_directories and the saved_caches_directory in the cassandra class.
Improvements
- Uncovered resources in the unit testing are now tested.
2015-09-21 - Release 1.5.0 (diff)
Summary
More attributes have been added that can be configured into the cassandra.yaml file.
Features
- The following attributes to the cassandra class can be configured into
the cassandra configuration:
- broadcast_address
- broadcast_rpc_address
- commitlog_sync
- commitlog_sync_batch_window_in_ms
- commitlog_total_space_in_mb
- concurrent_compactors
- counter_cache_keys_to_save
- file_cache_size_in_mb
- initial_token
- inter_dc_stream_throughput_outbound_megabits_per_sec
- internode_authenticator
- internode_recv_buff_size_in_bytes
- internode_send_buff_size_in_bytes
- memory_allocator
- memtable_cleanup_threshold
- memtable_flush_writers
- memtable_heap_space_in_mb
- memtable_offheap_space_in_mb
- native_transport_max_concurrent_connections
- native_transport_max_concurrent_connections_per_ip
- native_transport_max_frame_size_in_mb
- native_transport_max_threads
- permissions_update_interval_in_ms
- phi_convict_threshold
- request_scheduler_options_default_weight
- request_scheduler_options_throttle_limit
- row_cache_keys_to_save
- rpc_max_threads
- rpc_min_threads
- rpc_recv_buff_size_in_bytes
- rpc_send_buff_size_in_bytes
- streaming_socket_timeout_in_ms
- stream_throughput_outbound_megabits_per_sec
Improvements
- Clarity of changes per release in the change log (this document).
2015-09-15 - Release 1.4.2 (diff)
Summary
Fixed a problem identified whilst releasing 1.4.1 and a bug fixed by a contributed pull request.
Features
- n/a
Bugfixes
- Fixed a problem with the acceptance tests.
- The datastax-agent service is restarted if the package is updated.
Improvements
- n/a
2015-09-15 - Release 1.4.1 (diff)
Summary
This release fixes a minor bug (possibly better described as a typing mistake) and makes some non-functional improvements. It also allows the user to override the default behaviour of failing on a non-supported operating system.
Features
- A new flag called
fail_on_non_suppoted_os
has been added to thecassandra
class and can be set to false so that an attempt can be made to use this module on an operating system that is not in the Debian or Red Hat families.
Bugfixes
- Changed the default value for the
package_name
of thecassandra::optutils
class from'undef'
to undef.
Improvements
- Clarified the expectations of submitted contributions.
- Unit test improvements.
2015-09-10 - Release 1.4.0 (diff)
-
Ensured that directories specified in the directory attributes are controlled with file resources.
-
Added the following attributes to the cassandra.yml file:
- batchlog_replay_throttle_in_kb
- cas_contention_timeout_in_ms
- column_index_size_in_kb
- commit_failure_policy
- compaction_throughput_mb_per_sec
- counter_cache_save_period
- counter_write_request_timeout_in_ms
- cross_node_timeout
- dynamic_snitch_badness_threshold
- dynamic_snitch_reset_interval_in_ms
- dynamic_snitch_update_interval_in_ms
- hinted_handoff_throttle_in_kb
- index_summary_resize_interval_in_minutes
- inter_dc_tcp_nodelay
- max_hints_delivery_threads
- max_hint_window_in_ms
- permissions_validity_in_ms
- range_request_timeout_in_ms
- read_request_timeout_in_ms
- request_scheduler
- request_timeout_in_ms
- row_cache_save_period
- row_cache_size_in_mb
- sstable_preemptive_open_interval_in_mb
- tombstone_failure_threshold
- tombstone_warn_threshold
- trickle_fsync
- trickle_fsync_interval_in_kb
- truncate_request_timeout_in_ms
- write_request_timeout_in_ms
2015-09-08 - Release 1.3.7 (diff)
- Made the auto_bootstrap attribute available.
2015-09-03 - Release 1.3.6 (diff)
- Fixed a bug, now allowing the user to set the enabled state of the Cassandra service.
- More cleaning up of the README and more links in that file to allow faster navigation.
2015-09-01 - Release 1.3.5 (diff)
- Fixed a bug, now allowing the user to set the running state of the Cassandra service.
- More automated testing with spec tests.
- A refactoring of the README.
2015-08-28 - Release 1.3.4 (diff)
- Minor corrections to the README.
- The addition of the storage_cassandra_seed_hosts attribute to cassandra::opscenter::cluster_name which is part of a bigger part of work but is urgently require by a client.
2015-08-27 - Release 1.3.3 (diff)
- Corrected dependency version for puppetlabs-apt.
2015-08-26 - Release 1.3.2 (diff)
- Fixed bug in cassandra::opscenter::cluster_name.
- Fixed code in cassandra::firewall_ports::rule to avoid deprecation warnings concerning the use of puppetlabs-firewall => port.
- Added more examples to the README
2015-08-22 - Release 1.3.1 (diff)
This was mainly a non-functional change. The biggest thing to say is that Debian 7 is now supported.
2015-08-19 - Release 1.3.0 (diff)
- Allow additional TCP ports to be specified for the host based firewall.
- Fixed a problem where the client subnets were ignored by the firewall.
- Added more automated testing.
- Continued work on an ongoing improvement of the documentation.
- Added the ability to set the DC and RACK in the snitch properties.
2015-08-10 - Release 1.2.0 (diff)
- Added the installation of Java Native Access (JNA) to cassandra::java
- For DataStax Enterprise, allow the remote storage of metric data with cassandra::opscenter::cluster_name.
2015-08-03 - Release 1.1.0 (diff)
- Provided the cassandra::firewall_ports class.
- All OpsCenter options are now configurable in opscenterd.conf.
- ssl_storage_port is now configurable.
2015-07-27 - Release 1.0.1 (diff)
- Provided a workaround for CASSANDRA-9822.
2015-07-25 - Release 1.0.0 (diff)
- Changed the default installation from Cassandra 2.1 to 2.2.
- Fixed a bug that arose when the cassandra config_path was set.
- Created a workaround for PUP-3829.
- Minor changes to the API (see the Upgrading section of the README).
- Allow a basic installation of OpsCenter.
2015-07-18 - Release 0.4.3 (diff)
- Module dependency metadata was too strict.
2015-07-16 - Release 0.4.2 (diff)
- Some minor documentation changes.
- Fixed a problem with the module metadata that caused Puppetfile issues.
- Integrated with Coveralls (https://coveralls.io/github/locp/cassandra).
- Removed the deprecated config and install classes. These were private so there is no change to the API.
2015-07-14 - Release 0.4.1 (diff)
- Fixed a resource ordering problem in the cassandra::datastax class.
- Tidied up the documentation a bit.
- Some refactoring of the spec tests.
2015-07-12 - Release 0.4.0 (diff)
Summary
- Some major changes to the API on how Java, the optional Cassandra tools and the DataStax agent are installed. See the Upgrading section of the README file.
- Allowed the setting of the stomp_interface for the DataStax agent.
- Non-functionally, we have integrated with Travis CI (see https://travis-ci.org/locp/cassandra for details) and thanks to those guys for providing such a neat service.
- More spec tests.
2015-06-27 - Release 0.3.0 (diff)
Summary
- Slight changes to the API. See the Upgrading section of the README file for full details.
- Allow for the installation of the DataStax Agent.
- Improved automated testing (and fixed some bugs along the way).
- Confirmed Ubuntu 12.04 works OK with this module.
- A Cassandra 1.X template has been provided.
- Some smarter handling of the differences between Ubuntu/Debian and RedHat derivatives.
2015-06-17 - Release 0.2.2 (diff)
Summary
A non-functional change to change the following:
- Split the single manifest into multiple files.
- Implement automated testing.
- Test on additional operating systems.
2015-05-28 - Release 0.2.1 (diff)
Summary
A non-functional change to fix puppet-lint problems identified by Puppet Forge.
2015-05-28 - Release 0.2.0 (diff)
Summary
Added more attributes and improved the module metadata.
2015-05-26 - Release 0.1.0
Summary
An initial release with VERY limited options.
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs-apt (>= 2.0.0 < 8.0.0)
- puppetlabs-firewall (>= 1.0.0 < 3.0.0)
- puppetlabs-inifile (>= 1.5.0 < 5.0.0)
- puppetlabs-stdlib (>= 3.0.0 < 7.0.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.