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 ()