forked from beekhof/osp-ha-deploy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
basic-cluster.scenario
103 lines (87 loc) · 3.14 KB
/
basic-cluster.scenario
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# This file can be used directly by 'phd', see 'build-all.sh' in this
# directory for how it can be invoked. The only requirement is a list
# of nodes you'd like it to modify.
#
# The scope of each command-block is controlled by the preceeding
# 'target' line.
#
# - target=all
# The commands are executed on evey node provided
#
# - target=local
# The commands are executed from the node hosting phd. When not
# using phd, they should be run from some other independant host
# (such as the puppet master)
#
# - target=$PHD_ENV_nodes{N}
# The commands are executed on the Nth node provided.
# For example, to run on only the first node would be target=$PHD_ENV_nodes1
#
# Tasks to be performed at this step include:
# - installing the cluster software
# - enabling the pcs daemon to allow remote management
# - setting a password for the hacluster user for use with pcs
# - authenticating to pcs on the other hosts with the hacluster user and password
# - creating and starting the cluster
# - configuring fencing using the multicast addresses specified for fence_virt on the bare metal hosts
#################################
# Scenario Requirements Section #
#################################
= VARIABLES =
PHD_VAR_env_password
#################################
# Scenario Requirements Section #
#################################
= REQUIREMENTS =
nodes: 1
######################
# Deployment Scripts #
######################
= SCRIPTS =
target=all
....
# install the packages
yum install -y pcs pacemaker corosync fence-agents-all resource-agents
# enable pcsd
systemctl enable pcsd
systemctl start pcsd
systemctl disable firewalld
systemctl stop firewalld
# set a password for hacluster user. password should be the same on all nodes
echo ${PHD_VAR_env_password} | passwd --stdin hacluster
....
target=$PHD_ENV_nodes1
....
short_nodes=""
for node in $PHD_ENV_nodes; do
short_nodes="${short_nodes} $(echo ${node} | sed s/\\..*//g)"
done
# autheticate nodes, requires all nodes to have pcsd up and running
# the -p option is used to give the password on command line and make it easier to script
pcs cluster auth $short_nodes -u hacluster -p ${PHD_VAR_env_password} --force
# Construct and start the cluster
# The cluster needs a unique name, base it on the first node's name
pcs cluster setup --force --name $(echo $PHD_ENV_nodes1 | sed -e s/[0-9]//g -e s/\\..*//g ) ${short_nodes}
pcs cluster enable --all
pcs cluster start --all
....
target=$PHD_ENV_nodes1
....
# Assumes bare metal nodes are:
# - named with a trailing offset
# - numbered sequentially
# - the first node is a proxy
# - total of three nodes
# - are configured with fence-virtd (see virt-hosts.scenario)
#
# If any of the above is not true, change the fencing devices below
# Set up the authkey
if [ ! -e $PHD_VAR_env_configdir/fence_xvm.key ]; then
echo $(openssl rand -hex 10) > $PHD_VAR_env_configdir/fence_xvm.key
fi
mkdir -p /etc/cluster
cp $PHD_VAR_env_configdir/fence_xvm.key /etc/cluster/fence_xvm.key
pcs stonith create fence1 fence_xvm multicast_address=225.0.0.2
pcs stonith create fence2 fence_xvm multicast_address=225.0.0.3
pcs stonith create fence3 fence_xvm multicast_address=225.0.0.4
....