bosh-bootstrap 0.14.4 → 0.14.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1db1e4c9d26c75736374f95c83f8f4e83e2b6e6d
4
- data.tar.gz: 474aa72f98edcaed2359487fc0805b5c7d5a07f3
3
+ metadata.gz: adb4ce189053f551910a65c3696e327991235275
4
+ data.tar.gz: e6e6f0ef6d6ee0e5c0f336b92a6c17715a7bf064
5
5
  SHA512:
6
- metadata.gz: 9f5a0a079b6c45979830d32455c860ba7e6d9b475d260ca8e4357e8adeba174a09a4e3b19d1f4dfeaf46381d3762cba167e72f0c85a032db8b783e901cac62f9
7
- data.tar.gz: 76e4cf43cf5649fa63e7f78687825864f31e28626adb72ab440d2774eb4f82625228bb871307bd8dffc2a699129d4ee3f6473336399e9947600d8ac8707614fc
6
+ metadata.gz: b323094bce6d018e9693ee0c0a0b841fd20824a4674d9bd46a704577afa1c6834a1609b585be389fb2dde1033742fd960dd330ed1f98a862b6034408ba60f9ed
7
+ data.tar.gz: 00977695a6ed8a4cbdca9de8854152070bb8498bc66e0457d2a1ef9fc761ab74d84be3d03525ff7fbafa59deb3e0e4c52dd6e133d157af16dc22378e832090bb
data/ChangeLog.md CHANGED
@@ -18,6 +18,8 @@ v0.14
18
18
  - [aws] reuse existing bosh stemcell AMIs - automatically detects if a stemcell has been uploaded/converted into an AMI [v0.14.2]
19
19
  - [openstack] reuse existing bosh stemcell images - automatically detects if a stemcell has been uploaded/converted into an OpenStack image [v0.14.3]
20
20
  - [aws vpc] security groups are uniquely named per VPC [v0.14.4]
21
+ - [aws vpc] added dns recursor to vpc [v0.14.5]
22
+ - added ability to set dns recursor [v0.14.5]
21
23
 
22
24
  v0.13
23
25
  -----
@@ -2,6 +2,13 @@
2
2
  require "redcard"
3
3
  RedCard.verify :mri, :ruby, :rubinius, "1.9"
4
4
 
5
+ class ::Hash
6
+ def deep_merge(second)
7
+ merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
8
+ self.merge(second, &merger)
9
+ end
10
+ end
11
+
5
12
  module Bosh
6
13
  module Bootstrap
7
14
  end
@@ -21,6 +21,11 @@ module Bosh::Bootstrap::MicroboshProviders
21
21
  if az = settings.exists?("provider.az")
22
22
  data["resources"]["cloud_properties"]["availability_zone"] = az
23
23
  end
24
+ if vpc?
25
+ dns = settings.exists?("recursor") ? settings.recursor : vpc_dns(public_ip)
26
+ data["apply_spec"]["properties"]["dns"] = {}
27
+ data["apply_spec"]["properties"]["dns"]["recursor"] = dns
28
+ end
24
29
  data
25
30
  end
26
31
 
@@ -102,7 +107,7 @@ module Bosh::Bootstrap::MicroboshProviders
102
107
  def vpc?
103
108
  settings.address["subnet_id"]
104
109
  end
105
-
110
+ # Note: this should work for all /16 vpcs and may run into issues with other blocks
106
111
  def vpc_dns(ip_address)
107
112
  ip_address.gsub(/^(\d+)\.(\d+)\..*/, '\1.\2.0.2')
108
113
  end
@@ -30,8 +30,8 @@ class Bosh::Bootstrap::MicroboshProviders::Base
30
30
 
31
31
  def to_hash
32
32
  {"name"=>microbosh_name,
33
- "logging"=>{"level"=>"DEBUG"}
34
- }
33
+ "logging"=>{"level"=>"DEBUG"},
34
+ }.merge(default_apply_spec)
35
35
  end
36
36
 
37
37
  def microbosh_name
@@ -96,4 +96,14 @@ class Bosh::Bootstrap::MicroboshProviders::Base
96
96
  def stemcell_dir
97
97
  File.dirname(manifest_path)
98
98
  end
99
+
100
+ def default_apply_spec
101
+ return {} unless settings.exists?("recursor")
102
+ {"apply_spec"=>
103
+ {"properties"=>
104
+ {"dns"=>{
105
+ "recursor"=>settings.recursor} }
106
+ }
107
+ }
108
+ end
99
109
  end
@@ -4,7 +4,7 @@ module Bosh::Bootstrap::MicroboshProviders
4
4
  class OpenStack < Base
5
5
 
6
6
  def to_hash
7
- super.merge({
7
+ super.deep_merge({
8
8
  "network"=>network_configuration,
9
9
  "resources"=>
10
10
  {"persistent_disk"=>persistent_disk,
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Bootstrap
3
- VERSION = "0.14.4"
3
+ VERSION = "0.14.5"
4
4
  end
5
5
  end
@@ -36,3 +36,5 @@ apply_spec:
36
36
  properties:
37
37
  aws_registry:
38
38
  address: 1.2.3.4
39
+ dns:
40
+ recursor: 1.2.0.2
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: test-bosh
3
+ logging:
4
+ level: DEBUG
5
+ network:
6
+ type: manual
7
+ ip: 1.2.3.4
8
+ dns:
9
+ - 1.2.0.2
10
+ cloud_properties:
11
+ subnet: subnet-123456
12
+ resources:
13
+ persistent_disk: 16384
14
+ cloud_properties:
15
+ instance_type: m1.medium
16
+ cloud:
17
+ plugin: aws
18
+ properties:
19
+ aws:
20
+ access_key_id: ACCESS
21
+ secret_access_key: SECRET
22
+ region: us-west-2
23
+ ec2_endpoint: ec2.us-west-2.amazonaws.com
24
+ default_security_groups:
25
+ - ssh-vpc-123456
26
+ - dns-server-vpc-123456
27
+ - bosh-vpc-123456
28
+ default_key_name: test-bosh
29
+ ec2_private_key: ~/.microbosh/ssh/test-bosh
30
+ apply_spec:
31
+ agent:
32
+ blobstore:
33
+ address: 1.2.3.4
34
+ nats:
35
+ address: 1.2.3.4
36
+ properties:
37
+ aws_registry:
38
+ address: 1.2.3.4
39
+ dns:
40
+ recursor: 4.5.6.7
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: test-bosh
3
+ logging:
4
+ level: DEBUG
5
+ apply_spec:
6
+ properties:
7
+ dns:
8
+ recursor: 4.5.6.7
@@ -0,0 +1,4 @@
1
+ ---
2
+ name: test-bosh
3
+ logging:
4
+ level: DEBUG
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: test-bosh
3
+ logging:
4
+ level: DEBUG
5
+ network:
6
+ type: dynamic
7
+ vip: 1.2.3.4
8
+ cloud_properties:
9
+ net_id: 7b8788eb-b49e-4424-9065-75a6b07094ea
10
+ resources:
11
+ persistent_disk: 16384
12
+ cloud_properties:
13
+ instance_type: m1.medium
14
+ cloud:
15
+ plugin: openstack
16
+ properties:
17
+ openstack:
18
+ auth_url: http://10.0.0.2:5000/v2.0/tokens
19
+ username: USER
20
+ api_key: PASSWORD
21
+ tenant: TENANT
22
+ region: REGION
23
+ default_security_groups:
24
+ - ssh
25
+ - dns-server
26
+ - bosh
27
+ default_key_name: test-bosh
28
+ private_key: ~/.microbosh/ssh/test-bosh
29
+ connection_options:
30
+ ssl_verify_peer: false
31
+ boot_from_volume: false
32
+ apply_spec:
33
+ agent:
34
+ blobstore:
35
+ address: 1.2.3.4
36
+ nats:
37
+ address: 1.2.3.4
38
+ properties:
39
+ dns:
40
+ recursor: 4.5.6.7
41
+ director:
42
+ max_threads: 3
43
+ hm:
44
+ resurrector_enabled: true
45
+ ntp:
46
+ - 0.north-america.pool.ntp.org
47
+ - 1.north-america.pool.ntp.org
@@ -186,5 +186,26 @@ describe Bosh::Bootstrap::MicroboshProviders::AWS do
186
186
  expect(subject).to receive(:owned_images).and_return([])
187
187
  expect(subject.find_ami_for_stemcell("xxxx", "12345")).to be_nil
188
188
  end
189
+
190
+ it "adds recursor if present" do
191
+ setting "provider.name", "aws"
192
+ setting "provider.region", "us-west-2"
193
+ setting "provider.credentials.aws_access_key_id", "ACCESS"
194
+ setting "provider.credentials.aws_secret_access_key", "SECRET"
195
+ setting "address.ip", "1.2.3.4"
196
+ setting "address.vpc_id", "vpc-123456"
197
+ setting "address.subnet_id", "subnet-123456"
198
+ setting "key_pair.path", "~/.microbosh/ssh/test-bosh"
199
+ setting "bosh.name", "test-bosh"
200
+ setting "bosh.salted_password", "salted_password"
201
+ setting "bosh.persistent_disk", 16384
202
+ setting "recursor", "4.5.6.7"
203
+
204
+ subject = Bosh::Bootstrap::MicroboshProviders::AWS.new(microbosh_yml, settings, fog_compute)
205
+
206
+ subject.create_microbosh_yml(settings)
207
+ expect(File).to be_exists(microbosh_yml)
208
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.aws_vpc_recursor.yml"))
209
+ end
189
210
  end
190
211
  end
@@ -0,0 +1,34 @@
1
+
2
+ require "readwritesettings"
3
+ require "bosh-bootstrap/microbosh_providers/base"
4
+
5
+ describe Bosh::Bootstrap::MicroboshProviders::Base do
6
+ include Bosh::Bootstrap::Cli::Helpers::Settings
7
+
8
+ let(:microbosh_yml) { File.expand_path("~/.microbosh/deployments/micro_bosh.yml")}
9
+ let(:fog_compute) { instance_double("Fog::Compute::Base") }
10
+ subject{ Bosh::Bootstrap::MicroboshProviders::Base.new(microbosh_yml, settings, fog_compute ) }
11
+
12
+
13
+ context "creates micro_bosh.yml manifest" do
14
+ before { setting "bosh.name", "test-bosh" }
15
+
16
+ context "when recursor is provided" do
17
+ it "adds the recursor to the yml" do
18
+ setting "recursor", "4.5.6.7"
19
+
20
+ subject.create_microbosh_yml(settings)
21
+ File.should be_exists(microbosh_yml)
22
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.base.with_recursor.yml"))
23
+ end
24
+ end
25
+
26
+ context "when recursor is not provided" do
27
+ it "does not adds the recursor to the yml" do
28
+ subject.create_microbosh_yml(settings)
29
+ File.should be_exists(microbosh_yml)
30
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.base.without_recursor.yml"))
31
+ end
32
+ end
33
+ end
34
+ end
@@ -29,6 +29,7 @@ describe Bosh::Bootstrap::MicroboshProviders::OpenStack do
29
29
  end
30
30
 
31
31
 
32
+
32
33
  it "on neutron with public gateway & floating IP" do
33
34
  setting "provider.name", "openstack"
34
35
  setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens"
@@ -94,6 +95,29 @@ describe Bosh::Bootstrap::MicroboshProviders::OpenStack do
94
95
  expect(File).to be_exists(microbosh_yml)
95
96
  yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.boot_from_volume.yml"))
96
97
  end
98
+
99
+ it "adds recursor if present" do
100
+ setting "provider.name", "openstack"
101
+ setting "provider.credentials.openstack_auth_url", "http://10.0.0.2:5000/v2.0/tokens"
102
+ setting "provider.credentials.openstack_username", "USER"
103
+ setting "provider.credentials.openstack_api_key", "PASSWORD"
104
+ setting "provider.credentials.openstack_tenant", "TENANT"
105
+ setting "provider.credentials.openstack_region", "REGION"
106
+ setting "address.subnet_id", "7b8788eb-b49e-4424-9065-75a6b07094ea"
107
+ setting "address.pool_name", "INTERNET"
108
+ setting "address.ip", "1.2.3.4" # network.vip
109
+ setting "key_pair.path", "~/.microbosh/ssh/test-bosh"
110
+ setting "bosh.name", "test-bosh"
111
+ setting "bosh.salted_password", "salted_password"
112
+ setting "bosh.persistent_disk", 16384
113
+ setting "recursor", "4.5.6.7"
114
+
115
+ subject = Bosh::Bootstrap::MicroboshProviders::OpenStack.new(microbosh_yml, settings, fog_compute)
116
+
117
+ subject.create_microbosh_yml(settings)
118
+ File.should be_exists(microbosh_yml)
119
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.with_recursor.yml"))
120
+ end
97
121
  end
98
122
 
99
123
  describe "existing stemcells as openstack images" do
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.4
4
+ version: 0.14.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Nic Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-23 00:00:00.000000000 Z
11
+ date: 2014-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cyoi
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.11'
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.11'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fog
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.11'
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: '1.11'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: readwritesettings
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.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: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: thor
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.18'
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.18'
69
69
  - !ruby/object:Gem::Dependency
@@ -84,70 +84,70 @@ dependencies:
84
84
  name: redcard
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: rbvmomi
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
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: '0'
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: rspec
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: fakeweb
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
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: '0'
153
153
  description: Bootstrap a micro bosh universe from one CLI
@@ -158,9 +158,9 @@ executables:
158
158
  extensions: []
159
159
  extra_rdoc_files: []
160
160
  files:
161
- - ".gitignore"
162
- - ".rspec"
163
- - ".travis.yml"
161
+ - .gitignore
162
+ - .rspec
163
+ - .travis.yml
164
164
  - ChangeLog.md
165
165
  - Gemfile
166
166
  - Guardfile
@@ -200,10 +200,14 @@ files:
200
200
  - spec/assets/microbosh_yml/micro_bosh.aws_ec2.us-west-2a.yml
201
201
  - spec/assets/microbosh_yml/micro_bosh.aws_ec2.yml
202
202
  - spec/assets/microbosh_yml/micro_bosh.aws_vpc.yml
203
+ - spec/assets/microbosh_yml/micro_bosh.aws_vpc_recursor.yml
204
+ - spec/assets/microbosh_yml/micro_bosh.base.with_recursor.yml
205
+ - spec/assets/microbosh_yml/micro_bosh.base.without_recursor.yml
203
206
  - spec/assets/microbosh_yml/micro_bosh.openstack.boot_from_volume.yml
204
207
  - spec/assets/microbosh_yml/micro_bosh.openstack.neutron_manual.yml
205
208
  - spec/assets/microbosh_yml/micro_bosh.openstack.neutron_vip.yml
206
209
  - spec/assets/microbosh_yml/micro_bosh.openstack.nova_vip.yml
210
+ - spec/assets/microbosh_yml/micro_bosh.openstack.with_recursor.yml
207
211
  - spec/assets/microbosh_yml/micro_bosh.vsphere.yml
208
212
  - spec/integration/.gitkeep
209
213
  - spec/integration/aws/aws_ec2_basic_spec.rb
@@ -217,6 +221,7 @@ files:
217
221
  - spec/unit/commands/ssh_spec.rb
218
222
  - spec/unit/key_pair_spec.rb
219
223
  - spec/unit/microbosh_providers/aws_spec.rb
224
+ - spec/unit/microbosh_providers/base_spec.rb
220
225
  - spec/unit/microbosh_providers/openstack_spec.rb
221
226
  - spec/unit/microbosh_providers/vsphere_spec.rb
222
227
  - spec/unit/microbosh_spec.rb
@@ -232,12 +237,12 @@ require_paths:
232
237
  - lib
233
238
  required_ruby_version: !ruby/object:Gem::Requirement
234
239
  requirements:
235
- - - ">="
240
+ - - '>='
236
241
  - !ruby/object:Gem::Version
237
242
  version: '1.9'
238
243
  required_rubygems_version: !ruby/object:Gem::Requirement
239
244
  requirements:
240
- - - ">="
245
+ - - '>='
241
246
  - !ruby/object:Gem::Version
242
247
  version: '0'
243
248
  requirements: []
@@ -252,10 +257,14 @@ test_files:
252
257
  - spec/assets/microbosh_yml/micro_bosh.aws_ec2.us-west-2a.yml
253
258
  - spec/assets/microbosh_yml/micro_bosh.aws_ec2.yml
254
259
  - spec/assets/microbosh_yml/micro_bosh.aws_vpc.yml
260
+ - spec/assets/microbosh_yml/micro_bosh.aws_vpc_recursor.yml
261
+ - spec/assets/microbosh_yml/micro_bosh.base.with_recursor.yml
262
+ - spec/assets/microbosh_yml/micro_bosh.base.without_recursor.yml
255
263
  - spec/assets/microbosh_yml/micro_bosh.openstack.boot_from_volume.yml
256
264
  - spec/assets/microbosh_yml/micro_bosh.openstack.neutron_manual.yml
257
265
  - spec/assets/microbosh_yml/micro_bosh.openstack.neutron_vip.yml
258
266
  - spec/assets/microbosh_yml/micro_bosh.openstack.nova_vip.yml
267
+ - spec/assets/microbosh_yml/micro_bosh.openstack.with_recursor.yml
259
268
  - spec/assets/microbosh_yml/micro_bosh.vsphere.yml
260
269
  - spec/integration/.gitkeep
261
270
  - spec/integration/aws/aws_ec2_basic_spec.rb
@@ -269,6 +278,7 @@ test_files:
269
278
  - spec/unit/commands/ssh_spec.rb
270
279
  - spec/unit/key_pair_spec.rb
271
280
  - spec/unit/microbosh_providers/aws_spec.rb
281
+ - spec/unit/microbosh_providers/base_spec.rb
272
282
  - spec/unit/microbosh_providers/openstack_spec.rb
273
283
  - spec/unit/microbosh_providers/vsphere_spec.rb
274
284
  - spec/unit/microbosh_spec.rb