diff options
author | Martin Schwenke <martin@meltin.net> | 2014-06-30 16:39:15 +1000 |
---|---|---|
committer | Martin Schwenke <martin@meltin.net> | 2014-07-02 20:26:52 +1000 |
commit | fa26aa2e805ff739f3969892e7e302daa1eaef60 (patch) | |
tree | 616e4ec9adb66acd6c526f918e1f218e8e0f1d88 /autocluster | |
parent | ec85e5975cba4ebf0db5906562cf0d8198dcd569 (diff) | |
download | autocluster-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-x | autocluster | 81 |
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 () |