stork 0.2.0.pre → 0.3.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +6 -6
- data/README.md +1 -53
- data/Rakefile +1 -3
- data/lib/stork/builder.rb +1 -15
- data/lib/stork/client/plugins/host_show.rb +0 -2
- data/lib/stork/collections.rb +0 -4
- data/lib/stork/configuration.rb +0 -1
- data/lib/stork/database.rb +1 -1
- data/lib/stork/deploy/snippet_binding.rb +0 -10
- data/lib/stork/plugin.rb +1 -1
- data/lib/stork/resource/base.rb +25 -0
- data/lib/stork/resource/host.rb +15 -31
- data/lib/stork/resource/interface.rb +1 -1
- data/lib/stork/resource/network.rb +12 -0
- data/lib/stork/resources.rb +0 -1
- data/lib/stork/version.rb +1 -1
- data/specs/builder_spec.rb +0 -1
- data/specs/collections_spec.rb +0 -4
- data/specs/kickstart_spec.rb +2 -3
- data/specs/resource_host_spec.rb +19 -27
- data/specs/resource_interface_spec.rb +22 -1
- data/specs/resource_layout_spec.rb +3 -3
- data/specs/resource_network_spec.rb +56 -0
- data/specs/scripts/kssetup.sh +13 -21
- data/specs/scripts/ksvalidate.sh +9 -14
- data/specs/scripts/requirements.txt +8 -0
- data/specs/server_spec.rb +2 -2
- data/specs/stork/bundles/hosts/example.org.rb +5 -16
- data/specs/stork/bundles/networks/internal-one.rb +7 -0
- data/specs/stork/bundles/networks/internal-two.rb +3 -0
- metadata +41 -52
- data/.ruby-gemset +0 -1
- data/box/Vagrantfile +0 -41
- data/box/bootstrap.sh +0 -317
- data/box/integration.sh +0 -33
- data/lib/stork/collection/chefs.rb +0 -6
- data/lib/stork/resource/chef.rb +0 -81
- data/specs/deploy_snippet_binding_spec.rb +0 -15
- data/specs/resource_chef_spec.rb +0 -122
- data/specs/stork/bundles/chefs/default.rb +0 -9
- data/specs/stork/bundles/networks/local.rb +0 -6
- data/specs/stork/bundles/networks/org.rb +0 -7
- data/specs/stork/bundles/snippets/chef-bootstrap.erb +0 -104
- data/specs/stork/bundles/snippets/chef-reconfigure.erb +0 -22
metadata
CHANGED
@@ -1,223 +1,223 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stork
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Lyon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: webrick
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rest-client
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: highline
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: mixlib-config
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '1.3'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.3'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: yard
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: minitest
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - ~>
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: 4.7.3
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - ~>
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 4.7.3
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: rack-test
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: simplecov
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- -
|
171
|
+
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: '0'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- -
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: coveralls
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- -
|
185
|
+
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: '0'
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- -
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: minitest-given
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- -
|
199
|
+
- - ">="
|
200
200
|
- !ruby/object:Gem::Version
|
201
201
|
version: '0'
|
202
202
|
type: :development
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- -
|
206
|
+
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: minitest-debugger
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- -
|
213
|
+
- - ">="
|
214
214
|
- !ruby/object:Gem::Version
|
215
215
|
version: '0'
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- -
|
220
|
+
- - ">="
|
221
221
|
- !ruby/object:Gem::Version
|
222
222
|
version: '0'
|
223
223
|
description: Autoinstallation and PXE management for Redhat/CentOS based system deployment.
|
@@ -229,10 +229,9 @@ executables:
|
|
229
229
|
extensions: []
|
230
230
|
extra_rdoc_files: []
|
231
231
|
files:
|
232
|
-
- .gitignore
|
233
|
-
- .ruby-
|
234
|
-
- .
|
235
|
-
- .travis.yml
|
232
|
+
- ".gitignore"
|
233
|
+
- ".ruby-version"
|
234
|
+
- ".travis.yml"
|
236
235
|
- Gemfile
|
237
236
|
- Gemfile.lock
|
238
237
|
- LICENSE
|
@@ -240,9 +239,6 @@ files:
|
|
240
239
|
- Rakefile
|
241
240
|
- bin/stork
|
242
241
|
- bin/storkctl
|
243
|
-
- box/Vagrantfile
|
244
|
-
- box/bootstrap.sh
|
245
|
-
- box/integration.sh
|
246
242
|
- lib/stork.rb
|
247
243
|
- lib/stork/builder.rb
|
248
244
|
- lib/stork/client/plugins/host_actions.rb
|
@@ -253,7 +249,6 @@ files:
|
|
253
249
|
- lib/stork/client/plugins/host_show.rb
|
254
250
|
- lib/stork/client/plugins/host_sync.rb
|
255
251
|
- lib/stork/collection/base.rb
|
256
|
-
- lib/stork/collection/chefs.rb
|
257
252
|
- lib/stork/collection/distros.rb
|
258
253
|
- lib/stork/collection/hosts.rb
|
259
254
|
- lib/stork/collection/layouts.rb
|
@@ -271,7 +266,6 @@ files:
|
|
271
266
|
- lib/stork/plugin.rb
|
272
267
|
- lib/stork/pxe.rb
|
273
268
|
- lib/stork/resource/base.rb
|
274
|
-
- lib/stork/resource/chef.rb
|
275
269
|
- lib/stork/resource/delegator.rb
|
276
270
|
- lib/stork/resource/distro.rb
|
277
271
|
- lib/stork/resource/firewall.rb
|
@@ -295,12 +289,10 @@ files:
|
|
295
289
|
- specs/collections_spec.rb
|
296
290
|
- specs/configuration_spec.rb
|
297
291
|
- specs/database_spec.rb
|
298
|
-
- specs/deploy_snippet_binding_spec.rb
|
299
292
|
- specs/keys/snakeoil-root.pem
|
300
293
|
- specs/keys/snakeoil-validation.pem
|
301
294
|
- specs/kickstart_spec.rb
|
302
295
|
- specs/pxe_spec.rb
|
303
|
-
- specs/resource_chef_spec.rb
|
304
296
|
- specs/resource_distro_spec.rb
|
305
297
|
- specs/resource_firewall_spec.rb
|
306
298
|
- specs/resource_host_spec.rb
|
@@ -317,19 +309,17 @@ files:
|
|
317
309
|
- specs/resource_volume_group_spec.rb
|
318
310
|
- specs/scripts/kssetup.sh
|
319
311
|
- specs/scripts/ksvalidate.sh
|
312
|
+
- specs/scripts/requirements.txt
|
320
313
|
- specs/server_spec.rb
|
321
314
|
- specs/spec_helper.rb
|
322
315
|
- specs/stork/authorized_keys
|
323
|
-
- specs/stork/bundles/chefs/default.rb
|
324
316
|
- specs/stork/bundles/distros/centos.rb
|
325
317
|
- specs/stork/bundles/hosts/example.org.rb
|
326
318
|
- specs/stork/bundles/layouts/home.rb
|
327
|
-
- specs/stork/bundles/networks/
|
328
|
-
- specs/stork/bundles/networks/
|
319
|
+
- specs/stork/bundles/networks/internal-one.rb
|
320
|
+
- specs/stork/bundles/networks/internal-two.rb
|
329
321
|
- specs/stork/bundles/public/file.txt
|
330
322
|
- specs/stork/bundles/snippets/authorized-keys.erb
|
331
|
-
- specs/stork/bundles/snippets/chef-bootstrap.erb
|
332
|
-
- specs/stork/bundles/snippets/chef-reconfigure.erb
|
333
323
|
- specs/stork/bundles/snippets/etc-hosts.erb
|
334
324
|
- specs/stork/bundles/snippets/network-config.erb
|
335
325
|
- specs/stork/bundles/snippets/noop.erb
|
@@ -350,19 +340,18 @@ require_paths:
|
|
350
340
|
- lib
|
351
341
|
required_ruby_version: !ruby/object:Gem::Requirement
|
352
342
|
requirements:
|
353
|
-
- -
|
343
|
+
- - ">="
|
354
344
|
- !ruby/object:Gem::Version
|
355
345
|
version: '0'
|
356
346
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
357
347
|
requirements:
|
358
|
-
- -
|
348
|
+
- - ">"
|
359
349
|
- !ruby/object:Gem::Version
|
360
350
|
version: 1.3.1
|
361
351
|
requirements: []
|
362
352
|
rubyforge_project:
|
363
|
-
rubygems_version: 2.
|
353
|
+
rubygems_version: 2.6.14.1
|
364
354
|
signing_key:
|
365
355
|
specification_version: 4
|
366
356
|
summary: Autoinstallation and PXE management.
|
367
357
|
test_files: []
|
368
|
-
has_rdoc:
|
data/.ruby-gemset
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
stork
|
data/box/Vagrantfile
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# -*- mode: ruby -*-
|
2
|
-
# vi: set ft=ruby :
|
3
|
-
|
4
|
-
VAGRANTFILE_API_VERSION = "2"
|
5
|
-
|
6
|
-
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
7
|
-
config.vm.box = "centos-6.5"
|
8
|
-
config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"
|
9
|
-
config.vm.provision :shell, path: "bootstrap.sh"
|
10
|
-
|
11
|
-
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
12
|
-
config.vm.network "private_network", ip: "10.10.1.10"
|
13
|
-
|
14
|
-
# config.vm.network "public_network"
|
15
|
-
# config.ssh.forward_agent = true
|
16
|
-
|
17
|
-
config.vm.synced_folder File.expand_path(File.dirname(__FILE__) + "/../"), "/mnt/stork"
|
18
|
-
|
19
|
-
config.vm.provider "virtualbox" do |vb|
|
20
|
-
# Don't boot with headless mode
|
21
|
-
vb.memory = 1024
|
22
|
-
# Use VBoxManage to customize the VM. For example to change memory:
|
23
|
-
vb.customize ["modifyvm", :id, "--memory", "1024"]
|
24
|
-
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
|
25
|
-
end
|
26
|
-
|
27
|
-
# Enable provisioning with chef solo, specifying a cookbooks path, roles
|
28
|
-
# path, and data_bags path (all relative to this Vagrantfile), and adding
|
29
|
-
# some recipes and/or roles.
|
30
|
-
#
|
31
|
-
# config.vm.provision "chef_solo" do |chef|
|
32
|
-
# chef.cookbooks_path = "../my-recipes/cookbooks"
|
33
|
-
# chef.roles_path = "../my-recipes/roles"
|
34
|
-
# chef.data_bags_path = "../my-recipes/data_bags"
|
35
|
-
# chef.add_recipe "mysql"
|
36
|
-
# chef.add_role "web"
|
37
|
-
#
|
38
|
-
# # You may also specify custom JSON attributes:
|
39
|
-
# chef.json = { mysql_password: "foo" }
|
40
|
-
# end
|
41
|
-
end
|
data/box/bootstrap.sh
DELETED
@@ -1,317 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
# bootstrap.sh
|
3
|
-
# set -x
|
4
|
-
###############################################################################
|
5
|
-
# Install and start ntp
|
6
|
-
###############################################################################
|
7
|
-
yum -y install ntp
|
8
|
-
ntpdate pool.ntp.org
|
9
|
-
/etc/init.d/ntpd start && chkconfig ntpd on
|
10
|
-
|
11
|
-
###############################################################################
|
12
|
-
# Install tftp and configure it for PXE boot.
|
13
|
-
###############################################################################
|
14
|
-
yum -y install syslinux-tftpboot tftp-server
|
15
|
-
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/.
|
16
|
-
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/.
|
17
|
-
mkdir /var/lib/tftpboot/pxelinux.cfg
|
18
|
-
mkdir /var/lib/tftpboot/distros
|
19
|
-
sed -i -re 's/(\s+disable\s+=) yes/\1 no/' /etc/xinetd.d/tftp
|
20
|
-
service xinetd start && chkconfig xinetd on
|
21
|
-
# Put the default in there.
|
22
|
-
cat > /var/lib/tftpboot/pxelinux.cfg/default << 'EOF'
|
23
|
-
DEFAULT local
|
24
|
-
PROMPT 0
|
25
|
-
TIMEOUT 0
|
26
|
-
TOTALTIMEOUT 0
|
27
|
-
ONTIMEOUT local
|
28
|
-
LABEL local
|
29
|
-
LOCALBOOT -1
|
30
|
-
EOF
|
31
|
-
|
32
|
-
# Download a couple of netboot distros
|
33
|
-
MIRROR5="http://mirror.centos.org/centos-5/5.10/os/x86_64/images/pxeboot"
|
34
|
-
MIRROR6="http://mirror.centos.org/centos-6/6.5/os/x86_64/images/pxeboot"
|
35
|
-
pushd /var/lib/tftpboot/distros
|
36
|
-
echo "Downloading a few pxeboot kernels and images"
|
37
|
-
curl -s $MIRROR5/initrd.img > centos-5.10-initrd.img
|
38
|
-
curl -s $MIRROR5/vmlinuz > centos-5.10-vmlinuz
|
39
|
-
curl -s $MIRROR6/initrd.img > centos-6.5-initrd.img
|
40
|
-
curl -s $MIRROR6/vmlinuz > centos-6.5-vmlinuz
|
41
|
-
popd
|
42
|
-
|
43
|
-
###############################################################################
|
44
|
-
# Install dhcp. and configure it.
|
45
|
-
###############################################################################
|
46
|
-
yum -y install dhcp
|
47
|
-
cat > /etc/dhcp/dhcpd.conf << 'EOF'
|
48
|
-
default-lease-time 600;
|
49
|
-
max-lease-time 7200;
|
50
|
-
authoritative;
|
51
|
-
log-facility local7;
|
52
|
-
|
53
|
-
subnet 10.10.1.0 netmask 255.255.255.0 {
|
54
|
-
range 10.10.1.120 10.10.1.200;
|
55
|
-
allow booting;
|
56
|
-
allow bootp;
|
57
|
-
next-server 10.10.1.10;
|
58
|
-
filename "pxelinux.0";
|
59
|
-
option domain-name "vbox.local";
|
60
|
-
option domain-name-servers 10.10.1.10;
|
61
|
-
option routers 10.10.1.10;
|
62
|
-
option broadcast-address 10.10.1.255;
|
63
|
-
host head.vbox.local {
|
64
|
-
option host-name "head";
|
65
|
-
option domain-name "vbox.local";
|
66
|
-
ddns-hostname "head";
|
67
|
-
ddns-domainname "vbox.local";
|
68
|
-
hardware ethernet 02:16:3f:c3:00:02;
|
69
|
-
fixed-address 10.10.1.101;
|
70
|
-
}
|
71
|
-
host node-101.vbox.local {
|
72
|
-
option host-name "node-101";
|
73
|
-
option domain-name "vbox.local";
|
74
|
-
ddns-hostname "node-101";
|
75
|
-
ddns-domainname "vbox.local";
|
76
|
-
hardware ethernet 02:16:3f:c3:01:01;
|
77
|
-
fixed-address 10.10.1.101;
|
78
|
-
}
|
79
|
-
host node-102.vbox.local {
|
80
|
-
option host-name "node-102";
|
81
|
-
option domain-name "vbox.local";
|
82
|
-
ddns-hostname "node-102";
|
83
|
-
ddns-domainname "vbox.local";
|
84
|
-
hardware ethernet 02:16:3f:c3:01:02;
|
85
|
-
fixed-address 10.10.1.102;
|
86
|
-
}
|
87
|
-
host node-103.vbox.local {
|
88
|
-
option host-name "node-103";
|
89
|
-
option domain-name "vbox.local";
|
90
|
-
ddns-hostname "node-103";
|
91
|
-
ddns-domainname "vbox.local";
|
92
|
-
hardware ethernet 02:16:3f:c3:01:03;
|
93
|
-
fixed-address 10.10.1.103;
|
94
|
-
}
|
95
|
-
}
|
96
|
-
EOF
|
97
|
-
/etc/init.d/dhcpd start && chkconfig dhcpd on
|
98
|
-
|
99
|
-
###############################################################################
|
100
|
-
# Install DNS and configure it and make some network adjustments.
|
101
|
-
###############################################################################
|
102
|
-
yum -y install bind bind-utils
|
103
|
-
|
104
|
-
cat > /etc/named.conf << 'EOF'
|
105
|
-
options {
|
106
|
-
listen-on port 53 { 127.0.0.1; 10.10.1.10; };
|
107
|
-
directory "/var/named";
|
108
|
-
version "0.nunya";
|
109
|
-
forwarders { 10.0.2.3; };
|
110
|
-
allow-transfer { none; };
|
111
|
-
allow-query { localhost; };
|
112
|
-
statistics-file "data/named_stats.txt";
|
113
|
-
memstatistics-file "data/named_mem_stats.txt";
|
114
|
-
dnssec-enable no;
|
115
|
-
dnssec-validation no;
|
116
|
-
};
|
117
|
-
|
118
|
-
logging {
|
119
|
-
channel default_debug {
|
120
|
-
file "data/named.run";
|
121
|
-
severity dynamic;
|
122
|
-
};
|
123
|
-
};
|
124
|
-
|
125
|
-
zone "." IN {
|
126
|
-
type hint;
|
127
|
-
file "named.ca";
|
128
|
-
};
|
129
|
-
|
130
|
-
zone "vbox.local" IN {
|
131
|
-
type master;
|
132
|
-
file "vbox.local.zone";
|
133
|
-
allow-update { none; };
|
134
|
-
};
|
135
|
-
|
136
|
-
zone "1.10.10.in-addr.arpa" IN {
|
137
|
-
type master;
|
138
|
-
file "vbox.local.db";
|
139
|
-
allow-update { none; };
|
140
|
-
};
|
141
|
-
|
142
|
-
include "/etc/named.rfc1912.zones";
|
143
|
-
include "/etc/named.root.key";
|
144
|
-
EOF
|
145
|
-
|
146
|
-
cat > /var/named/vbox.local.zone << 'EOF'
|
147
|
-
$TTL 1D;
|
148
|
-
$ORIGIN vbox.local.
|
149
|
-
@ IN SOA @ root.vbox.local. (
|
150
|
-
2014062501 ; serial
|
151
|
-
3h ; refresh
|
152
|
-
1w ; retry
|
153
|
-
1w ; expire
|
154
|
-
3h) ; min
|
155
|
-
@ 1D IN NS stork
|
156
|
-
stork 1D IN A 10.10.1.10
|
157
|
-
chef 1D IN CNAME stork
|
158
|
-
head 1D IN A 10.10.1.100
|
159
|
-
node-101 1D IN A 10.10.1.101
|
160
|
-
node-102 1D IN A 10.10.1.102
|
161
|
-
node-103 1D IN A 10.10.1.103
|
162
|
-
EOF
|
163
|
-
|
164
|
-
cat > /var/named/vbox.local.db << 'EOF'
|
165
|
-
$TTL 1D;
|
166
|
-
@ IN SOA stork.vbox.local. root.vbox.local. (
|
167
|
-
2014062501 ; serial
|
168
|
-
3H ; refresh
|
169
|
-
15 ; retry
|
170
|
-
1w ; expire
|
171
|
-
3h) ; min
|
172
|
-
NS stork.vbox.local.
|
173
|
-
10 PTR stork.vbox.local.
|
174
|
-
100 PTR head.vbox.local.
|
175
|
-
101 PTR node-101.vbox.local.
|
176
|
-
102 PTR node-102.vbox.local.
|
177
|
-
103 PTR node-103.vbox.local.
|
178
|
-
EOF
|
179
|
-
|
180
|
-
/etc/init.d/named start && chkconfig named on
|
181
|
-
|
182
|
-
###############################################################################
|
183
|
-
# Create ssh keys
|
184
|
-
###############################################################################
|
185
|
-
pushd ~vagrant/.ssh
|
186
|
-
ssh-keygen -t rsa -N "" -f id_rsa -N ""
|
187
|
-
chown vagrant:vagrant id_rsa*
|
188
|
-
popd
|
189
|
-
|
190
|
-
###############################################################################
|
191
|
-
# Chef setup with chef server and a few basic cookbooks for testing.
|
192
|
-
###############################################################################
|
193
|
-
pushd /tmp
|
194
|
-
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.12-1.el6.x86_64.rpm
|
195
|
-
yum -y localinstall chef-server-11.0.12-1.el6.x86_64.rpm
|
196
|
-
chef-server-ctl reconfigure
|
197
|
-
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.12.8-2.el6.x86_64.rpm
|
198
|
-
yum -y localinstall chef-11.12.8-2.el6.x86_64.rpm
|
199
|
-
popd
|
200
|
-
|
201
|
-
# Just utilize the admin user that is already created
|
202
|
-
pushd /root
|
203
|
-
mkdir .chef
|
204
|
-
cat > .chef/knife.rb << 'EOF'
|
205
|
-
log_level :info
|
206
|
-
log_location STDOUT
|
207
|
-
node_name 'admin'
|
208
|
-
client_key '/etc/chef-server/admin.pem'
|
209
|
-
validation_client_name 'chef-validator'
|
210
|
-
validation_key '/etc/chef-server/chef-validator.pem'
|
211
|
-
chef_server_url 'https://stork.vbox.local:443'
|
212
|
-
syntax_check_cache_path '/root/.chef/syntax_check_cache'
|
213
|
-
EOF
|
214
|
-
popd
|
215
|
-
|
216
|
-
###############################################################################
|
217
|
-
# Set up EPEL and a few tools
|
218
|
-
###############################################################################
|
219
|
-
pushd /tmp
|
220
|
-
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
|
221
|
-
yum -y localinstall epel-release-6-8.noarch.rpm
|
222
|
-
yum -y install git sqlite-devel
|
223
|
-
popd
|
224
|
-
|
225
|
-
###############################################################################
|
226
|
-
# RVM setup and Ruby 2.0.0 installation
|
227
|
-
###############################################################################
|
228
|
-
curl -sSL https://get.rvm.io | bash -s stable
|
229
|
-
source /usr/local/rvm/scripts/rvm
|
230
|
-
type rvm | head -1
|
231
|
-
rvm install 2.0.0
|
232
|
-
|
233
|
-
###############################################################################
|
234
|
-
# Install and start stork
|
235
|
-
###############################################################################
|
236
|
-
pushd /mnt/stork
|
237
|
-
rvm use 2.0.0@stork --create
|
238
|
-
su vagrant -c 'rake build'
|
239
|
-
gem install pkg/*.gem --no-rdoc --no-ri
|
240
|
-
popd
|
241
|
-
|
242
|
-
# Create the configuration
|
243
|
-
mkdir /etc/stork
|
244
|
-
pushd /etc/stork
|
245
|
-
|
246
|
-
cat > /etc/stork/config.rb << 'EOF'
|
247
|
-
# Stork configuration file"
|
248
|
-
path "/etc/stork"
|
249
|
-
bundle_path "/etc/stork/bundles"
|
250
|
-
authorized_keys_file "/etc/stork/authorized_keys"
|
251
|
-
pxe_path "/var/lib/tftpboot/pxelinux.cfg"
|
252
|
-
log_file "/var/log/stork.log"
|
253
|
-
pid_file "/var/log/stork.pid"
|
254
|
-
server "stork.vbox.local"
|
255
|
-
port 5000
|
256
|
-
bind "0.0.0.0"
|
257
|
-
timezone "America/Los_Angeles"
|
258
|
-
EOF
|
259
|
-
|
260
|
-
# Create the authorized keys file
|
261
|
-
cat /home/vagrant/.ssh/id_rsa.pub > /etc/stork/authorized_keys
|
262
|
-
# Get the example bundles
|
263
|
-
git clone https://github.com/rlyon/stork-bundle.git bundles
|
264
|
-
|
265
|
-
cat > /usr/bin/stork_start << 'EOF'
|
266
|
-
#!/bin/bash
|
267
|
-
source /usr/local/rvm/scripts/rvm
|
268
|
-
rvm use 2.0.0@stork
|
269
|
-
storkctl start
|
270
|
-
EOF
|
271
|
-
chmod 755 /usr/bin/stork_start
|
272
|
-
|
273
|
-
cat > /usr/bin/stork_update << 'EOF'
|
274
|
-
#!/bin/bash
|
275
|
-
source /usr/local/rvm/scripts/rvm
|
276
|
-
rvm use 2.0.0@stork
|
277
|
-
cd /mnt/stork
|
278
|
-
rake install
|
279
|
-
EOF
|
280
|
-
chmod 755 /usr/bin/stork_update
|
281
|
-
|
282
|
-
mkdir ~vagrant/.stork
|
283
|
-
ln -s /etc/stork/config.rb ~vagrant/.stork/client.rb
|
284
|
-
chown -R vagrant:vagrant ~vagrant/.stork
|
285
|
-
|
286
|
-
# Make sure that RVM uses the system ruby as default.
|
287
|
-
rvm reset
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
###############################################################################
|
292
|
-
# Networking adjustments
|
293
|
-
###############################################################################
|
294
|
-
echo "PEERDNS=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0
|
295
|
-
cat > /etc/resolv.conf << 'EOF'
|
296
|
-
options single-request-reopen
|
297
|
-
nameserver 127.0.0.1
|
298
|
-
EOF
|
299
|
-
|
300
|
-
/etc/init.d/network restart
|
301
|
-
|
302
|
-
###############################################################################
|
303
|
-
# Turn on NATing so we can use this as the gateway for our isolated test vms
|
304
|
-
###############################################################################
|
305
|
-
sed -i -re 's/(net.ipv4.ip_forward\s+=) 0/\1 1/' /etc/sysctl.conf
|
306
|
-
sysctl -p /etc/sysctl.conf
|
307
|
-
/etc/init.d/iptables start
|
308
|
-
iptables -A FORWARD -i eth1 -j ACCEPT
|
309
|
-
iptables -A FORWARD -o eth1 -j ACCEPT
|
310
|
-
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
311
|
-
/etc/init.d/iptables save
|
312
|
-
|
313
|
-
###############################################################################
|
314
|
-
# Since we now have a TFTP, SysLinux, DHCP, DNS, Nating and Stork shared on a
|
315
|
-
# mounted directory, we can set up a simple vbox config which will enable us to
|
316
|
-
# go through the entire install process on a laptop.
|
317
|
-
###############################################################################
|