set -e
+deploynode() {
+ if test $NODE = localhost ; then
+ sudo ./provision.sh --config local.params --roles ${NODES[$NODE]}
+ else
+ if ! ssh $NODE test -d arvados-setup ; then
+ ssh $NODE git init --bare arvados-setup.git
+ if ! git remote add $NODE $DEPLOY_USER@$NODE:arvados-setup.git ; then
+ git remote set-url $NODE $DEPLOY_USER@$NODE:arvados-setup.git
+ fi
+ git push $NODE $BRANCH
+ ssh $NODE git clone arvados-setup.git arvados-setup
+ fi
+
+ git push $NODE $BRANCH
+ ssh $NODE git -C arvados-setup checkout $BRANCH
+ ssh $NODE git -C arvados-setup pull
+
+ ssh $DEPLOY_USER@$NODE "cd arvados-setup && sudo ./provision.sh --config local.params --roles ${NODES[$NODE]}"
+ fi
+}
+
subcmd="$1"
if test -n "$subcmd" ; then
shift
echo "setup directory initialized, now go to $SETUPDIR, edit 'local.params' and 'local_config_dir' as needed, then run 'installer.sh deploy'"
;;
deploy)
+ NODE=$1
CONFIG_FILE=local.params
if ! test -s $CONFIG_FILE ; then
echo "Must be run from arvados-setup, maybe you need to 'initialize' first?"
set -x
+ BRANCH=$(git branch --show-current)
+
git add -A
if ! git diff --cached --exit-code ; then
git commit -m"prepare for deploy"
fi
- for NODE in "${!NODES[@]}"
- do
- if test $NODE = localhost ; then
- sudo ./provision.sh --config local.params --roles ${NODES[$NODE]}
- else
- if ! ssh $NODE test -d arvados-setup ; then
- ssh $NODE git init --bare arvados-setup.git
- if ! git remote add $NODE $DEPLOY_USER@$NODE:arvados-setup.git ; then
- git remote set-url $NODE $DEPLOY_USER@$NODE:arvados-setup.git
- fi
- git push $NODE master
- ssh $NODE git clone arvados-setup.git arvados-setup
- fi
-
- git push $NODE master
- ssh $NODE git -C arvados-setup pull
- ssh $DEPLOY_USER@$NODE "cd arvados-setup && sudo ./provision.sh --config local.params --roles ${NODES[$NODE]}"
- fi
- done
+ if test -z "$NODE"; then
+ for NODE in "${!NODES[@]}"
+ do
+ deploynode
+ done
+ else
+ deploynode
+ fi
;;
*)
echo "Arvados installer"