reuse Ansible playbooks to initialize the database (#10)
* reuse Ansible playbooks to initialize the database
diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 47ae230..e7c04f0 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -1,18 +1,10 @@
DOCKER_HOST_IP ?= $(shell echo ${DOCKER_HOST} | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" || echo localhost)
DOCKER_REGISTRY ?= ""
DOCKER_IMAGE_PREFIX ?= whisk
-PROJECT_HOME ?= openwhisk-master
+PROJECT_HOME ?= ./openwhisk-master
WSK_CLI ?= $(PROJECT_HOME)/bin/wsk
-OPEN_WHISK_DB_PROTOCOL ?= http
-OPEN_WHISK_DB_HOST ?= $(DOCKER_HOST_IP)
-OPEN_WHISK_DB_PORT ?= 5984
-OPEN_WHISK_DB_PROVIDER ?= CouchDB
-OPEN_WHISK_DB_USERNAME ?= whisk_admin
-OPEN_WHISK_DB_PASSWORD ?= some_passw0rd
-DB_SUBJECTS_DBS ?= subjects
-OPEN_WHISK_DB_ACTIONS ?= whisk_actions
-OPEN_WHISK_DB_GW ?= whisk_gateway
+OPEN_WHISK_DB_PREFIX ?= local_
ifndef VERBOSE
.SILENT:
@@ -28,7 +20,7 @@
.PHONY: download
download:
rm -rf ./openwhisk-master*
- if [ "$(PROJECT_HOME)" = "openwhisk-master" ]; then \
+ if [ "$(PROJECT_HOME)" = "./openwhisk-master" ]; then \
curl -O ./openwhisk-master.tar.gz -L https://api.github.com/repos/openwhisk/openwhisk/tarball/master > ./openwhisk-master.tar.gz; \
mkdir openwhisk-master; \
tar -xvf ./openwhisk-master.tar.gz --strip 1 -C openwhisk-master; \
@@ -53,7 +45,7 @@
./gradlew distdocker -x :core:swift3Action:distDocker -x :core:swiftAction:distDocker
.PHONY: run
-run: check-required-ports setup start-docker-compose init-couchdb init-couchdb-actions init-whisk-cli
+run: check-required-ports setup start-docker-compose init-couchdb init-whisk-cli
.PHONY: check-required-ports
check-required-ports:
@@ -92,35 +84,15 @@
until $$(curl --output /dev/null --silent --head --fail http://$(DOCKER_HOST_IP):5984/_all_dbs); do printf '.'; sleep 5; done
echo "initializing the database ... "
- # the folder config/keys is referenced from createSubjects.sh
- mkdir -p db/config/keys
- cp $(PROJECT_HOME)/ansible/files/auth.* db/config/keys
-
- OPEN_WHISK_DB_PROVIDER=$(OPEN_WHISK_DB_PROVIDER) \
- OPEN_WHISK_DB_PROTOCOL=$(OPEN_WHISK_DB_PROTOCOL) \
- OPEN_WHISK_DB_HOST=$(OPEN_WHISK_DB_HOST) OPEN_WHISK_DB_PORT=$(OPEN_WHISK_DB_PORT) \
- OPEN_WHISK_DB_USERNAME=$(OPEN_WHISK_DB_USERNAME) OPEN_WHISK_DB_PASSWORD=$(OPEN_WHISK_DB_PASSWORD) \
- DB_SUBJECTS_DBS=$(DB_SUBJECTS_DBS) DB_WHISK_AUTHS=$(DB_SUBJECTS_DBS) \
- PROJECT_HOME=$(PROJECT_HOME) \
- db/createSubjects.sh
-
- # cleanup the files referenced by createSubjects.sh
- rm -rf db/config/keys
-
-.PHONY: init-couchdb-actions
-init-couchdb-actions:
- echo "initializing CouchDB Views ... "
- echo "" > $(PROJECT_HOME)/whisk.properties
- echo db.provider=$(OPEN_WHISK_DB_PROVIDER) >> $(PROJECT_HOME)/whisk.properties
- echo db.protocol=$(OPEN_WHISK_DB_PROTOCOL) >> $(PROJECT_HOME)/whisk.properties
- echo db.host=$(OPEN_WHISK_DB_HOST) >> $(PROJECT_HOME)/whisk.properties
- echo db.port=$(OPEN_WHISK_DB_PORT) >> $(PROJECT_HOME)/whisk.properties
- echo db.username=$(OPEN_WHISK_DB_USERNAME) >> $(PROJECT_HOME)/whisk.properties
- echo db.password=$(OPEN_WHISK_DB_PASSWORD) >> $(PROJECT_HOME)/whisk.properties
- echo db.whisk.actions=$(OPEN_WHISK_DB_ACTIONS) >> $(PROJECT_HOME)/whisk.properties
- echo db.whisk.apigw=$(OPEN_WHISK_DB_GW) >> $(PROJECT_HOME)/whisk.properties
- cd $(PROJECT_HOME)/ && tools/db/wipeTransientDBs.sh
- rm $(PROJECT_HOME)/whisk.properties
+ # make sure the src files are in a shared folder for docker
+ mkdir -p ~/tmp/openwhisk
+ rm -rf ~/tmp/openwhisk/src
+ rsync -av $(PROJECT_HOME)/* ~/tmp/openwhisk/src --exclude .git --exclude build --exclude tests
+ docker run --rm -v ~/tmp/openwhisk/src:/openwhisk -w /openwhisk/ansible \
+ --network="host" -t \
+ williamyeh/ansible:debian8 \
+ ansible-playbook setup.yml initdb.yml wipe.yml \
+ -e db_host=$(DOCKER_HOST_IP) -e openwhisk_home=/openwhisk -e db_prefix=$(OPEN_WHISK_DB_PREFIX)
.PHONY: init-whisk-cli
init-whisk-cli:
diff --git a/docker-compose/db/createSubjects.sh b/docker-compose/db/createSubjects.sh
deleted file mode 100755
index 1c07473..0000000
--- a/docker-compose/db/createSubjects.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-
-#
-# create the subjects databases (in Cloudant or CouchDB)
-#
-# Usage: createSubjects.sh
-
-SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-
-URL_BASE="$OPEN_WHISK_DB_PROTOCOL://$OPEN_WHISK_DB_HOST:$OPEN_WHISK_DB_PORT"
-
-if [ "$OPEN_WHISK_DB_PROVIDER" == "CouchDB" ]; then
- CURL_ADMIN="curl -s -k --user $OPEN_WHISK_DB_USERNAME:$OPEN_WHISK_DB_PASSWORD"
-
- # First part of confirmation prompt.
- echo "About to drop and recreate database '$DB_SUBJECTS_DBS' on:"
- echo " $URL_BASE"
-
-else
- echo "Unrecognized OPEN_WHISK_DB_PROVIDER: '$OPEN_WHISK_DB_PROVIDER'"
- exit 1
-fi
-
-GUEST_KEY=`cat "$SCRIPTDIR/config/keys/auth.guest"`
-WHISK_SYSTEM_KEY=`cat "$SCRIPTDIR/config/keys/auth.whisk.system"`
-
-# array of keys that need to be recreated in the auth table if it is ever dropped or in case of a fresh deployment
-SUBJECTS_KEYS=("guest:$GUEST_KEY" "whisk.system:$WHISK_SYSTEM_KEY")
-
-for db in $DB_SUBJECTS_DBS
-do
- echo $db
-
- # drop the database
- CMD="$CURL_ADMIN -X DELETE $URL_BASE/$db"
- echo $CMD
- $CMD
-
- # create the database
- CMD="$CURL_ADMIN -X PUT $URL_BASE/$db"
- echo $CMD
- $CMD
-done
-
-# recreate the "full" index on the "auth" database
-$CURL_ADMIN -X POST -H 'Content-Type: application/json' \
- -d @$PROJECT_HOME/ansible/files/auth_index.json \
- $URL_BASE/$DB_WHISK_AUTHS;
-
-# recreate necessary "auth" keys
-for key in "${SUBJECTS_KEYS[@]}" ; do
- SUBJECT="${key%%:*}"
- UUID="${key%:*}"
- UUID="${UUID##*:}"
- KEY="${key##*:}"
- echo Create key for $SUBJECT
- $CURL_ADMIN -X POST -H 'Content-Type: application/json' \
- -d "{
- \"_id\": \"$SUBJECT\",
- \"subject\": \"$SUBJECT\",
- \"uuid\": \"$UUID\",
- \"key\": \"$KEY\"
- }" \
- $URL_BASE/$DB_WHISK_AUTHS;
-done
diff --git a/docker-compose/docker-whisk-controller.env b/docker-compose/docker-whisk-controller.env
index edf6df1..b690b28 100644
--- a/docker-compose/docker-whisk-controller.env
+++ b/docker-compose/docker-whisk-controller.env
@@ -9,8 +9,8 @@
SERVICE_CHECK_TIMEOUT=2s
SERVICE_CHECK_INTERVAL=15s
-DB_PREFIX=local
-DB_WHISK_ACTIONS=whisk_actions
+DB_PREFIX=local_
+DB_WHISK_ACTIONS=local_whisks
DB_WHISK_AUTHS=subjects
KAFKA_NUMPARTITIONS=1