forked from beekhof/osp-ha-deploy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
swift.scenario
136 lines (112 loc) · 5.56 KB
/
swift.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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# 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:
#################################
# Scenario Requirements Section #
#################################
= VARIABLES =
PHD_VAR_deployment
PHD_VAR_network_internal
#################################
# Scenario Requirements Section #
#################################
= REQUIREMENTS =
nodes: 1
######################
# Deployment Scripts #
######################
= SCRIPTS =
target=all
....
yum install -y openstack-swift-proxy openstack-utils python-swiftclient openstack-swift-container
....
target=all
....
openstack-config --set /etc/swift/proxy-server.conf filter:authtoken auth_host vip-keystone
openstack-config --set /etc/swift/proxy-server.conf filter:authtoken admin_tenant_name services
openstack-config --set /etc/swift/proxy-server.conf filter:authtoken admin_user swift
openstack-config --set /etc/swift/proxy-server.conf filter:authtoken admin_password swifttest
openstack-config --set /etc/swift/proxy-server.conf DEFAULT bind_ip $(ip addr show dev eth1 scope global | grep dynamic| sed -e 's#.*inet ##g' -e 's#/.*##g')
openstack-config --set /etc/swift/object-expirer.conf object-expirer concurrency 100
if [ $PHD_VAR_deployment = collapsed ]; then
openstack-config --set /etc/swift/proxy-server.conf filter:cache memcache_servers rhos6-node1:11211,rhos6-node1:11211,rhos6-node1:11211
openstack-config --set /etc/swift/object-expirer.conf filter:cache memcache_servers rhos6-node1:11211,rhos6-node1:11211,rhos6-node1:11211
else
openstack-config --set /etc/swift/proxy-server.conf filter:cache memcache_servers rhos6-memcache1:11211,rhos6-memcache1:11211,rhos6-memcache1:11211
openstack-config --set /etc/swift/object-expirer.conf filter:cache memcache_servers rhos6-memcache1:11211,rhos6-memcache1:11211,rhos6-memcache1:11211
fi
# ceilometer hook
cat >> /etc/swift/swift.conf << EOF
[filter:ceilometer]
use = egg:ceilometer#swift
[pipeline:main]
pipeline = healthcheck cache authtoken keystoneauth proxy-server ceilometer
EOF
# NOTE: you MUST refer to the swift-ring-builder documentation in order to
# configure prope data redundancy and set those values properly.
# This is just a generic example that will store 3 copies of the same data for
# proof-of-concept purposes.
swift-ring-builder /etc/swift/object.builder create 16 3 24
swift-ring-builder /etc/swift/container.builder create 16 3 24
swift-ring-builder /etc/swift/account.builder create 16 3 24
# .76,.77 and .78 are the addresses of rhos6-swift-brick{1,2,3}
# 'target' here comes from the swift-fs resource created on the proxy
# pcs resource create swift-fs Filesystem device="/local/swiftsource" directory="/local/swiftstorage/target" fstype="none" options="bind"
swift-ring-builder /etc/swift/account.builder add z1-${PHD_VAR_network_internal}.76:6202/target 10
swift-ring-builder /etc/swift/container.builder add z1-${PHD_VAR_network_internal}.76:6201/target 10
swift-ring-builder /etc/swift/object.builder add z1-${PHD_VAR_network_internal}.76:6200/target 10
swift-ring-builder /etc/swift/account.builder add z2-${PHD_VAR_network_internal}.77:6202/target 10
swift-ring-builder /etc/swift/container.builder add z2-${PHD_VAR_network_internal}.77:6201/target 10
swift-ring-builder /etc/swift/object.builder add z2-${PHD_VAR_network_internal}.77:6200/target 10
swift-ring-builder /etc/swift/account.builder add z3-${PHD_VAR_network_internal}.78:6202/target 10
swift-ring-builder /etc/swift/container.builder add z3-${PHD_VAR_network_internal}.78:6201/target 10
swift-ring-builder /etc/swift/object.builder add z3-${PHD_VAR_network_internal}.78:6200/target 10
swift-ring-builder /etc/swift/account.builder rebalance
swift-ring-builder /etc/swift/container.builder rebalance
swift-ring-builder /etc/swift/object.builder rebalance
chown -R root:swift /etc/swift
chown -R swift:swift /tmp/keystone-signing-swift
chown -R swift:swift /local
# is this still required?
mkdir -p /tmp/keystone-signing-swift
chown -R swift:swift /tmp/keystone-signing-swift
chmod 700 /tmp/keystone-signing-swift
....
target=local
....
# Invoke like this so that we can calculate the prefix and suffic once and set everywhere
# TODO: Make this a variable
pathprefix=$(openssl rand -hex 10)
pathsuffix=$(openssl rand -hex 10)
for node in $PHD_ENV_nodes; do
ssh $node -- openstack-config --set /etc/swift/swift.conf swift-hash swift_hash_path_prefix ${pathprefix};
ssh $node -- openstack-config --set /etc/swift/swift.conf swift-hash swift_hash_path_suffix ${pathsuffix};
ssh $node -- chown -R root:swift /etc/swift;
done
....
target=$PHD_ENV_nodes1
....
pcs resource create swift-proxy systemd:openstack-swift-proxy --clone interleave=true
pcs resource create swift-object-expirer systemd:openstack-swift-object-expirer
pcs constraint order start swift-proxy-clone then swift-object-expirer
if [ $PHD_VAR_deployment = collapsed ]; then
pcs constraint order start swift-account-clone then swift-proxy-clone
fi
....