From b4db057abee4c245e7e5f913b9f6bf9979ee35cf Mon Sep 17 00:00:00 2001 From: Michael Blow Date: Tue, 19 Jul 2016 18:43:58 -0400 Subject: [PATCH 1/4] Use Ansible For AsterixDB Install / Deployment Removes use of managix / dependency on installer binary assembly --- ansible/.gitignore | 3 ++ ansible/asterix.conf | 23 ++++++++++++ ansible/inventory | 12 +++++++ ansible/playbook.yml | 36 +++++++++++++++++++ app/docker-compose.yml | 7 ++++ scripts/docker-cluster.xml | 71 -------------------------------------- scripts/install-asterix.sh | 11 +++--- 7 files changed, 85 insertions(+), 78 deletions(-) create mode 100644 ansible/.gitignore create mode 100644 ansible/asterix.conf create mode 100644 ansible/inventory create mode 100644 ansible/playbook.yml delete mode 100644 scripts/docker-cluster.xml 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..a13d0f7 --- /dev/null +++ b/ansible/asterix.conf @@ -0,0 +1,23 @@ +[nc/nc1] +address=nc1 + +[nc/nc2] +address=nc2 + +[nc/nc3] +address=nc3 + +[nc/nc4] +address=nc4 + +[nc] +txnlogdir=/tmp/asterix/txnlog +conc1umpdir=/tmp/asterix/conc1ump +iodevices=/tmp/asterix/iodevice +iodevices=/tmp/asterix/io/1,/tmp/asterix/io/2,/tmp/asterix/io/3,/tmp/asterix/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/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..93d0b24 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 /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 $? From 7c247bc5345b73be3eea6779c5e621e334b7618f Mon Sep 17 00:00:00 2001 From: Michael Blow Date: Tue, 19 Jul 2016 22:32:42 -0400 Subject: [PATCH 2/4] Update Paths To Managix Config, Fix Sed Typo --- ansible/asterix.conf | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ansible/asterix.conf b/ansible/asterix.conf index a13d0f7..0465a70 100644 --- a/ansible/asterix.conf +++ b/ansible/asterix.conf @@ -11,10 +11,9 @@ address=nc3 address=nc4 [nc] -txnlogdir=/tmp/asterix/txnlog -conc1umpdir=/tmp/asterix/conc1ump -iodevices=/tmp/asterix/iodevice -iodevices=/tmp/asterix/io/1,/tmp/asterix/io/2,/tmp/asterix/io/3,/tmp/asterix/io/4 +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 From 291693b4d748a50fbc01ae4271e6962f3cea6a44 Mon Sep 17 00:00:00 2001 From: Michael Blow Date: Tue, 19 Jul 2016 22:42:39 -0400 Subject: [PATCH 3/4] Fix Typo For Ansible Docker Compose --- scripts/install-asterix.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install-asterix.sh b/scripts/install-asterix.sh index 93d0b24..2f58ba2 100755 --- a/scripts/install-asterix.sh +++ b/scripts/install-asterix.sh @@ -4,7 +4,7 @@ # previously had Asterix installed on it scriptdir=`dirname $0` -docker-compose /home/couchbase/docker/app/docker-compose.yml up -d --force-recreate ansible +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 $? From a7a7891ab2f6caac8e55c997e0c30433dcd5d8d5 Mon Sep 17 00:00:00 2001 From: Michael Blow Date: Fri, 22 Jul 2016 00:23:06 -0400 Subject: [PATCH 4/4] Add Ansible Image --- docker/ansible/Dockerfile | 11 +++++++++++ docker/ansible/go | 4 ++++ {image => docker/asterix-centos7}/Dockerfile | 0 {image => docker/asterix-centos7}/docker.repo | 0 {image => docker/asterix-centos7}/go | 0 {image => docker/asterix-centos7}/sshconfigbase | 0 {image => docker/asterix-centos7}/startup.sh | 0 7 files changed, 15 insertions(+) create mode 100644 docker/ansible/Dockerfile create mode 100755 docker/ansible/go rename {image => docker/asterix-centos7}/Dockerfile (100%) rename {image => docker/asterix-centos7}/docker.repo (100%) rename {image => docker/asterix-centos7}/go (100%) rename {image => docker/asterix-centos7}/sshconfigbase (100%) rename {image => docker/asterix-centos7}/startup.sh (100%) 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