summaryrefslogtreecommitdiffstats
path: root/autocluster
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2014-06-30 16:39:15 +1000
committerMartin Schwenke <martin@meltin.net>2014-07-02 20:26:52 +1000
commitfa26aa2e805ff739f3969892e7e302daa1eaef60 (patch)
tree616e4ec9adb66acd6c526f918e1f218e8e0f1d88 /autocluster
parentec85e5975cba4ebf0db5906562cf0d8198dcd569 (diff)
downloadautocluster-fa26aa2e805ff739f3969892e7e302daa1eaef60.tar.gz
autocluster-fa26aa2e805ff739f3969892e7e302daa1eaef60.tar.xz
autocluster-fa26aa2e805ff739f3969892e7e302daa1eaef60.zip
Rework cluster_setup() to use node types instead of $CLUSTER_TYPE
* Remove configuration variable CLUSTER_TYPE * Add "build" node type * Rename setup scripts for "ad" and "build" node type * Separate out some setup_node_nas.sh from setup_cluster_nas.sh * Make install_packages.sh and cluster_setup.sh more verbose * Separate out clusterfs_setup.sh Signed-off-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'autocluster')
-rwxr-xr-xautocluster81
1 files changed, 51 insertions, 30 deletions
diff --git a/autocluster b/autocluster
index e885037..6793f8c 100755
--- a/autocluster
+++ b/autocluster
@@ -596,46 +596,67 @@ cluster_boot ()
echo ""
}
+cluster_setup_tasks_DEFAULT ()
+{
+ local stage="$1"
+
+ # By default nodes have no tasks
+ case "$stage" in
+ install_packages) echo "" ;;
+ setup_clusterfs) echo "" ;;
+ setup_node) echo "" ;;
+ setup_cluster) echo "" ;;
+ esac
+}
+
cluster_setup ()
{
announce "cluster setup \"${CLUSTER}\""
[ -n "$CLUSTER" ] || die "\$CLUSTER not set"
- local install_tasks=""
- local setup_tasks=""
-
- case "$CLUSTER_TYPE" in
- "build")
- install_tasks="clusterfs build"
- setup_tasks="build"
- ;;
- "ad")
- install_tasks="ad_server"
- setup_tasks="ad_server"
- ;;
- "samba")
- install_tasks="clusterfs nas"
- setup_tasks="clusterfs nas"
- ;;
- esac
-
local ssh="ssh -o StrictHostKeyChecking=no"
+ local setup_clusterfs_done=false
+ local setup_cluster_done=false
- if [ -n "$install_tasks" ] ; then
- [ -n "$CLUSTER_PATTERN" ] || CLUSTER_PATTERN="$CLUSTER"
+ _cluster_setup_do_stage ()
+ {
+ local stage="$1"
+ local type="$2"
+ local ip_offset="$3"
+ local name="$4"
+ local ctdb_node="$5"
+
+ local tasks=$(call_func cluster_setup_tasks "$type" "$stage")
+
+ if [ -n "$tasks" ] ; then
+ # These tasks are only done on 1 node
+ case "$stage" in
+ setup_clusterfs)
+ if $setup_clusterfs_done ; then
+ return
+ else
+ setup_clusterfs_done=true
+ fi
+ ;;
+ setup_cluster)
+ if $setup_cluster_done ; then
+ return
+ else
+ setup_cluster_done=true
+ fi
+ ;;
+ esac
- local nodes=$(vircmd dominfo "$CLUSTER_PATTERN" 2>/dev/null | \
- sed -n -e 's/Name: *//p')
+ $ssh "$name" "./scripts/${stage}.sh" $tasks
+ fi
- for i in $nodes ; do
- $ssh "$i" ./scripts/install_packages.sh $install_tasks
- done
- fi
+ }
- if [ -n "$setup_tasks" ] ; then
- local n1="${CLUSTER}n1"
- $ssh "$n1" ./scripts/setup_cluster.sh $setup_tasks
- fi
+ local stages="install_packages setup_clusterfs setup_node setup_cluster"
+ local stage
+ for stage in $stages ; do
+ for_each_node _cluster_setup_do_stage "$stage"
+ done
}
create_one_node ()