ansible-hosts.cfg0100777000000000000000000000002413625633135011253 0ustar00[local] 127.0.0.1 ansible.tar0100777000000000000000000013300013661354614010147 0ustar00ansible-hosts.cfg0100777000000000000000000000002413625633135011253 0ustar00[local] 127.0.0.1 ansible.tar0100777000000000000000000005500013661354310010143 0ustar00ansible-hosts.cfg0100777000000000000000000000002413625633135011253 0ustar00[local] 127.0.0.1 cassandra-config-tasks.yml0100777000000000000000000000276713636711531013106 0ustar00# Cassandra Config tasks - name: Setting log directory replace: dest: /usr/share/oss/conf/logback.xml regexp: '\${cassandra.logdir}' replace: '/var/log/cassandra' - name: Setting G1 as the Java garbage collector replace: dest: /usr/share/oss/conf/jvm.options regexp: '#-XX:\+UseG1GC' replace: '-XX:+UseG1GC' - name: Commenting CMS garbage collector settngs replace: dest: /usr/share/oss/conf/jvm.options regexp: "{{ item.regexp1 }}" replace: "{{ item.replace1 }}" with_items: - { regexp1: '-XX:\+UseParNewGC', replace1: '#-XX:+UseParNewGC'} - { regexp1: '-XX:\+UseConcMarkSweepGC', replace1: '#-XX:+UseConcMarkSweepGC'} - { regexp1: '-XX:\+CMSParallelRemarkEnabled', replace1: '#-XX:+CMSParallelRemarkEnabled'} - { regexp1: '-XX:SurvivorRatio=8', replace1: '#-XX:SurvivorRatio=8'} - { regexp1: '-XX:MaxTenuringThreshold=1', replace1: '#-XX:MaxTenuringThreshold=1'} - { regexp1: '-XX:CMSInitiatingOccupancyFraction=75', replace1: '#-XX:CMSInitiatingOccupancyFraction=75'} - { regexp1: '-XX:\+UseCMSInitiatingOccupancyOnly', replace1: '#-XX:+UseCMSInitiatingOccupancyOnly'} - { regexp1: '-XX:CMSWaitDuration=10000', replace1: '#-XX:CMSWaitDuration=10000'} - { regexp1: '-XX:\+CMSParallelInitialMarkEnabled', replace1: '#-XX:+CMSParallelInitialMarkEnabled'} - { regexp1: '-XX:\+CMSEdenChunksRecordAlways', replace1: '#-XX:+CMSEdenChunksRecordAlways'} - { regexp1: '-XX:\+CMSClassUnloadingEnabled', replace1: '#-XX:+CMSClassUnloadingEnabled'} cassandra-directories.yml0100777000000000000000000000420413637005215013012 0ustar00--- - name: create cassandra directories hosts: 127.0.0.1 become: true tasks: - name: Ensure group "cassandra" exists group: name: cassandra state: present - name: Add the user "casssandra" user: name: cassandra comment: cassandra group: cassandra - name: Change file ownership of /data/cassandra file: path: /data/cassandra owner: cassandra group: cassandra mode: '0755' - name: create cassandra folders file: path: "{{ item }}" state: directory owner: cassandra group: cassandra mode: '0755' loop: - /var/lib/cassandra - /var/log/cassandra - /var/log/cassandra/audit - /data/cassandra - /data/cassandra/lib/cassandra - /data/cassandra/lib/cassandra/data - /data/cassandra/lib/cassandra/saved_caches - /data/cassandra/lib/cassandra/commitlog - /data/cassandra/lib/cassandra/hints - /data/cassandra/lib/cassandra/cdc_raw - /data/cassandra/lib/cassandra/insights_data - name: Create cassandra symbolic links file: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: cassandra group: cassandra state: link loop: - {src: /data/cassandra/lib/cassandra/cdc_raw, dest: /var/lib/cassandra/cdc_raw} - {src: /data/cassandra/lib/cassandra/hints, dest: /var/lib/cassandra/hints} - {src: /data/cassandra/lib/cassandra/commitlog, dest: /var/lib/cassandra/commitlog} - {src: /data/cassandra/lib/cassandra/saved_caches, dest: /var/lib/cassandra/saved_caches} - {src: /data/cassandra/lib/cassandra/data, dest: /var/lib/cassandra/data} - {src: /data/cassandra/lib/cassandra/insights_data, dest: /var/lib/cassandra/insights_data} - {src: /var/log/cassandra, dest: /data/cassandra/log} - {src: /var/log/cassandra/audit, dest: /data/cassandra/audit} # - name: Execute command to set softlink # shell: ln -s /var/log/cassandra/audit /data/cassandra/log/audit cassandra-install.yml0100777000000000000000000001332013656604471012155 0ustar00--- - name: cassandra install hosts: local become: true become_user: root vars: cassandra_version: "{{ cassandra_version }}" cluster_name: "{{ cluster_name }}" dc: "{{ dc }}" seeds: "{{ seeds }}" num_tokens: 64 compaction_throughput_mb_per_sec: 64 zone: rack1 publicip: "{{ publicip }}" tasks: - debug: msg: =====Cassandra Version {{ cassandra_version }} ===== - debug: msg: =====Cluster Name {{ cluster_name }} ===== - debug: msg: =====Data Center Name {{ dc }} ===== - debug: msg: =====seed nodes {{ seeds }} ===== - debug: msg: =====CREATE DIRECTORIES, SYMLINKS, UNTAR===== - stat: path=/etc/systemd/system/cassandra.service register: service_file - meta: end_play when: service_file.stat.exists == True - name: Create OSS directory /usr/share/oss file: path: /usr/share/oss state: directory owner: cassandra group: cassandra mode: '0755' - name: Unarchive OSS tarball unarchive: src: /home/cassandra/apache-cassandra-{{ cassandra_version }}-bin.tar.gz remote_src: yes dest: /usr/share/oss creates: /usr/share/oss/conf/cassandra.yaml extra_opts: - --strip-components=1 - debug: msg: =====REPLACE/ADD LINES TO CASSANDRA.YAML/ADDRESS.YAML===== - name: Getting hostname shell: hostname -i register: hostname - name: Copy /usr/share/oss/conf/cassandra.yaml with owner and permissions copy: src: /usr/share/oss/conf/cassandra.yaml remote_src: yes dest: /usr/share/oss/conf/cassandra.yaml.bak mode: '0755' - stat: path=/etc/systemd/system/cassandra.service register: service_file - meta: end_play when: service_file.stat.exists == True - name: /usr/share/oss/conf/cassandra.yaml replacements lineinfile: path: /usr/share/oss/conf/cassandra.yaml regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - {regexp: '- seeds: "127.0.0.1"', line: ' - seeds: "{{ seeds }}"'} - {regexp: "cluster_name: 'Test Cluster'", line: "cluster_name: '{{ cluster_name }}'"} - {regexp: 'listen_address: localhost', line: 'listen_address: {{ hostname.stdout }}'} - {regexp: "num_tokens: 256", line: "num_tokens: {{ num_tokens }}"} - {regexp: "compaction_throughput_mb_per_sec: 16", line: "compaction_throughput_mb_per_sec: {{ compaction_throughput_mb_per_sec }}"} - {regexp: "trickle_fsync: false", line: "trickle_fsync: true"} - {regexp: "endpoint_snitch: SimpleSnitch", line: "endpoint_snitch: GossipingPropertyFileSnitch"} - name: /usr/share/oss/conf/cassandra.yaml replacements when publicip is true lineinfile: path: /usr/share/oss/conf/cassandra.yaml regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - {regexp: '# broadcast_rpc_address: 1.2.3.4', line: 'broadcast_rpc_address: {{ publicip }}'} - {regexp: "rpc_address: localhost", line: "rpc_address: 0.0.0.0"} when: publicip|length > 0 - name: Add a line to cassandra.yaml for autobootstrap, phi_convict_threshold blockinfile: path: /usr/share/oss/conf/cassandra.yaml block: | auto_bootstrap: false phi_convict_threshold: 12 data_file_directories: - /var/lib/cassandra/data commitlog_directory: /var/lib/cassandra/commitlog saved_caches_directory: /var/lib/cassandra/saved_caches hints_directory: /var/lib/cassandra/hints cdc_raw_directory: /var/lib/cassandra/cdc_raw - debug: msg: =====REPLACE/ADD LINES TO CASSANDRA-RACDC.PROPERTIES===== - name: Getting zone/rack *** AWS *** shell: curl -sS --max-time 200 --retry 12 --retry-delay 5 -H Metadata:true "http://169.254.169.254/latest/meta-data/placement/availability-zone" register: zone - name: Copy cassandra-rackdc.properties with owner and permissions copy: src: /usr/share/oss/conf/cassandra-rackdc.properties remote_src: yes dest: /usr/share/oss/conf/cassandra-rackdc.properties.bak mode: '0755' - name: /usr/share/oss/conf/cassandra-rackdc.properties replacements lineinfile: path: /usr/share/oss/conf/cassandra-rackdc.properties regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - { regexp: "dc=dc1", line: "dc={{ dc }}"} - { regexp: "rack=rack1", line: "rack={{ zone.stdout }}"} - { regexp: "# prefer_local=true", line: "prefer_local=true"} - debug: msg: =====CONFIG/START ENVIRONMENT/SERVICES===== - name: Recursively change ownership of /usr/share/oss file: path: /usr/share/oss state: directory recurse: yes owner: cassandra group: cassandra - name: Execute command to set environment path shell: sed -e 's|PATH="\(.*\)"|PATH="/usr/share/oss/bin:/usr/share/oss/tools/bin:\1"|g' -i /etc/environment - include_tasks: cassandra-config-tasks.yml - name: Copy cassandra.service to system dir copy: src: /home/cassandra/cassandra.service remote_src: yes dest: /etc/systemd/system owner: root group: root mode: '0644' - name: enable cassandra service and ensure it is not masked systemd: name: cassandra enabled: yes masked: no - name: Make sure cassandra service is running systemd: state: restarted daemon_reload: yes name: cassandra cassandra.service0100777000000000000000000000047313634265302011345 0ustar00[Unit] Description=Cassandra Service [Service] Type=simple PIDFile=/usr/share/oss/PID ExecStartPre=/sbin/swapoff -a ExecStart=/usr/share/oss/bin/cassandra -p /usr/share/oss/PID WorkingDirectory=/usr/share/oss Restart=no TimeoutStopSec=60 TimeoutStartSec=120 User=cassandra [Install] WantedBy=multi-user.target ebs-init.yml0100777000000000000000000000346213625636676010302 0ustar00--- - name: ebs initilization hosts: local become: true become_user: root vars: disksize: "{{ disksize }}" cass_mount_point: "/data/cassandra" tasks: - name: Determine if mount point exists command: "/usr/bin/env stat -c '%m' {{ cass_mount_point }}" register: cass_mount_point ignore_errors: yes - debug: msg: mount point is {{ cass_mount_point.stdout }} - name: Execute the mkfs command shell: mkfs -t ext4 -E nodiscard /dev/xvdf when: cass_mount_point.stderr != "" - name: Create /data/cassandra file: path: /data/cassandra state: directory owner: root group: root mode: '0755' when: cass_mount_point.stderr != "" - name: Copy /etc/fstab with owner and permissions copy: src: /etc/fstab dest: /etc/fstab.bak owner: root group: root mode: '0644' when: cass_mount_point.stderr != "" - name: Getting ebs blockid shell: blkid /dev/xvdf -sUUID -ovalue register: uuid when: cass_mount_point.stderr != "" - debug: msg: System has uuid {{ uuid.stdout }} when: cass_mount_point.stderr != "" - name: Add a line to /etc/fstab lineinfile: path: /etc/fstab line: "# Cassandra data mount, template auto-generated." create: yes when: cass_mount_point.stderr != "" - name: Add a line to /etc/fstab lineinfile: path: /etc/fstab line: "UUID={{ uuid.stdout }} /data/cassandra ext4 defaults,nofail 1 2" create: yes when: cass_mount_point.stderr != "" - name: Mount filesystem for cassandra mount: path: /data/cassandra src: /dev/xvdf fstype: ext4 opts: defaults,discard state: mounted keygen.sh0100777000000000000000000000037713563346505007653 0ustar00#! /bin/bash rm -rf /home/ubuntu/.ssh/id_rsa* ssh-keygen -q -N "" -f /home/ubuntu/.ssh/id_rsa sudo chown ubuntu:ubuntu /home/ubuntu/.ssh/id_rsa* cat /home/ubuntu/.ssh/id_rsa.pub >> /home/ubuntu/.ssh/authorized_keys export ANSIBLE_HOST_KEY_CHECKING=False os-config.yml0100777000000000000000000000335513635006377010443 0ustar00--- - name: os configs hosts: local become: true become_user: root tasks: - name: Execute setkeepalive shell: sysctl -w net.ipv4.tcp_keepalive_time=60 - name: Add a line to /etc/sysctl.conf for keepalive lineinfile: path: /etc/sysctl.conf line: "net.ipv4.tcp_keepalive_time = 60" - name: Getting hostip shell: hostname -i register: hostip - name: Getting hostname shell: hostname register: hostname - name: Add a line to /etc/hosts lineinfile: path: /etc/hosts line: "{{ hostip.stdout }} {{ hostname.stdout }}" # https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/install/installRecommendSettings.html - name: Insert configuration block in /etc/sysctl.conf for optimizing linux network stack blockinfile: path: /etc/sysctl.conf block: | net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.rmem_default=16777216 net.core.wmem_default=16777216 net.core.optmem_max=40960 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 vm.max_map_count = 1048575 - name: Set /etc/sysctl.conf changes shell: sysctl -p /etc/sysctl.conf - name: Insert configuration block in /etc/security/limits.conf blockinfile: path: /etc/security/limits.conf block: | * - memlock unlimited * - nofile 100000 * - nproc 32768 * - as unlimited - name: Set /etc/security/limits.conf changes shell: sysctl -p - name: Set Java Hugepages setting - disable defrag shell: echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag playbooks.sh0100777000000000000000000000066113625633426010370 0ustar00#! /bin/bash ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/os-config.yml ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/ebs-init.yml ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/cassandra-directories.yml tar_and_copy.bat0100777000000000000000000000020013661354300011137 0ustar00"\Program Files\7-Zip"\7z -ttar a ansible.tar *.* -x!*.tar.gz copy ansible.tar C:\DataStax\DSPN\quickstart-datastax-oss\scriptscassandra-config-tasks.yml0100777000000000000000000000276713636711531013106 0ustar00# Cassandra Config tasks - name: Setting log directory replace: dest: /usr/share/oss/conf/logback.xml regexp: '\${cassandra.logdir}' replace: '/var/log/cassandra' - name: Setting G1 as the Java garbage collector replace: dest: /usr/share/oss/conf/jvm.options regexp: '#-XX:\+UseG1GC' replace: '-XX:+UseG1GC' - name: Commenting CMS garbage collector settngs replace: dest: /usr/share/oss/conf/jvm.options regexp: "{{ item.regexp1 }}" replace: "{{ item.replace1 }}" with_items: - { regexp1: '-XX:\+UseParNewGC', replace1: '#-XX:+UseParNewGC'} - { regexp1: '-XX:\+UseConcMarkSweepGC', replace1: '#-XX:+UseConcMarkSweepGC'} - { regexp1: '-XX:\+CMSParallelRemarkEnabled', replace1: '#-XX:+CMSParallelRemarkEnabled'} - { regexp1: '-XX:SurvivorRatio=8', replace1: '#-XX:SurvivorRatio=8'} - { regexp1: '-XX:MaxTenuringThreshold=1', replace1: '#-XX:MaxTenuringThreshold=1'} - { regexp1: '-XX:CMSInitiatingOccupancyFraction=75', replace1: '#-XX:CMSInitiatingOccupancyFraction=75'} - { regexp1: '-XX:\+UseCMSInitiatingOccupancyOnly', replace1: '#-XX:+UseCMSInitiatingOccupancyOnly'} - { regexp1: '-XX:CMSWaitDuration=10000', replace1: '#-XX:CMSWaitDuration=10000'} - { regexp1: '-XX:\+CMSParallelInitialMarkEnabled', replace1: '#-XX:+CMSParallelInitialMarkEnabled'} - { regexp1: '-XX:\+CMSEdenChunksRecordAlways', replace1: '#-XX:+CMSEdenChunksRecordAlways'} - { regexp1: '-XX:\+CMSClassUnloadingEnabled', replace1: '#-XX:+CMSClassUnloadingEnabled'} cassandra-directories.yml0100777000000000000000000000420413637005215013012 0ustar00--- - name: create cassandra directories hosts: 127.0.0.1 become: true tasks: - name: Ensure group "cassandra" exists group: name: cassandra state: present - name: Add the user "casssandra" user: name: cassandra comment: cassandra group: cassandra - name: Change file ownership of /data/cassandra file: path: /data/cassandra owner: cassandra group: cassandra mode: '0755' - name: create cassandra folders file: path: "{{ item }}" state: directory owner: cassandra group: cassandra mode: '0755' loop: - /var/lib/cassandra - /var/log/cassandra - /var/log/cassandra/audit - /data/cassandra - /data/cassandra/lib/cassandra - /data/cassandra/lib/cassandra/data - /data/cassandra/lib/cassandra/saved_caches - /data/cassandra/lib/cassandra/commitlog - /data/cassandra/lib/cassandra/hints - /data/cassandra/lib/cassandra/cdc_raw - /data/cassandra/lib/cassandra/insights_data - name: Create cassandra symbolic links file: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: cassandra group: cassandra state: link loop: - {src: /data/cassandra/lib/cassandra/cdc_raw, dest: /var/lib/cassandra/cdc_raw} - {src: /data/cassandra/lib/cassandra/hints, dest: /var/lib/cassandra/hints} - {src: /data/cassandra/lib/cassandra/commitlog, dest: /var/lib/cassandra/commitlog} - {src: /data/cassandra/lib/cassandra/saved_caches, dest: /var/lib/cassandra/saved_caches} - {src: /data/cassandra/lib/cassandra/data, dest: /var/lib/cassandra/data} - {src: /data/cassandra/lib/cassandra/insights_data, dest: /var/lib/cassandra/insights_data} - {src: /var/log/cassandra, dest: /data/cassandra/log} - {src: /var/log/cassandra/audit, dest: /data/cassandra/audit} # - name: Execute command to set softlink # shell: ln -s /var/log/cassandra/audit /data/cassandra/log/audit cassandra-install.yml0100777000000000000000000001332513661354563012162 0ustar00--- - name: cassandra install hosts: local become: true become_user: root vars: cassandra_version: "{{ cassandra_version }}" cluster_name: "{{ cluster_name }}" dc: "{{ dc }}" seeds: "{{ seeds }}" num_tokens: 64 compaction_throughput_mb_per_sec: 64 zone: rack1 publicip: "{{ publicip }}" tasks: - debug: msg: =====Cassandra Version {{ cassandra_version }} ===== - debug: msg: =====Cluster Name {{ cluster_name }} ===== - debug: msg: =====Data Center Name {{ dc }} ===== - debug: msg: =====seed nodes {{ seeds }} ===== - debug: msg: =====CREATE DIRECTORIES, SYMLINKS, UNTAR===== - stat: path=/etc/systemd/system/cassandra.service register: service_file - meta: end_play when: service_file.stat.exists == True - name: Create OSS directory /usr/share/oss file: path: /usr/share/oss state: directory owner: cassandra group: cassandra mode: '0755' - name: Unarchive OSS tarball unarchive: src: /home/cassandra/apache-cassandra-{{ cassandra_version }}-bin.tar.gz remote_src: yes dest: /usr/share/oss creates: /usr/share/oss/conf/cassandra.yaml extra_opts: - --strip-components=1 - debug: msg: =====REPLACE/ADD LINES TO CASSANDRA.YAML/ADDRESS.YAML===== - name: Getting hostname shell: hostname -i register: hostname - name: Copy /usr/share/oss/conf/cassandra.yaml with owner and permissions copy: src: /usr/share/oss/conf/cassandra.yaml remote_src: yes dest: /usr/share/oss/conf/cassandra.yaml.bak mode: '0755' - stat: path=/etc/systemd/system/cassandra.service register: service_file - meta: end_play when: service_file.stat.exists == True - name: /usr/share/oss/conf/cassandra.yaml replacements lineinfile: path: /usr/share/oss/conf/cassandra.yaml regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - {regexp: '- seeds: "127.0.0.1:7000"', line: ' - seeds: "{{ seeds }}"'} - {regexp: "cluster_name: 'Test Cluster'", line: "cluster_name: '{{ cluster_name }}'"} - {regexp: 'listen_address: localhost', line: 'listen_address: {{ hostname.stdout }}'} - {regexp: "num_tokens: 256", line: "num_tokens: {{ num_tokens }}"} - {regexp: "compaction_throughput_mb_per_sec: 16", line: "compaction_throughput_mb_per_sec: {{ compaction_throughput_mb_per_sec }}"} - {regexp: "trickle_fsync: false", line: "trickle_fsync: true"} - {regexp: "endpoint_snitch: SimpleSnitch", line: "endpoint_snitch: GossipingPropertyFileSnitch"} - name: /usr/share/oss/conf/cassandra.yaml replacements when publicip is true lineinfile: path: /usr/share/oss/conf/cassandra.yaml regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - {regexp: '# broadcast_rpc_address: 1.2.3.4', line: 'broadcast_rpc_address: {{ publicip }}'} - {regexp: "rpc_address: localhost", line: "rpc_address: 0.0.0.0"} when: publicip|length > 0 - name: Add a line to cassandra.yaml for autobootstrap, phi_convict_threshold blockinfile: path: /usr/share/oss/conf/cassandra.yaml block: | auto_bootstrap: false phi_convict_threshold: 12 data_file_directories: - /var/lib/cassandra/data commitlog_directory: /var/lib/cassandra/commitlog saved_caches_directory: /var/lib/cassandra/saved_caches hints_directory: /var/lib/cassandra/hints cdc_raw_directory: /var/lib/cassandra/cdc_raw - debug: msg: =====REPLACE/ADD LINES TO CASSANDRA-RACDC.PROPERTIES===== - name: Getting zone/rack *** AWS *** shell: curl -sS --max-time 200 --retry 12 --retry-delay 5 -H Metadata:true "http://169.254.169.254/latest/meta-data/placement/availability-zone" register: zone - name: Copy cassandra-rackdc.properties with owner and permissions copy: src: /usr/share/oss/conf/cassandra-rackdc.properties remote_src: yes dest: /usr/share/oss/conf/cassandra-rackdc.properties.bak mode: '0755' - name: /usr/share/oss/conf/cassandra-rackdc.properties replacements lineinfile: path: /usr/share/oss/conf/cassandra-rackdc.properties regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - { regexp: "dc=dc1", line: "dc={{ dc }}"} - { regexp: "rack=rack1", line: "rack={{ zone.stdout }}"} - { regexp: "# prefer_local=true", line: "prefer_local=true"} - debug: msg: =====CONFIG/START ENVIRONMENT/SERVICES===== - name: Recursively change ownership of /usr/share/oss file: path: /usr/share/oss state: directory recurse: yes owner: cassandra group: cassandra - name: Execute command to set environment path shell: sed -e 's|PATH="\(.*\)"|PATH="/usr/share/oss/bin:/usr/share/oss/tools/bin:\1"|g' -i /etc/environment - include_tasks: cassandra-config-tasks.yml - name: Copy cassandra.service to system dir copy: src: /home/cassandra/cassandra.service remote_src: yes dest: /etc/systemd/system owner: root group: root mode: '0644' - name: enable cassandra service and ensure it is not masked systemd: name: cassandra enabled: yes masked: no - name: Make sure cassandra service is running systemd: state: restarted daemon_reload: yes name: cassandra cassandra.service0100777000000000000000000000047313634265302011345 0ustar00[Unit] Description=Cassandra Service [Service] Type=simple PIDFile=/usr/share/oss/PID ExecStartPre=/sbin/swapoff -a ExecStart=/usr/share/oss/bin/cassandra -p /usr/share/oss/PID WorkingDirectory=/usr/share/oss Restart=no TimeoutStopSec=60 TimeoutStartSec=120 User=cassandra [Install] WantedBy=multi-user.target ebs-init.yml0100777000000000000000000000346213625636676010302 0ustar00--- - name: ebs initilization hosts: local become: true become_user: root vars: disksize: "{{ disksize }}" cass_mount_point: "/data/cassandra" tasks: - name: Determine if mount point exists command: "/usr/bin/env stat -c '%m' {{ cass_mount_point }}" register: cass_mount_point ignore_errors: yes - debug: msg: mount point is {{ cass_mount_point.stdout }} - name: Execute the mkfs command shell: mkfs -t ext4 -E nodiscard /dev/xvdf when: cass_mount_point.stderr != "" - name: Create /data/cassandra file: path: /data/cassandra state: directory owner: root group: root mode: '0755' when: cass_mount_point.stderr != "" - name: Copy /etc/fstab with owner and permissions copy: src: /etc/fstab dest: /etc/fstab.bak owner: root group: root mode: '0644' when: cass_mount_point.stderr != "" - name: Getting ebs blockid shell: blkid /dev/xvdf -sUUID -ovalue register: uuid when: cass_mount_point.stderr != "" - debug: msg: System has uuid {{ uuid.stdout }} when: cass_mount_point.stderr != "" - name: Add a line to /etc/fstab lineinfile: path: /etc/fstab line: "# Cassandra data mount, template auto-generated." create: yes when: cass_mount_point.stderr != "" - name: Add a line to /etc/fstab lineinfile: path: /etc/fstab line: "UUID={{ uuid.stdout }} /data/cassandra ext4 defaults,nofail 1 2" create: yes when: cass_mount_point.stderr != "" - name: Mount filesystem for cassandra mount: path: /data/cassandra src: /dev/xvdf fstype: ext4 opts: defaults,discard state: mounted keygen.sh0100777000000000000000000000037713563346505007653 0ustar00#! /bin/bash rm -rf /home/ubuntu/.ssh/id_rsa* ssh-keygen -q -N "" -f /home/ubuntu/.ssh/id_rsa sudo chown ubuntu:ubuntu /home/ubuntu/.ssh/id_rsa* cat /home/ubuntu/.ssh/id_rsa.pub >> /home/ubuntu/.ssh/authorized_keys export ANSIBLE_HOST_KEY_CHECKING=False os-config.yml0100777000000000000000000000335513635006377010443 0ustar00--- - name: os configs hosts: local become: true become_user: root tasks: - name: Execute setkeepalive shell: sysctl -w net.ipv4.tcp_keepalive_time=60 - name: Add a line to /etc/sysctl.conf for keepalive lineinfile: path: /etc/sysctl.conf line: "net.ipv4.tcp_keepalive_time = 60" - name: Getting hostip shell: hostname -i register: hostip - name: Getting hostname shell: hostname register: hostname - name: Add a line to /etc/hosts lineinfile: path: /etc/hosts line: "{{ hostip.stdout }} {{ hostname.stdout }}" # https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/install/installRecommendSettings.html - name: Insert configuration block in /etc/sysctl.conf for optimizing linux network stack blockinfile: path: /etc/sysctl.conf block: | net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.rmem_default=16777216 net.core.wmem_default=16777216 net.core.optmem_max=40960 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 vm.max_map_count = 1048575 - name: Set /etc/sysctl.conf changes shell: sysctl -p /etc/sysctl.conf - name: Insert configuration block in /etc/security/limits.conf blockinfile: path: /etc/security/limits.conf block: | * - memlock unlimited * - nofile 100000 * - nproc 32768 * - as unlimited - name: Set /etc/security/limits.conf changes shell: sysctl -p - name: Set Java Hugepages setting - disable defrag shell: echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag playbooks.sh0100777000000000000000000000066113625633426010370 0ustar00#! /bin/bash ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/os-config.yml ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/ebs-init.yml ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/cassandra-directories.yml tar_and_copy.bat0100777000000000000000000000020013661354300011137 0ustar00"\Program Files\7-Zip"\7z -ttar a ansible.tar *.* -x!*.tar.gz copy ansible.tar C:\DataStax\DSPN\quickstart-datastax-oss\scriptscassandra-config-tasks.yml0100777000000000000000000000300713661365117013075 0ustar00# Cassandra Config tasks - name: Setting log directory replace: dest: /usr/share/oss/conf/logback.xml regexp: '\${cassandra.logdir}' replace: '/var/log/cassandra' - name: Setting G1 as the Java garbage collector replace: dest: /usr/share/oss/conf/jvm8-server.options regexp: '#-XX:\+UseG1GC' replace: '-XX:+UseG1GC' - name: Commenting CMS garbage collector settngs replace: dest: /usr/share/oss/conf/jvm8-server.options regexp: "{{ item.regexp1 }}" replace: "{{ item.replace1 }}" with_items: - { regexp1: '-XX:\+UseParNewGC', replace1: '#-XX:+UseParNewGC'} - { regexp1: '-XX:\+UseConcMarkSweepGC', replace1: '#-XX:+UseConcMarkSweepGC'} - { regexp1: '-XX:\+CMSParallelRemarkEnabled', replace1: '#-XX:+CMSParallelRemarkEnabled'} - { regexp1: '-XX:SurvivorRatio=8', replace1: '#-XX:SurvivorRatio=8'} - { regexp1: '-XX:MaxTenuringThreshold=1', replace1: '#-XX:MaxTenuringThreshold=1'} - { regexp1: '-XX:CMSInitiatingOccupancyFraction=75', replace1: '#-XX:CMSInitiatingOccupancyFraction=75'} - { regexp1: '-XX:\+UseCMSInitiatingOccupancyOnly', replace1: '#-XX:+UseCMSInitiatingOccupancyOnly'} - { regexp1: '-XX:CMSWaitDuration=10000', replace1: '#-XX:CMSWaitDuration=10000'} - { regexp1: '-XX:\+CMSParallelInitialMarkEnabled', replace1: '#-XX:+CMSParallelInitialMarkEnabled'} - { regexp1: '-XX:\+CMSEdenChunksRecordAlways', replace1: '#-XX:+CMSEdenChunksRecordAlways'} - { regexp1: '-XX:\+CMSClassUnloadingEnabled', replace1: '#-XX:+CMSClassUnloadingEnabled'} cassandra-directories.yml0100777000000000000000000000420413637005215013012 0ustar00--- - name: create cassandra directories hosts: 127.0.0.1 become: true tasks: - name: Ensure group "cassandra" exists group: name: cassandra state: present - name: Add the user "casssandra" user: name: cassandra comment: cassandra group: cassandra - name: Change file ownership of /data/cassandra file: path: /data/cassandra owner: cassandra group: cassandra mode: '0755' - name: create cassandra folders file: path: "{{ item }}" state: directory owner: cassandra group: cassandra mode: '0755' loop: - /var/lib/cassandra - /var/log/cassandra - /var/log/cassandra/audit - /data/cassandra - /data/cassandra/lib/cassandra - /data/cassandra/lib/cassandra/data - /data/cassandra/lib/cassandra/saved_caches - /data/cassandra/lib/cassandra/commitlog - /data/cassandra/lib/cassandra/hints - /data/cassandra/lib/cassandra/cdc_raw - /data/cassandra/lib/cassandra/insights_data - name: Create cassandra symbolic links file: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: cassandra group: cassandra state: link loop: - {src: /data/cassandra/lib/cassandra/cdc_raw, dest: /var/lib/cassandra/cdc_raw} - {src: /data/cassandra/lib/cassandra/hints, dest: /var/lib/cassandra/hints} - {src: /data/cassandra/lib/cassandra/commitlog, dest: /var/lib/cassandra/commitlog} - {src: /data/cassandra/lib/cassandra/saved_caches, dest: /var/lib/cassandra/saved_caches} - {src: /data/cassandra/lib/cassandra/data, dest: /var/lib/cassandra/data} - {src: /data/cassandra/lib/cassandra/insights_data, dest: /var/lib/cassandra/insights_data} - {src: /var/log/cassandra, dest: /data/cassandra/log} - {src: /var/log/cassandra/audit, dest: /data/cassandra/audit} # - name: Execute command to set softlink # shell: ln -s /var/log/cassandra/audit /data/cassandra/log/audit cassandra-install.yml0100777000000000000000000001332513661354563012162 0ustar00--- - name: cassandra install hosts: local become: true become_user: root vars: cassandra_version: "{{ cassandra_version }}" cluster_name: "{{ cluster_name }}" dc: "{{ dc }}" seeds: "{{ seeds }}" num_tokens: 64 compaction_throughput_mb_per_sec: 64 zone: rack1 publicip: "{{ publicip }}" tasks: - debug: msg: =====Cassandra Version {{ cassandra_version }} ===== - debug: msg: =====Cluster Name {{ cluster_name }} ===== - debug: msg: =====Data Center Name {{ dc }} ===== - debug: msg: =====seed nodes {{ seeds }} ===== - debug: msg: =====CREATE DIRECTORIES, SYMLINKS, UNTAR===== - stat: path=/etc/systemd/system/cassandra.service register: service_file - meta: end_play when: service_file.stat.exists == True - name: Create OSS directory /usr/share/oss file: path: /usr/share/oss state: directory owner: cassandra group: cassandra mode: '0755' - name: Unarchive OSS tarball unarchive: src: /home/cassandra/apache-cassandra-{{ cassandra_version }}-bin.tar.gz remote_src: yes dest: /usr/share/oss creates: /usr/share/oss/conf/cassandra.yaml extra_opts: - --strip-components=1 - debug: msg: =====REPLACE/ADD LINES TO CASSANDRA.YAML/ADDRESS.YAML===== - name: Getting hostname shell: hostname -i register: hostname - name: Copy /usr/share/oss/conf/cassandra.yaml with owner and permissions copy: src: /usr/share/oss/conf/cassandra.yaml remote_src: yes dest: /usr/share/oss/conf/cassandra.yaml.bak mode: '0755' - stat: path=/etc/systemd/system/cassandra.service register: service_file - meta: end_play when: service_file.stat.exists == True - name: /usr/share/oss/conf/cassandra.yaml replacements lineinfile: path: /usr/share/oss/conf/cassandra.yaml regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - {regexp: '- seeds: "127.0.0.1:7000"', line: ' - seeds: "{{ seeds }}"'} - {regexp: "cluster_name: 'Test Cluster'", line: "cluster_name: '{{ cluster_name }}'"} - {regexp: 'listen_address: localhost', line: 'listen_address: {{ hostname.stdout }}'} - {regexp: "num_tokens: 256", line: "num_tokens: {{ num_tokens }}"} - {regexp: "compaction_throughput_mb_per_sec: 16", line: "compaction_throughput_mb_per_sec: {{ compaction_throughput_mb_per_sec }}"} - {regexp: "trickle_fsync: false", line: "trickle_fsync: true"} - {regexp: "endpoint_snitch: SimpleSnitch", line: "endpoint_snitch: GossipingPropertyFileSnitch"} - name: /usr/share/oss/conf/cassandra.yaml replacements when publicip is true lineinfile: path: /usr/share/oss/conf/cassandra.yaml regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - {regexp: '# broadcast_rpc_address: 1.2.3.4', line: 'broadcast_rpc_address: {{ publicip }}'} - {regexp: "rpc_address: localhost", line: "rpc_address: 0.0.0.0"} when: publicip|length > 0 - name: Add a line to cassandra.yaml for autobootstrap, phi_convict_threshold blockinfile: path: /usr/share/oss/conf/cassandra.yaml block: | auto_bootstrap: false phi_convict_threshold: 12 data_file_directories: - /var/lib/cassandra/data commitlog_directory: /var/lib/cassandra/commitlog saved_caches_directory: /var/lib/cassandra/saved_caches hints_directory: /var/lib/cassandra/hints cdc_raw_directory: /var/lib/cassandra/cdc_raw - debug: msg: =====REPLACE/ADD LINES TO CASSANDRA-RACDC.PROPERTIES===== - name: Getting zone/rack *** AWS *** shell: curl -sS --max-time 200 --retry 12 --retry-delay 5 -H Metadata:true "http://169.254.169.254/latest/meta-data/placement/availability-zone" register: zone - name: Copy cassandra-rackdc.properties with owner and permissions copy: src: /usr/share/oss/conf/cassandra-rackdc.properties remote_src: yes dest: /usr/share/oss/conf/cassandra-rackdc.properties.bak mode: '0755' - name: /usr/share/oss/conf/cassandra-rackdc.properties replacements lineinfile: path: /usr/share/oss/conf/cassandra-rackdc.properties regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - { regexp: "dc=dc1", line: "dc={{ dc }}"} - { regexp: "rack=rack1", line: "rack={{ zone.stdout }}"} - { regexp: "# prefer_local=true", line: "prefer_local=true"} - debug: msg: =====CONFIG/START ENVIRONMENT/SERVICES===== - name: Recursively change ownership of /usr/share/oss file: path: /usr/share/oss state: directory recurse: yes owner: cassandra group: cassandra - name: Execute command to set environment path shell: sed -e 's|PATH="\(.*\)"|PATH="/usr/share/oss/bin:/usr/share/oss/tools/bin:\1"|g' -i /etc/environment - include_tasks: cassandra-config-tasks.yml - name: Copy cassandra.service to system dir copy: src: /home/cassandra/cassandra.service remote_src: yes dest: /etc/systemd/system owner: root group: root mode: '0644' - name: enable cassandra service and ensure it is not masked systemd: name: cassandra enabled: yes masked: no - name: Make sure cassandra service is running systemd: state: restarted daemon_reload: yes name: cassandra cassandra.service0100777000000000000000000000047313634265302011345 0ustar00[Unit] Description=Cassandra Service [Service] Type=simple PIDFile=/usr/share/oss/PID ExecStartPre=/sbin/swapoff -a ExecStart=/usr/share/oss/bin/cassandra -p /usr/share/oss/PID WorkingDirectory=/usr/share/oss Restart=no TimeoutStopSec=60 TimeoutStartSec=120 User=cassandra [Install] WantedBy=multi-user.target ebs-init.yml0100777000000000000000000000346213625636676010302 0ustar00--- - name: ebs initilization hosts: local become: true become_user: root vars: disksize: "{{ disksize }}" cass_mount_point: "/data/cassandra" tasks: - name: Determine if mount point exists command: "/usr/bin/env stat -c '%m' {{ cass_mount_point }}" register: cass_mount_point ignore_errors: yes - debug: msg: mount point is {{ cass_mount_point.stdout }} - name: Execute the mkfs command shell: mkfs -t ext4 -E nodiscard /dev/xvdf when: cass_mount_point.stderr != "" - name: Create /data/cassandra file: path: /data/cassandra state: directory owner: root group: root mode: '0755' when: cass_mount_point.stderr != "" - name: Copy /etc/fstab with owner and permissions copy: src: /etc/fstab dest: /etc/fstab.bak owner: root group: root mode: '0644' when: cass_mount_point.stderr != "" - name: Getting ebs blockid shell: blkid /dev/xvdf -sUUID -ovalue register: uuid when: cass_mount_point.stderr != "" - debug: msg: System has uuid {{ uuid.stdout }} when: cass_mount_point.stderr != "" - name: Add a line to /etc/fstab lineinfile: path: /etc/fstab line: "# Cassandra data mount, template auto-generated." create: yes when: cass_mount_point.stderr != "" - name: Add a line to /etc/fstab lineinfile: path: /etc/fstab line: "UUID={{ uuid.stdout }} /data/cassandra ext4 defaults,nofail 1 2" create: yes when: cass_mount_point.stderr != "" - name: Mount filesystem for cassandra mount: path: /data/cassandra src: /dev/xvdf fstype: ext4 opts: defaults,discard state: mounted keygen.sh0100777000000000000000000000037713563346505007653 0ustar00#! /bin/bash rm -rf /home/ubuntu/.ssh/id_rsa* ssh-keygen -q -N "" -f /home/ubuntu/.ssh/id_rsa sudo chown ubuntu:ubuntu /home/ubuntu/.ssh/id_rsa* cat /home/ubuntu/.ssh/id_rsa.pub >> /home/ubuntu/.ssh/authorized_keys export ANSIBLE_HOST_KEY_CHECKING=False os-config.yml0100777000000000000000000000335513635006377010443 0ustar00--- - name: os configs hosts: local become: true become_user: root tasks: - name: Execute setkeepalive shell: sysctl -w net.ipv4.tcp_keepalive_time=60 - name: Add a line to /etc/sysctl.conf for keepalive lineinfile: path: /etc/sysctl.conf line: "net.ipv4.tcp_keepalive_time = 60" - name: Getting hostip shell: hostname -i register: hostip - name: Getting hostname shell: hostname register: hostname - name: Add a line to /etc/hosts lineinfile: path: /etc/hosts line: "{{ hostip.stdout }} {{ hostname.stdout }}" # https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/install/installRecommendSettings.html - name: Insert configuration block in /etc/sysctl.conf for optimizing linux network stack blockinfile: path: /etc/sysctl.conf block: | net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.rmem_default=16777216 net.core.wmem_default=16777216 net.core.optmem_max=40960 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 vm.max_map_count = 1048575 - name: Set /etc/sysctl.conf changes shell: sysctl -p /etc/sysctl.conf - name: Insert configuration block in /etc/security/limits.conf blockinfile: path: /etc/security/limits.conf block: | * - memlock unlimited * - nofile 100000 * - nproc 32768 * - as unlimited - name: Set /etc/security/limits.conf changes shell: sysctl -p - name: Set Java Hugepages setting - disable defrag shell: echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag playbooks.sh0100777000000000000000000000066113625633426010370 0ustar00#! /bin/bash ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/os-config.yml ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/ebs-init.yml ansible-playbook -v -u ubuntu -i /home/cassandra/ansible-hosts.cfg --private-key /home/ubuntu/.ssh/id_rsa /home/cassandra/cassandra-directories.yml tar_and_copy.bat0100777000000000000000000000020013661354300011137 0ustar00"\Program Files\7-Zip"\7z -ttar a ansible.tar *.* -x!*.tar.gz copy ansible.tar C:\DataStax\DSPN\quickstart-datastax-oss\scripts