diff --git a/ansible/.gitignore b/ansible/.gitignore new file mode 100644 index 0000000..472ea5c --- /dev/null +++ b/ansible/.gitignore @@ -0,0 +1,3 @@ +*.zip +*.tar.gz +playbook.retry diff --git a/ansible/asterix.conf b/ansible/asterix.conf new file mode 100644 index 0000000..0465a70 --- /dev/null +++ b/ansible/asterix.conf @@ -0,0 +1,22 @@ +[nc/nc1] +address=nc1 + +[nc/nc2] +address=nc2 + +[nc/nc3] +address=nc3 + +[nc/nc4] +address=nc4 + +[nc] +txnlogdir=/home/couchbase/txnlog +coredumpdir=/home/couchbase/coredump +iodevices=/home/couchbase/io/1,/home/couchbase/io/2,/home/couchbase/io/3,/home/couchbase/io/4 +storagedir=storage +command=asterixnc +app.class=org.apache.asterix.hyracks.bootstrap.NCApplicationEntryPoint + +[cc] +cluster.address = nc1 diff --git a/ansible/inventory b/ansible/inventory new file mode 100644 index 0000000..4e56751 --- /dev/null +++ b/ansible/inventory @@ -0,0 +1,12 @@ +[ncs] +nc1 +nc2 +nc3 +nc4 + +[cc] +nc1 + +[all:vars] +ansible_user=couchbase + diff --git a/ansible/playbook.yml b/ansible/playbook.yml new file mode 100644 index 0000000..123c63c --- /dev/null +++ b/ansible/playbook.yml @@ -0,0 +1,36 @@ +--- +- hosts: all + + tasks: + - name: Create Asterix installation directory + file: + path: /home/couchbase/asterix + state: directory + + - name: Download and unpack Asterix + unarchive: + src: /home/couchbase/asterix-server-binary-assembly.zip + dest: /home/couchbase/asterix + owner: couchbase + group: couchbase + creates: /home/couchbase/asterix/bin/asterixncservice + +- hosts: ncs + + tasks: + - name: Start NC Service + shell: > + nohup /home/couchbase/asterix/bin/asterixncservice < /dev/null > /home/couchbase/ncservice.log 2>&1 & + +- hosts: cc + + tasks: + - name: Copy cluster config to CC + copy: + src: asterix.conf + dest: /home/couchbase + + - name: Start CC + shell: > + nohup /home/couchbase/asterix/bin/asterixcc -config-file /home/couchbase/asterix.conf < /dev/null > /home/couchbase/cc.log 2>&1 & + diff --git a/app/docker-compose.yml b/app/docker-compose.yml index e48563e..5560cf9 100644 --- a/app/docker-compose.yml +++ b/app/docker-compose.yml @@ -80,6 +80,13 @@ services: networks: - asterix + ansible: + container_name: ansible + image: ceejatec/asterix-ansible + volumes: + - "../ansible:/home/couchbase/ansible" + networks: + - asterix networks: asterix: diff --git a/docker/ansible/Dockerfile b/docker/ansible/Dockerfile new file mode 100644 index 0000000..fb290c8 --- /dev/null +++ b/docker/ansible/Dockerfile @@ -0,0 +1,11 @@ +FROM ceejatec/asterix-centos7 + +# GCC and python-devel (necessary for pip) +RUN yum install -y gcc python-devel libffi-devel openssl-devel + +# Install pip and ansible +RUN curl "https://bootstrap.pypa.io/get-pip.py" -o "/tmp/get-pip.py" && \ + python /tmp/get-pip.py && \ + pip install ansible && \ + rm /tmp/get-pip.py + diff --git a/docker/ansible/go b/docker/ansible/go new file mode 100755 index 0000000..10c6cdb --- /dev/null +++ b/docker/ansible/go @@ -0,0 +1,4 @@ +#!/bin/sh + +docker build -t ceejatec/asterix-ansible:latest . + diff --git a/image/Dockerfile b/docker/asterix-centos7/Dockerfile similarity index 100% rename from image/Dockerfile rename to docker/asterix-centos7/Dockerfile diff --git a/image/docker.repo b/docker/asterix-centos7/docker.repo similarity index 100% rename from image/docker.repo rename to docker/asterix-centos7/docker.repo diff --git a/image/go b/docker/asterix-centos7/go similarity index 100% rename from image/go rename to docker/asterix-centos7/go diff --git a/image/sshconfigbase b/docker/asterix-centos7/sshconfigbase similarity index 100% rename from image/sshconfigbase rename to docker/asterix-centos7/sshconfigbase diff --git a/image/startup.sh b/docker/asterix-centos7/startup.sh similarity index 100% rename from image/startup.sh rename to docker/asterix-centos7/startup.sh diff --git a/scripts/docker-cluster.xml b/scripts/docker-cluster.xml deleted file mode 100644 index 5800d69..0000000 --- a/scripts/docker-cluster.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - docker-cluster - - - couchbase - - - - /home/couchbase/shared - true - - - - /home/couchbase/logs - - /home/couchbase/txn_logs - - - /home/couchbase/iodevice - - - storage - - - /usr/java/jdk1.8.0_74 - - - - cc - nc1 - nc1 - 1098 - 1099 - 8888 - - - - - nc1 - nc1 - - - - - nc2 - nc2 - - - - - nc3 - nc3 - - - - - nc4 - nc4 - - - diff --git a/scripts/install-asterix.sh b/scripts/install-asterix.sh index f01b819..2f58ba2 100755 --- a/scripts/install-asterix.sh +++ b/scripts/install-asterix.sh @@ -3,12 +3,9 @@ # This script assumes the 4-node Docker cluster is up, and has not # previously had Asterix installed on it scriptdir=`dirname $0` -rm -rf /home/couchbase/shared/* -cp ${scriptdir}/docker-cluster.xml $* /home/couchbase/shared -docker exec -u couchbase app_nc1_1 mkdir /home/couchbase/managix -docker exec -u couchbase app_nc1_1 unzip -d /home/couchbase/managix /home/couchbase/shared/\*.zip -docker exec -u couchbase app_nc1_1 /home/couchbase/managix/bin/managix configure -docker exec -u couchbase app_nc1_1 /home/couchbase/managix/bin/managix validate -docker exec -u couchbase app_nc1_1 /home/couchbase/managix/bin/managix create -n docker-cluster -c /home/couchbase/shared/docker-cluster.xml + +docker-compose -f /home/couchbase/docker/app/docker-compose.yml up -d --force-recreate ansible +docker cp $* ansible:/home/couchbase/asterix-server-binary-assembly.zip +docker exec -u couchbase ansible ansible-playbook /home/couchbase/ansible/playbook.yml -i /home/couchbase/ansible/inventory echo $?