From 65f7076c53564d3a71c7faedb5d2002f914631fb Mon Sep 17 00:00:00 2001
From: Temur Maisuradze <temur@grena.ge>
Date: Mon, 4 Jan 2021 19:44:36 +0400
Subject: [PATCH] start stop restart and update scripts for cassandra

---
 roles/build/templates/cassandra/Dockerfile.j2 | 18 +-------
 .../templates/cassandra/cassandra.repo.j2     |  6 ---
 roles/build/templates/cassandra/start.sh.j2   | 10 -----
 .../templates/cassandra/supervisord.conf.j2   | 10 -----
 roles/cassandra/tasks/main.yml                | 42 +++++--------------
 roles/cassandra/tasks/restart.yml             |  6 +++
 roles/cassandra/tasks/start.yml               | 27 ++++++++++++
 roles/cassandra/tasks/stop.yml                |  6 +++
 roles/cassandra/tasks/update-config.yml       | 15 +++++++
 9 files changed, 66 insertions(+), 74 deletions(-)
 delete mode 100644 roles/build/templates/cassandra/cassandra.repo.j2
 delete mode 100644 roles/build/templates/cassandra/start.sh.j2
 delete mode 100644 roles/build/templates/cassandra/supervisord.conf.j2
 create mode 100644 roles/cassandra/tasks/restart.yml
 create mode 100644 roles/cassandra/tasks/start.yml
 create mode 100644 roles/cassandra/tasks/stop.yml
 create mode 100644 roles/cassandra/tasks/update-config.yml

diff --git a/roles/build/templates/cassandra/Dockerfile.j2 b/roles/build/templates/cassandra/Dockerfile.j2
index 052cbd1..f5d2a60 100644
--- a/roles/build/templates/cassandra/Dockerfile.j2
+++ b/roles/build/templates/cassandra/Dockerfile.j2
@@ -1,36 +1,20 @@
 FROM {{repo}}/openjdk:{{version}}{{suffix}}
 
 USER root
-#COPY cassandra.repo /etc/yum.repos.d/cassandra.repo
-#COPY supervisord.conf /etc/supervisord.conf
-#COPY start.sh /start.sh
 RUN echo "[cassandra]" > /etc/yum.repos.d/cassandra.repo && \
     echo "name=Apache Cassandra" >> /etc/yum.repos.d/cassandra.repo && \
     echo "baseurl=https://downloads.apache.org/cassandra/redhat/311x/" >> /etc/yum.repos.d/cassandra.repo && \
     echo "gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
     echo "repo_gpgcheck=1" >> /etc/yum.repos.d/cassandra.repo && \
     echo "gpgkey=https://downloads.apache.org/cassandra/KEYS" >> /etc/yum.repos.d/cassandra.repo && \
-    echo '#!/bin/bash' > /start.sh && \
-    echo 'export CASSANDRA_HOME=/usr/share/cassandra' >> /start.sh && \
-    echo 'export CASSANDRA_CONF=$CASSANDRA_HOME/conf' >> /start.sh && \
-    echo 'export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh' >> /start.sh && \
-    echo 'log_file=/var/log/cassandra/cassandra.log' >> /start.sh && \
-    echo 'pid_file=/var/run/cassandra/cassandra.pid' >> /start.sh && \
-    echo 'lock_file=/var/lock/subsys/cassandra' >> /start.sh && \
-    echo 'CASSANDRA_PROG=/usr/sbin/cassandra' >> /start.sh && \
-    echo '' >> /start.sh && \
-    echo '$CASSANDRA_PROG -p $pid_file > $log_file 2>&1' >> /start.sh && \
     yum install -y epel-release && \
-    yum install -y cassandra supervisor && \
+    yum install -y cassandra supervisor rsync && \
     mkdir /usr/share/cassandra/conf && \
     cp -a /etc/cassandra/conf/* /usr/share/cassandra/conf && \
     chown -R cassandra:cassandra /usr/share/cassandra && \
     chown -R cassandra:cassandra /var/lib/cassandra && \
     sed -i -e 's,/etc/cassandra,/usr/share/cassandra,g' /usr/share/cassandra/cassandra.in.sh && \
-    chmod a+x /start.sh && \
     yum -y clean all
 COPY cassandrasupervisord.conf /etc/supervisord.conf
 EXPOSE 7000 9042
 ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-#USER cassandra
-# ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/templates/cassandra/cassandra.repo.j2 b/roles/build/templates/cassandra/cassandra.repo.j2
deleted file mode 100644
index 8fdb78c..0000000
--- a/roles/build/templates/cassandra/cassandra.repo.j2
+++ /dev/null
@@ -1,6 +0,0 @@
-[cassandra]
-name=Apache Cassandra
-baseurl=https://downloads.apache.org/cassandra/redhat/311x/
-gpgcheck=1
-repo_gpgcheck=1
-gpgkey=https://downloads.apache.org/cassandra/KEYS
diff --git a/roles/build/templates/cassandra/start.sh.j2 b/roles/build/templates/cassandra/start.sh.j2
deleted file mode 100644
index fa91e92..0000000
--- a/roles/build/templates/cassandra/start.sh.j2
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-export CASSANDRA_HOME=/usr/share/cassandra
-export CASSANDRA_CONF=$CASSANDRA_HOME/conf
-export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh
-log_file=/var/log/cassandra/cassandra.log
-pid_file=/var/run/cassandra/cassandra.pid
-lock_file=/var/lock/subsys/cassandra
-CASSANDRA_PROG=/usr/sbin/cassandra
-
-$CASSANDRA_PROG -p $pid_file > $log_file 2>&1
diff --git a/roles/build/templates/cassandra/supervisord.conf.j2 b/roles/build/templates/cassandra/supervisord.conf.j2
deleted file mode 100644
index d1f405e..0000000
--- a/roles/build/templates/cassandra/supervisord.conf.j2
+++ /dev/null
@@ -1,10 +0,0 @@
-[supervisord]
-loglevel=debug
-nodaemon=true
-[program:cassandra]
-user=cassandra
-directory=/usr/share/cassandra
-stdout_logfile=/var/log/cassandra/cassandra.log
-redirect_stderr=true
-environment=CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="$CASSANDRA_HOME/cassandra.in.sh"
-command=/usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid
diff --git a/roles/cassandra/tasks/main.yml b/roles/cassandra/tasks/main.yml
index 814355e..f26e13b 100644
--- a/roles/cassandra/tasks/main.yml
+++ b/roles/cassandra/tasks/main.yml
@@ -1,37 +1,17 @@
 ---
 
-- name: Configure Cassandra
-  remote_user: cassandra
-  template:
-    src: cassandra.yaml.j2
-    dest: /usr/share/cassandra/conf/cassandra.yaml
+- include: start.yml
   tags:
-    - start
-
-- name: Start Cassandra
-  remote_user: root
-  command: "supervisorctl start cassandra"
-  tags:
-    - start
-
-- name: Wait for Cassandra
-  remote_user: root
-  wait_for:
-    host: "{{groups['cassandra'][0]}}"
-    port: 9042
-    state: started
-    delay: 5
+   - start
+- include: stop.yml
   tags:
-    - start
-
-- name: Set Autostart for supervisord's services
-  shell: "sed -i 's/autostart=false/autostart=true/g' /etc/supervisord.conf"
+   - stop
+   - stop-cassandra
+- include: update-config.yml
   tags:
-    - start
-
-- name: Stop Cassandra
-  remote_user: root
-  command: "supervisorctl stop cassandra"
+   - update-config
+   - update-cassandra-config
+- include: restart.yml
   tags:
-    - stop
-
+   - restart
+   - restart-cassandra
diff --git a/roles/cassandra/tasks/restart.yml b/roles/cassandra/tasks/restart.yml
new file mode 100644
index 0000000..b6e575b
--- /dev/null
+++ b/roles/cassandra/tasks/restart.yml
@@ -0,0 +1,6 @@
+---
+
+- name: Restart Cassandra
+  remote_user: root
+  command: "supervisorctl restart cassandra"
+
diff --git a/roles/cassandra/tasks/start.yml b/roles/cassandra/tasks/start.yml
new file mode 100644
index 0000000..1018944
--- /dev/null
+++ b/roles/cassandra/tasks/start.yml
@@ -0,0 +1,27 @@
+---
+
+- name: Configure Cassandra
+  remote_user: cassandra
+  template:
+    src: cassandra.yaml.j2
+    dest: /usr/share/cassandra/conf/cassandra.yaml
+
+- name: Start Cassandra
+  remote_user: root
+  command: "supervisorctl start cassandra"
+
+- name: Wait for Cassandra
+  remote_user: root
+  wait_for:
+    host: "{{groups['cassandra'][0]}}"
+    port: 9042
+    state: started
+    delay: 5
+
+- name: Set Autostart for supervisord's services
+  replace:
+    path: /etc/supervisord.conf
+    regexp: '^autostart=false$'
+    replace: 'autostart=true'
+
+
diff --git a/roles/cassandra/tasks/stop.yml b/roles/cassandra/tasks/stop.yml
new file mode 100644
index 0000000..29742c7
--- /dev/null
+++ b/roles/cassandra/tasks/stop.yml
@@ -0,0 +1,6 @@
+---
+
+- name: Stop Cassandra
+  remote_user: root
+  command: "supervisorctl stop cassandra"
+
diff --git a/roles/cassandra/tasks/update-config.yml b/roles/cassandra/tasks/update-config.yml
new file mode 100644
index 0000000..ceb0b60
--- /dev/null
+++ b/roles/cassandra/tasks/update-config.yml
@@ -0,0 +1,15 @@
+---
+
+- name: Configure Cassandra
+  remote_user: cassandra
+  template:
+    src: cassandra.yaml.j2
+    dest: /usr/share/cassandra/conf/cassandra.yaml
+
+- name: Wait for Cassandra
+  remote_user: root
+  wait_for:
+    host: "{{groups['cassandra'][0]}}"
+    port: 9042
+    state: started
+    delay: 5
-- 
GitLab