/
database-data.xml
237 lines (169 loc) · 7.61 KB
/
database-data.xml
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<?xml version="1.0" standalone="no"?>
<stack>
<description>
Populate cluster database with initial data
</description>
<si_copyright>
Copyright (c) 2006 - 2017 StackIQ Inc.
All rights reserved. stacki(r) v4.0 stacki.com
https://github.com/Teradata/stacki/blob/master/LICENSE.txt
</si_copyright>
<copyright>
Copyright (c) 2000 - 2010 The Regents of the University of California
All rights reserved. Rocks(r) v5.4 www.rocksclusters.org
https://github.com/Teradata/stacki/blob/master/LICENSE-ROCKS.txt
</copyright>
<post chroot="false">
cp /tmp/site.attrs /mnt/sysimage/tmp
chmod 400 /mnt/sysimage/tmp/site.attrs
cp /tmp/rolls.xml /mnt/sysimage/tmp
</post>
<post shell="python">
import os.path
if os.path.exists('/tmp/site.attrs'):
file = open('/tmp/site.attrs', 'r')
for line in file.readlines():
l = line.split(':', 1)
if len(l) == 2:
#
# key/value pairs
#
#
# there are some attributes that don't belong in the
# database
#
key = l[0].strip()
if key in [ 'hostname', 'rack', 'rank', 'os', 'nukedisks', 'nukecontroller' ]:
continue
v = l[1].strip()
value = ''
for i in v:
if i == "'":
value += "'"
value += '"'
value += "\\'"
value += '"'
value += "'"
else:
value += i
if key in [ 'Kickstart_PrivatePortableRootPassword', \
'Kickstart_PrivateRootPassword', \
'Kickstart_PrivateDjangoRootPassword' ]:
extra = 'shadow=y'
else:
extra = ''
os.system("/opt/stack/bin/stack set attr %s attr='%s' value='%s'"
% (extra, key, value))
file.close()
</post>
<post>
<!-- access control -->
/opt/stack/bin/stack set access command='*' group='apache'
/opt/stack/bin/stack set access command='list*' group='wheel'
<!-- insert the base box into the database -->
/opt/stack/bin/stack add box default
<!-- insert the base appliances into the database -->
/opt/stack/bin/stack add appliance frontend longname=Frontend node=server \
public=no
/opt/stack/bin/stack add appliance backend longname=Backend node=backend
<!-- manage firewall rules by default -->
/opt/stack/bin/stack set attr attr=firewall value=true
<!-- Set managed attribute for appliances.
This determines whether the appliances
can be ssh'ed into for running management
commands
-->
/opt/stack/bin/stack set attr attr=managed value=false
/opt/stack/bin/stack set appliance attr frontend attr=managed value=false
/opt/stack/bin/stack set appliance attr backend attr=managed value=true
<!-- networks -->
/opt/stack/bin/stack add network private \
address=&Kickstart_PrivateNetwork; \
mask=&Kickstart_PrivateNetmask; \
zone=&Kickstart_PrivateDNSDomain; \
gateway=&Kickstart_PrivateGateway; \
dns=false pxe=true
<!-- set default os to whatever the frontend is -->
/opt/stack/bin/stack set attr attr=os value=&os;
</post>
<!-- now setup the global PXE boot default actions -->
<post cond="'&release;' == '6.x'">
/opt/stack/bin/stack add bootaction default type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 ksdevice=bootif nonm"
/opt/stack/bin/stack add bootaction no-parallel-format type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 ksdevice=bootif nonm no-parallel-format"
/opt/stack/bin/stack add bootaction headless type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 headless vnc ksdevice=bootif nonm"
/opt/stack/bin/stack add bootaction rescue type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi ramdisk_size=150000 lang= devfs=nomount pxe kssendmac selinux=0 noipv6 rescue ksdevice=bootif nonm"
</post>
<post cond="'&release;' == '7.x'">
/opt/stack/bin/stack add bootaction default type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ip=bootif:dhcp inst.ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi inst.geoloc=0 inst.noverifyssl inst.ks.sendmac ramdisk_size=300000"
/opt/stack/bin/stack add bootaction no-parallel-format type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ip=bootif:dhcp inst.ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi inst.geoloc=0 inst.noverifyssl inst.ks.sendmac no-parallel-format ramdisk_size=300000"
/opt/stack/bin/stack add bootaction headless type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ip=bootif:dhcp inst.ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi inst.geoloc=0 inst.noverifyssl inst.ks.sendmac inst.vnc ramdisk_size=300000"
/opt/stack/bin/stack add bootaction rescue type=install \
kernel=vmlinuz-&version;-&release;-&arch; ramdisk=initrd.img-&version;-&release;-&arch; \
args="ip=bootif:dhcp inst.ks=https://&Kickstart_PrivateAddress;/install/sbin/profile.cgi inst.geoloc=0 inst.noverifyssl inst.ks.sendmac rescue ramdisk_size=300000"
</post>
<post>
/opt/stack/bin/stack add bootaction pxeflash type=os \
kernel="kernel memdisk bigraw" ramdisk=pxeflash.img args=keeppxe os=redhat
/opt/stack/bin/stack add bootaction default type=os \
kernel="com32 chain.c32" args=hd0 os=redhat
/opt/stack/bin/stack add bootaction localboot type=os \
kernel="localboot 0" os=redhat
/opt/stack/bin/stack add bootaction hplocalboot type=os \
kernel="localboot -1" os=redhat
/opt/stack/bin/stack add bootaction memtest type=os \
kernel="kernel memtest" os=redhat
<!-- frontend host -->
/opt/stack/bin/stack "add host" &Kickstart_PrivateHostname; \
appliance=frontend rack=0 rank=0
<!-- routes
multicast (bottom 255 addresses only)
broadcast
default gateway (frontend)
default gateway (backend nodes)
-->
/opt/stack/bin/stack add route address=224.0.0.0 gateway=private netmask=255.255.255.0
/opt/stack/bin/stack add route address=255.255.255.255 gateway=private netmask=255.255.255.255
<!-- frontend private network -->
/opt/stack/bin/stack add host interface &Kickstart_PrivateHostname; \
network=private \
interface=&Kickstart_PrivateInterface; \
mac=&Kickstart_PrivateEthernet; \
ip=&Kickstart_PrivateAddress; \
name=&Kickstart_PrivateHostname;
/opt/stack/bin/stack set host interface default &Kickstart_PrivateHostname; \
interface=&Kickstart_PrivateInterface; \
default=true
<!-- SSH settings -->
/opt/stack/bin/stack set attr attr=ssh.use_dns value=true
/opt/stack/bin/stack set attr attr=sync.ssh.authkey value=true
<!-- insert-ethers base numbers -->
/opt/stack/bin/stack set attr attr=discovery.base.rank value=0
/opt/stack/bin/stack set attr attr=discovery.base.rack value=0
<!-- use long passwords in the database -->
<file name="/tmp/my.cnf" expr="grep -v '^old_passwords' /etc/my.cnf"/>
<file name="/etc/my.cnf" perms="644" expr="cat /tmp/my.cnf"/>
rm /tmp/my.cnf
</post>
<!--
now that all the host data is in the database, let's write /etc/hosts.
this will make the stack commands execute much faster because we won't
be waiting for DNS timeouts.
-->
<post>
/opt/stack/bin/stack report host > /etc/hosts
</post>
</stack>