Deploy Indigo on a cluster using Ansible

Introduction

Ansible is a tool used to simplify the deployment of Indigo on a cluster of machines (nodes). It is the preferred way to install and configure an Indigo cluster.

Nodes are managed by a controlling machine (admin node) over SSH. As a consequence, all nodes of the cluster should first be configured to be accessible via SSH from the admin node, used to deploy Indigo. By default it assumes you are using SSH keys.

[ Note, if you intend to run multiple servers, know beforehand the details of the networks, as it is best to set up the system with the ‘real’ network rather than using localhost. ]

Pre-requesites

Guest machines

$ sudo adduser  indigo
$ sudo usermod -G sudo,adm indigo

Admin node

$ sudo apt install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt install ansible git
$ git clone https://github.com/Indigo-Uliv/indigo-deploy.git
$ cd indigo-deploy

Ansible Configuration

$ mkdir /var/lib/cassandra
$ mount --bind <target> /var/lib/cassandra
$ mkdir /var/lib/cassandra/data
# Ensure that permissions and ownership are appropriately set
$ chown -R casssandra:cassandra /var/lib/cassandra
[cassandra_nodes]
indigo-node01 node_ip=192.168.56.110 seed=true
#indigo-node02 node_ip=192.168.56.111 seed=true

[all_cassandra_nodes:children]
cassandra_nodes

[indigo-webservers]
indigo-node01
#indigo-node02

Deploying

Run the deployment with the following command:

ansible-playbook full.yml -i inventory/staging --ask-become-pass