{"id":13752922,"url":"https://github.com/cloudurable/cassandra-image","last_synced_at":"2025-08-06T12:43:19.736Z","repository":{"id":89360083,"uuid":"78475555","full_name":"cloudurable/cassandra-image","owner":"cloudurable","description":"Cassandra Image using Packer for Docker and EC2 AMI. Covers managing EC2 Cassandra clusters with Ansible.","archived":false,"fork":false,"pushed_at":"2017-03-23T20:44:41.000Z","size":107,"stargazers_count":49,"open_issues_count":11,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-14T13:44:17.009Z","etag":null,"topics":["ami","ansible","cassandra","cloudwatch","devops","ec2","support","vagrant"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudurable.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-01-09T22:35:49.000Z","updated_at":"2024-05-31T08:47:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"7bf0ea58-67ba-42f6-b450-70a94d67e4cc","html_url":"https://github.com/cloudurable/cassandra-image","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudurable%2Fcassandra-image","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudurable%2Fcassandra-image/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudurable%2Fcassandra-image/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudurable%2Fcassandra-image/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudurable","download_url":"https://codeload.github.com/cloudurable/cassandra-image/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253321799,"owners_count":21890466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ami","ansible","cassandra","cloudwatch","devops","ec2","support","vagrant"],"created_at":"2024-08-03T09:01:12.685Z","updated_at":"2025-05-09T20:34:33.917Z","avatar_url":"https://github.com/cloudurable.png","language":"Shell","readme":"Goal of this project is to create AMI, Vagrant Box and Docker base images that one could use to deploy Cassandra.\n\nThe docker image is hosted on docker hub (see [DockerHub](https://hub.docker.com/r/cloudurable/cassandra/)).\nThe vagrant box is hosted on Atlas see ([Atlas](https://atlas.hashicorp.com/cloudurable/boxes/cassandra)).\nThe source code is hosted on GitHub (see [GitHub](https://github.com/cloudurable/cassandra-image)).\n\nKey features of image, AMI, Vagrant box\n\n* Uses JBOD instead of RAID (not done)\n* Uses ergonomics to configure Cassandra based on deployment environment (preliminary work done)\n* Sets up security if requested (not done)\n* Sets up TLS/SSL if requested (not done)\n* Sets up HD encryption if requested (not done, or use encrypted EBS instances)\n* Sets up users (not done)\n* Installs Cassandra as a systemd service (not done) \n* Allows cloud deploy (not done)\n* Monitoring (CloudWatch, InfluxDB) (not done)\n* Log aggregation (CloudWatch, ELK) (not done)\n* Installs JEMalloc and configures Cassandra to use off heap no JVM (done)\n* Install JNA (done)\n* Configures OS (Linux) to be performant (done)\n\n\n## Create a vagrant box\n```\ngit clone https://github.com/cloudurable/cassandra-image.git\ncd cassandra-image \nvagrant up \n\n# Connect to vagrant box\ncqlsh localhost 19042\n```\n\n## Connect to vagrant image\n```\nvagrant ssh\n```\n\n## Create a docker image\n```\ngit clone https://github.com/cloudurable/cassandra-image.git\ncd cassandra-image \nbin/start-image.sh\n\n# Connect to docker image\ncqlsh localhost 29042\n```\n\n## Provisioning\nWe use packer and vagrant to create images. \n\n#### Running setup scripts\n```\n## cd ~; mkdir github; cd github; git clone https://github.com/cloudurable/cassandra-image\n$ cd ~/github/cassandra-image\n$ pwd\n~/github/cassandra-image\n## Setup keys\n$ bin/setupkeys-cassandra-security.sh\n## Download binaries\n$ bin/prepare_binaries.sh\n## Bring Vagrant cluster up\n$ vagrant up\n```\n\n\n#### Working with ansible from bastion\n\n```sh\n$ vagrant ssh bastion\n```\n\n\n\nFirst setup ssh-agent and add keys to it.\n\n#### Start ssh-agent and add keys\n```\n$ ssh-agent bash\n$ ssh-add ~/.ssh/test_rsa\n```\n\n#### Ansible Ping server\n```sh\n$ ansible node0 -m ping\n```\n\nOutput\n```\nnode0 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\n\n```\n\n\n\n#### Ansible Ping servers\n\n```sh\n$ ansible nodes  -m ping\n```\n\nOutput\n```\nnode0 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\nnode2 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\nnode1 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\n\n```\n\n## Setting up my MacOSX to run Ansible against instances\n\nMove to the where you checked out the [project](https://github.com/cloudurable/cassandra-image).\n\n```sh\ncd ~/github/cassandra-image\n```\n\n#### Add bastion, node0, etc. to /etc/hosts\n```sh\n$ cat /etc/hosts\n\n### Used for ansible/ vagrant\n192.168.50.20  bastion\n192.168.50.4  node0\n192.168.50.5  node1\n192.168.50.6  node2\n192.168.50.7  node3\n192.168.50.8  node4\n192.168.50.9  node5\n\n```\n\n#### Add keys to known_hosts to avoid prompts\n```sh\n$ ssh-keyscan node0 node1 node2  \u003e\u003e ~/.ssh/known_hosts\n\n```\n\n\n#### Start ssh-agent and add keys\n```\n$ ssh-agent bash\n$ ssh-add ~/.ssh/test_rsa\n```\n\n#### Notice the ansible.cfg file and inventory.ini file in the project dir\n\n```\n$ cd ~/github/cassandra-image\n\n$ cat ansible.cfg \n[defaults]\nhostfile = inventory.ini\n\ncat inventory.ini \n[nodes]\nnode0 ansible_user=vagrant\nnode1 ansible_user=vagrant\nnode2 ansible_user=vagrant\n\n\n```\n\nAnsible will use these. \n\n\n\n#### Ansible Ping server\n```sh\n$ ansible node0 -m ping\n```\n\nOutput\n```\nnode0 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\n\n```\n\n\n\n#### Ansible Ping servers\n\n```sh\n$ ansible nodes  -m ping\n```\n\nOutput\n```\nnode0 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\nnode2 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\nnode1 | SUCCESS =\u003e {\n    \"changed\": false, \n    \"ping\": \"pong\"\n}\n\n```\n\n\n\n\n\n\n## More details to follow\n\n\n## About us\n[Cloudurable](http://cloudurable.com/) provides AMIs, cloudformation templates and monitoring tools \nto support [Cassandra in production running in EC2](http://cloudurable.com/services/index.html). \nWe also teach advanced [Cassandra courses which teaches how one could develop, support and deploy Cassandra to production in AWS EC2](http://cloudurable.com/services/index.html). \n\n\n","funding_links":[],"categories":["vagrant","General"],"sub_categories":["Cassandra Deployment"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudurable%2Fcassandra-image","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudurable%2Fcassandra-image","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudurable%2Fcassandra-image/lists"}