ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Server
  • Cloud
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Download
ScyllaDB Docs Scylla C/C++ Driver Features Testing Cassandra Cluster Manager (CCM)

Cassandra Cluster Manager (CCM)¶

CCM is a script/library used to assist in setup and teardown of Apache Cassandra on a local machine. In an effort to reduce inconsistencies and create a repeatable testing environment Vagrant can be utilized to start and stop a Virtual Box VM for integration testing.

CCM Cluster by way of Vagrant and Virtual Box¶

CCM Cluster is a 64-bit Ubuntu 14.04 VM. This VM comes configured with ant, git, maven, python, CCM, JDK v1.8 Update (Latest), and Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files v8

NOTE: The JCE is required for Secure Sockets Layer (SSL) testing.

The VM contains the following specifications:

  • 4GB of RAM

  • 32MB of Video RAM

  • 4 Cores

  • Hostname: ccm-cluster

  • Username: vagrant

  • Password: vagrant

  • 6 Network Interfaces Cards (NICs)

  • Node 1: 192.168.33.11

  • Node 2: 192.168.33.12

  • Node 3: 192.168.33.13

  • Node 4: 192.168.33.14

  • Node 5: 192.168.33.15

  • Node 6: 192.168.33.16

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

# Inline provision script
CCM_PROVISION_SCRIPT = <<EOF
#!/bin/bash

#Install package updates
printf "Installing System Packages ...\n"
#Add JDK repository and update packages
add-apt-repository ppa:webupd8team/java -y > /dev/null 2>&1
apt-get update -qq

#Auto accept the the Java license aggreement
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections

#Install the packages
apt-get install ant git maven oracle-java8-installer oracle-java8-unlimited-jce-policy python-dev python-pip -qq

#Install CCM and its dependencies
printf "Installing CCM and its dependencies ...\n"
pip install -q ccm psutil pyyaml six > /dev/null 2>&1
EOF

##
# Configure a 6 node Cassandra Cluster Manager (CCM) Virtual Machine (VM) with
# the following settings:
#
#   - 4GB of RAM
#   - 32MB of Video RAM
#   - 4 cores (CPUs)
#   - Hostname: ccm-cluster
#   - Username: vagrant
#   - Password: vagrant
#   - 6 Network Interfaces Cards (NICs)
#     - Node 1: 192.168.33.11
#     - Node 2: 192.168.33.12
#     - Node 3: 192.168.33.13
#     - Node 4: 192.168.33.14
#     - Node 5: 192.168.33.15
#     - Node 6: 192.168.33.16
##
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # Create Ubuntu 14.04 LTS VM
  config.vm.box = "ubuntu/trusty64"

  # Define the hostname and IP addresses (6 node cluster)
  config.vm.define "ccm-cluster" do |ccm_cluster|
    ccm_cluster.vm.hostname = "ccm-cluster"
    ccm_cluster.vm.network "private_network", ip: "192.168.33.11"
    ccm_cluster.vm.network "private_network", ip: "192.168.33.12"
    ccm_cluster.vm.network "private_network", ip: "192.168.33.13"
    ccm_cluster.vm.network "private_network", ip: "192.168.33.14"
    ccm_cluster.vm.network "private_network", ip: "192.168.33.15"
    ccm_cluster.vm.network "private_network", ip: "192.168.33.16"
  end

  # Prepare/Provision the VM
  config.vm.provision :shell do |root_provision|
    root_provision.privileged = true
    root_provision.inline = CCM_PROVISION_SCRIPT
  end

  # VM parameters for the CCM cluster
  config.vm.provider :virtualbox do |provider|
    provider.name = "ccm-cluster"
    provider.customize ["modifyvm", :id, "--memory", "4096"]
    provider.customize ["modifyvm", :id, "--vram", "32"]
    provider.customize ["modifyvm", :id, "--cpus", "4"]
    provider.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    provider.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end
end

Starting CCM Cluster VM¶

After installing Vagrant and Virtual Box, copy the above script into a directory (e.g. ccm_cluster) and ensure it is named Vagrantfile. To start the CCM cluster VM run the following command in the directory with the Vagrant script file:

vagrant up

Stopping/Suspending CCM Cluster VM¶

To stop the CCM cluster VM run the following command in the directory with the Vagrant script file:

vagrant halt

To speed up launch times of the CCM cluster VM a suspend command can be issued after the instance is first created by running the following command in the directory with the Vagrant script file:

vagrant suspend

Resuming the Suspended CCM Cluster VM¶

If the CCM cluster VM was suspended run the following command in the directory with the Vagrant script file to resume:

vagrant resume

Was this page helpful?

PREVIOUS
Testing
NEXT
Tracing
  • Create an issue
  • Edit this page

On this page

  • Cassandra Cluster Manager (CCM)
    • CCM Cluster by way of Vagrant and Virtual Box
      • Starting CCM Cluster VM
      • Stopping/Suspending CCM Cluster VM
      • Resuming the Suspended CCM Cluster VM
Scylla C/C++ Driver
  • master
    • master
  • C/C++ Driver for ScyllaDB
  • API Documentation
    • CassAggregateMeta
    • CassAuthenticator
    • CassAuthenticatorCallbacks
    • CassBatch
    • CassCluster
    • CassCollection
    • CassColumnMeta
    • CassCustomPayload
    • CassDataType
    • CassErrorResult
    • CassExecProfile
    • CassFunctionMeta
    • CassFuture
    • CassIndexMeta
    • CassInet
    • CassIterator
    • CassKeyspaceMeta
    • CassLogMessage
    • CassMaterializedViewMeta
    • CassMetrics
    • CassNode
    • CassPrepared
    • CassResult
    • CassRetryPolicy
    • CassRow
    • CassSchemaMeta
    • CassSession
    • CassSpeculativeExecutionMetrics
    • CassSsl
    • CassStatement
    • CassTableMeta
    • CassTimestampGen
    • CassTuple
    • CassUserType
    • CassUuid
    • CassUuidGen
    • CassValue
    • CassVersion
    • DseDateRange
    • DseDateRangeBound
    • DseLineString
    • DseLineStringIterator
    • DsePolygon
    • DsePolygonIterator
  • Features
    • Basics
      • Batches
      • Binding Parameters
      • Client-side timestamps
      • Consistency
      • Data Types
      • The date and time Types
      • Futures
      • Handling Results
      • Keyspaces
      • Prepared Statements
      • Schema Metadata
      • Tuples
      • User-Defined Types (UDTs)
      • UUIDs
    • Building
    • Client Configuration
    • Cloud
    • Configuration
      • Retry policies
    • Execution Profiles
    • FAQ
    • Installation
    • Logging
    • Metrics
    • Scylla Specific Features
    • Security
      • SSL
    • Testing
      • Cassandra Cluster Manager (CCM)
    • Tracing
  • DSE Features
    • Authentication
    • Geospatial types
Docs Tutorials University Contact Us About Us
© 2025, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 28 April 2025.
Powered by Sphinx 7.4.7 & ScyllaDB Theme 1.8.6