aboutsummaryrefslogtreecommitdiff
path: root/provisioner
diff options
context:
space:
mode:
authorEvans Ye <evansye@apache.org>2016-04-24 23:50:57 +0800
committerOlaf Flebbe <of@oflebbe.de>2016-08-09 20:26:21 +0200
commit6591e4bdf1afc7b856ce40a177d225fe03e01579 (patch)
tree37622967aabf30081212bb2035e70e5fc07d2688 /provisioner
parentcea230c26867e220a41e3f189840765a5984dfcd (diff)
BIGTOP-2387. New Docker provisioner destroy will delete all docker containers on the host
Diffstat (limited to 'provisioner')
-rw-r--r--provisioner/docker/README.md1
-rwxr-xr-xprovisioner/docker/docker-hadoop.sh60
2 files changed, 40 insertions, 21 deletions
diff --git a/provisioner/docker/README.md b/provisioner/docker/README.md
index c95b2183..d1c0f2e2 100644
--- a/provisioner/docker/README.md
+++ b/provisioner/docker/README.md
@@ -109,6 +109,7 @@ usage: docker-hadoop.sh [-C file ] args
For example: docker-hadoop.sh --exec 1 bash
docker-hadoop.sh --exec docker_bigtop_1 bash
-E, --env-check Check whether required tools has been installed
+ -l, --list List out container status for the cluster
-p, --provision Deploy configuration changes
-s, --smoke-tests Run Bigtop smoke tests
-h, --help
diff --git a/provisioner/docker/docker-hadoop.sh b/provisioner/docker/docker-hadoop.sh
index 93c8c9cc..89ac6bbc 100755
--- a/provisioner/docker/docker-hadoop.sh
+++ b/provisioner/docker/docker-hadoop.sh
@@ -15,8 +15,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-BIGTOP_PUPPET_DIR=../../bigtop-deploy/puppet
-
usage() {
echo "usage: $PROG [-C file ] args"
echo " -C file Use alternate file for config.yaml"
@@ -27,6 +25,7 @@ usage() {
echo " For example: $PROG --exec 1 bash"
echo " $PROG --exec docker_bigtop_1 bash"
echo " -E, --env-check Check whether required tools has been installed"
+ echo " -l, --list List out container status for the cluster"
echo " -p, --provision Deploy configuration changes"
echo " -s, --smoke-tests Run Bigtop smoke tests"
echo " -h, --help"
@@ -34,6 +33,12 @@ usage() {
}
create() {
+ if [ -e .provision_id ]; then
+ echo "Cluster already exist! Run ./$PROG -d to destroy the cluster or delete .provision_id file and containers manually."
+ exit 1;
+ fi
+ echo "`date +'%Y%m%d_%H%M%S'`_R$RANDOM" > .provision_id
+ PROVISION_ID=`cat .provision_id`
# Create a shared /etc/hosts and hiera.yaml that will be both mounted to each container soon
mkdir -p config/hieradata 2> /dev/null
cat /dev/null > ./config/hiera.yaml
@@ -41,15 +46,15 @@ create() {
export DOCKER_IMAGE=$(get-yaml-config docker image)
# Startup instances
- docker-compose scale bigtop=$1
+ docker-compose -p $PROVISION_ID scale bigtop=$1
if [ $? -ne 0 ]; then
echo "Docker container(s) startup failed!";
exit 1;
fi
# Get the headnode FQDN
- nodes=(`docker-compose ps -q`)
- hadoop_head_node=`docker inspect --format {{.Config.Hostname}}.{{.Config.Domainname}} ${nodes[0]}`
+ NODES=(`docker-compose -p $PROVISION_ID ps -q`)
+ hadoop_head_node=`docker inspect --format {{.Config.Hostname}}.{{.Config.Domainname}} ${NODES[0]}`
# Fetch configurations form specificed yaml config file
repo=$(get-yaml-config repo)
@@ -66,10 +71,9 @@ create() {
}
generate-hosts() {
- nodes=(`docker-compose ps -q`)
- for node in ${nodes[*]}; do
+ for node in ${NODES[*]}; do
entry=`docker inspect --format "{{.NetworkSettings.IPAddress}} {{.Config.Hostname}}.{{.Config.Domainname}}" $node`
- docker exec ${nodes[0]} bash -c "echo $entry >> /etc/hosts"
+ docker exec ${NODES[0]} bash -c "echo $entry >> /etc/hosts"
done
wait
@@ -89,40 +93,39 @@ EOF
}
copy-to-instances() {
- nodes=(`docker-compose ps -q`)
- for node in ${nodes[*]}; do
+ for node in ${NODES[*]}; do
docker cp $1 $node:$2 &
done
wait
}
bootstrap() {
- nodes=(`docker-compose ps -q`)
- for node in ${nodes[*]}; do
+ for node in ${NODES[*]}; do
+ docker cp $1 $node:$2 &
docker exec $node bash -c "/bigtop-home/bigtop-deploy/vm/utils/setup-env-$1.sh $2" &
done
wait
}
provision() {
- nodes=(`docker-compose ps -q`)
- for node in ${nodes[*]}; do
+ for node in ${NODES[*]}; do
bigtop-puppet $node &
done
wait
}
smoke-tests() {
- nodes=(`docker-compose ps -q`)
- hadoop_head_node=${nodes:0:12}
+ hadoop_head_node=${NODES:0:12}
smoke_test_components="`echo $(get-yaml-config smoke_test_components) | sed 's/ /,/g'`"
docker exec $hadoop_head_node bash -c "bash -x /bigtop-home/bigtop-deploy/vm/utils/smoke-tests.sh $smoke_test_components"
}
destroy() {
- docker-compose stop
- docker-compose rm -f
- rm -rvf ./config
+ if [ -n "$PROVISION_ID" ]; then
+ docker-compose -p $PROVISION_ID stop
+ docker-compose -p $PROVISION_ID rm -f
+ fi
+ rm -rvf ./config .provision_id
}
bigtop-puppet() {
@@ -147,8 +150,7 @@ execute() {
if [[ $1 =~ $re ]] ; then
no=$1
shift
- nodes=(`docker-compose ps -q`)
- docker exec -ti ${nodes[$((no-1))]} $@
+ docker exec -ti ${NODES[$((no-1))]} $@
else
name=$1
shift
@@ -166,6 +168,10 @@ env-check() {
ruby -v || exit 1
}
+list() {
+ docker-compose -p $PROVISION_ID ps
+}
+
PROG=`basename $0`
if [ $# -eq 0 ]; then
@@ -173,6 +179,15 @@ if [ $# -eq 0 ]; then
fi
yamlconf="config.yaml"
+
+BIGTOP_PUPPET_DIR=../../bigtop-deploy/puppet
+if [ -e .provision_id ]; then
+ PROVISION_ID=`cat .provision_id`
+fi
+if [ -n "$PROVISION_ID" ]; then
+ NODES=`docker-compose -p $PROVISION_ID ps -q`
+fi
+
while [ $# -gt 0 ]; do
case "$1" in
-c|--create)
@@ -204,6 +219,9 @@ while [ $# -gt 0 ]; do
-E|--env-check)
env-check
shift;;
+ -l|--list)
+ list
+ shift;;
-p|--provision)
provision
shift;;