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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +6 -6
  4. data/README.md +1 -53
  5. data/Rakefile +1 -3
  6. data/lib/stork/builder.rb +1 -15
  7. data/lib/stork/client/plugins/host_show.rb +0 -2
  8. data/lib/stork/collections.rb +0 -4
  9. data/lib/stork/configuration.rb +0 -1
  10. data/lib/stork/database.rb +1 -1
  11. data/lib/stork/deploy/snippet_binding.rb +0 -10
  12. data/lib/stork/plugin.rb +1 -1
  13. data/lib/stork/resource/base.rb +25 -0
  14. data/lib/stork/resource/host.rb +15 -31
  15. data/lib/stork/resource/interface.rb +1 -1
  16. data/lib/stork/resource/network.rb +12 -0
  17. data/lib/stork/resources.rb +0 -1
  18. data/lib/stork/version.rb +1 -1
  19. data/specs/builder_spec.rb +0 -1
  20. data/specs/collections_spec.rb +0 -4
  21. data/specs/kickstart_spec.rb +2 -3
  22. data/specs/resource_host_spec.rb +19 -27
  23. data/specs/resource_interface_spec.rb +22 -1
  24. data/specs/resource_layout_spec.rb +3 -3
  25. data/specs/resource_network_spec.rb +56 -0
  26. data/specs/scripts/kssetup.sh +13 -21
  27. data/specs/scripts/ksvalidate.sh +9 -14
  28. data/specs/scripts/requirements.txt +8 -0
  29. data/specs/server_spec.rb +2 -2
  30. data/specs/stork/bundles/hosts/example.org.rb +5 -16
  31. data/specs/stork/bundles/networks/internal-one.rb +7 -0
  32. data/specs/stork/bundles/networks/internal-two.rb +3 -0
  33. metadata +41 -52
  34. data/.ruby-gemset +0 -1
  35. data/box/Vagrantfile +0 -41
  36. data/box/bootstrap.sh +0 -317
  37. data/box/integration.sh +0 -33
  38. data/lib/stork/collection/chefs.rb +0 -6
  39. data/lib/stork/resource/chef.rb +0 -81
  40. data/specs/deploy_snippet_binding_spec.rb +0 -15
  41. data/specs/resource_chef_spec.rb +0 -122
  42. data/specs/stork/bundles/chefs/default.rb +0 -9
  43. data/specs/stork/bundles/networks/local.rb +0 -6
  44. data/specs/stork/bundles/networks/org.rb +0 -7
  45. data/specs/stork/bundles/snippets/chef-bootstrap.erb +0 -104
  46. 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.2.0.pre
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: 2014-09-23 00:00:00.000000000 Z
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-gemset
234
- - .ruby-version
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/local.rb
328
- - specs/stork/bundles/networks/org.rb
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.2.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:
@@ -1 +0,0 @@
1
- stork
@@ -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
@@ -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
- ###############################################################################