bosh_cli_plugin_micro 1.2089.0 → 1.2121.0
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.
- data/lib/bosh/cli/commands/micro.rb +6 -9
- data/lib/bosh/deployer/configuration.rb +49 -50
- data/lib/bosh/deployer/infrastructure_defaults/aws.rb +65 -0
- data/lib/bosh/deployer/infrastructure_defaults/openstack.rb +63 -0
- data/lib/bosh/deployer/infrastructure_defaults/vcloud.rb +51 -0
- data/lib/bosh/deployer/infrastructure_defaults/vsphere.rb +54 -0
- data/lib/bosh/deployer/infrastructure_defaults.rb +39 -0
- data/lib/bosh/deployer/instance_manager/aws.rb +37 -29
- data/lib/bosh/deployer/instance_manager/openstack.rb +50 -24
- data/lib/bosh/deployer/instance_manager/vcloud.rb +15 -13
- data/lib/bosh/deployer/instance_manager/vsphere.rb +15 -13
- data/lib/bosh/deployer/instance_manager.rb +42 -37
- data/lib/bosh/deployer/logger_renderer.rb +7 -2
- data/lib/bosh/deployer/microbosh_job_instance.rb +2 -2
- data/lib/bosh/deployer/models/instance.rb +4 -1
- data/lib/bosh/deployer/specification.rb +35 -29
- data/lib/bosh/deployer/version.rb +1 -1
- metadata +29 -28
- data/config/aws_defaults.yml +0 -53
- data/config/openstack_defaults.yml +0 -52
- data/config/vcloud_defaults.yml +0 -41
- data/config/vsphere_defaults.yml +0 -44
@@ -5,10 +5,11 @@ require 'bosh/deployer/ssh_server'
|
|
5
5
|
module Bosh::Deployer
|
6
6
|
class InstanceManager
|
7
7
|
class Openstack
|
8
|
-
def initialize(instance_manager, logger)
|
8
|
+
def initialize(instance_manager, config, logger)
|
9
9
|
@instance_manager = instance_manager
|
10
10
|
@logger = logger
|
11
|
-
|
11
|
+
@config = config
|
12
|
+
properties = config.cloud_options['properties']
|
12
13
|
|
13
14
|
@registry = Registry.new(
|
14
15
|
properties['registry']['endpoint'],
|
@@ -24,7 +25,7 @@ module Bosh::Deployer
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def remote_tunnel
|
27
|
-
@remote_tunnel.create(instance_manager.
|
28
|
+
@remote_tunnel.create(instance_manager.client_services_ip, registry.port)
|
28
29
|
end
|
29
30
|
|
30
31
|
def disk_model
|
@@ -35,11 +36,11 @@ module Bosh::Deployer
|
|
35
36
|
properties = spec.properties
|
36
37
|
|
37
38
|
properties['openstack'] =
|
38
|
-
|
39
|
-
|
39
|
+
config.spec_properties['openstack'] ||
|
40
|
+
config.cloud_options['properties']['openstack'].dup
|
40
41
|
|
41
|
-
properties['openstack']['registry'] =
|
42
|
-
properties['openstack']['stemcell'] =
|
42
|
+
properties['openstack']['registry'] = config.cloud_options['properties']['registry']
|
43
|
+
properties['openstack']['stemcell'] = config.cloud_options['properties']['stemcell']
|
43
44
|
|
44
45
|
spec.delete('networks')
|
45
46
|
end
|
@@ -57,24 +58,18 @@ module Bosh::Deployer
|
|
57
58
|
instance_manager.save_state
|
58
59
|
end
|
59
60
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
ip = floating_ip || service_ip
|
65
|
-
|
66
|
-
if ip != instance_manager.bosh_ip
|
67
|
-
instance_manager.bosh_ip = ip
|
68
|
-
logger.info("discovered bosh ip=#{instance_manager.bosh_ip}")
|
69
|
-
end
|
70
|
-
end
|
61
|
+
def client_services_ip
|
62
|
+
logger.info('discovering client services ip')
|
63
|
+
discover_client_services_ip
|
64
|
+
end
|
71
65
|
|
72
|
-
|
66
|
+
def agent_services_ip
|
67
|
+
logger.info('discovering agent services ip')
|
68
|
+
discover_agent_services_ip
|
73
69
|
end
|
74
70
|
|
75
|
-
def
|
76
|
-
|
77
|
-
get(instance_manager.state.vm_cid).private_ip_address
|
71
|
+
def internal_services_ip
|
72
|
+
config.internal_services_ip
|
78
73
|
end
|
79
74
|
|
80
75
|
# @return [Integer] size in MiB
|
@@ -88,13 +83,13 @@ module Bosh::Deployer
|
|
88
83
|
# is a risk of conversion errors which lead to an unnecessary
|
89
84
|
# disk migration, so we need to do a double conversion
|
90
85
|
# here to avoid that
|
91
|
-
requested = (
|
86
|
+
requested = (config.resources['persistent_disk'] / 1024.0).ceil * 1024
|
92
87
|
requested != disk_size(instance_manager.state.disk_cid)
|
93
88
|
end
|
94
89
|
|
95
90
|
private
|
96
91
|
|
97
|
-
attr_reader :registry, :instance_manager, :logger
|
92
|
+
attr_reader :registry, :instance_manager, :logger, :config
|
98
93
|
|
99
94
|
def ssh_properties(properties)
|
100
95
|
ssh_user = properties['openstack']['ssh_user']
|
@@ -103,6 +98,7 @@ module Bosh::Deployer
|
|
103
98
|
|
104
99
|
key = properties['openstack']['private_key']
|
105
100
|
err 'Missing properties.openstack.private_key' unless key
|
101
|
+
|
106
102
|
ssh_key = File.expand_path(key)
|
107
103
|
unless File.exists?(ssh_key)
|
108
104
|
err "properties.openstack.private_key '#{key}' does not exist"
|
@@ -110,6 +106,36 @@ module Bosh::Deployer
|
|
110
106
|
|
111
107
|
[ssh_key, ssh_port, ssh_user, ssh_wait]
|
112
108
|
end
|
109
|
+
|
110
|
+
def discover_client_services_ip
|
111
|
+
if instance_manager.state.vm_cid
|
112
|
+
server = instance_manager.cloud.openstack.servers.get(instance_manager.state.vm_cid)
|
113
|
+
|
114
|
+
ip = server.floating_ip_address || server.private_ip_address
|
115
|
+
|
116
|
+
logger.info("discovered bosh ip=#{ip}")
|
117
|
+
ip
|
118
|
+
else
|
119
|
+
default_ip = config.client_services_ip
|
120
|
+
logger.info("ip address not discovered - using default of #{default_ip}")
|
121
|
+
default_ip
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def discover_agent_services_ip
|
126
|
+
if instance_manager.state.vm_cid
|
127
|
+
server = instance_manager.cloud.openstack.servers.get(instance_manager.state.vm_cid)
|
128
|
+
|
129
|
+
ip = server.private_ip_address
|
130
|
+
|
131
|
+
logger.info("discovered bosh ip=#{ip}")
|
132
|
+
ip
|
133
|
+
else
|
134
|
+
default_ip = config.agent_services_ip
|
135
|
+
logger.info("ip address not discovered - using default of #{default_ip}")
|
136
|
+
default_ip
|
137
|
+
end
|
138
|
+
end
|
113
139
|
end
|
114
140
|
end
|
115
141
|
end
|
@@ -1,10 +1,13 @@
|
|
1
|
-
|
1
|
+
require 'forwardable'
|
2
2
|
|
3
3
|
module Bosh::Deployer
|
4
4
|
class InstanceManager
|
5
5
|
class Vcloud
|
6
|
-
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
def initialize(instance_manager, config, logger)
|
7
9
|
@instance_manager = instance_manager
|
10
|
+
@config = config
|
8
11
|
@logger = logger
|
9
12
|
end
|
10
13
|
|
@@ -21,8 +24,8 @@ module Bosh::Deployer
|
|
21
24
|
properties = spec.properties
|
22
25
|
|
23
26
|
properties['vcd'] =
|
24
|
-
|
25
|
-
|
27
|
+
config.spec_properties['vcd'] ||
|
28
|
+
config.cloud_options['properties']['vcds'].first.dup
|
26
29
|
|
27
30
|
properties['vcd']['address'] ||= properties['vcd']['url']
|
28
31
|
end
|
@@ -39,13 +42,12 @@ module Bosh::Deployer
|
|
39
42
|
def stop
|
40
43
|
end
|
41
44
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
45
|
+
def_delegators(
|
46
|
+
:config,
|
47
|
+
:internal_services_ip,
|
48
|
+
:agent_services_ip,
|
49
|
+
:client_services_ip,
|
50
|
+
)
|
49
51
|
|
50
52
|
# @return [Integer] size in MiB
|
51
53
|
def disk_size(cid)
|
@@ -53,12 +55,12 @@ module Bosh::Deployer
|
|
53
55
|
end
|
54
56
|
|
55
57
|
def persistent_disk_changed?
|
56
|
-
|
58
|
+
config.resources['persistent_disk'] != disk_size(instance_manager.state.disk_cid)
|
57
59
|
end
|
58
60
|
|
59
61
|
private
|
60
62
|
|
61
|
-
attr_reader :instance_manager, :logger
|
63
|
+
attr_reader :instance_manager, :logger, :config
|
62
64
|
|
63
65
|
FakeRegistry = Struct.new(:port)
|
64
66
|
def registry
|
@@ -1,10 +1,13 @@
|
|
1
|
-
|
1
|
+
require 'forwardable'
|
2
2
|
|
3
3
|
module Bosh::Deployer
|
4
4
|
class InstanceManager
|
5
5
|
class Vsphere
|
6
|
-
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
def initialize(instance_manager, config, logger)
|
7
9
|
@instance_manager = instance_manager
|
10
|
+
@config = config
|
8
11
|
@logger = logger
|
9
12
|
end
|
10
13
|
|
@@ -23,8 +26,8 @@ module Bosh::Deployer
|
|
23
26
|
properties = spec.properties
|
24
27
|
|
25
28
|
properties['vcenter'] =
|
26
|
-
|
27
|
-
|
29
|
+
config.spec_properties['vcenter'] ||
|
30
|
+
config.cloud_options['properties']['vcenters'].first.dup
|
28
31
|
|
29
32
|
properties['vcenter']['address'] ||= properties['vcenter']['host']
|
30
33
|
end
|
@@ -41,13 +44,12 @@ module Bosh::Deployer
|
|
41
44
|
def stop
|
42
45
|
end
|
43
46
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
end
|
47
|
+
def_delegators(
|
48
|
+
:config,
|
49
|
+
:internal_services_ip,
|
50
|
+
:agent_services_ip,
|
51
|
+
:client_services_ip,
|
52
|
+
)
|
51
53
|
|
52
54
|
# @return [Integer] size in MiB
|
53
55
|
def disk_size(cid)
|
@@ -55,12 +57,12 @@ module Bosh::Deployer
|
|
55
57
|
end
|
56
58
|
|
57
59
|
def persistent_disk_changed?
|
58
|
-
|
60
|
+
config.resources['persistent_disk'] != disk_size(instance_manager.state.disk_cid)
|
59
61
|
end
|
60
62
|
|
61
63
|
private
|
62
64
|
|
63
|
-
attr_reader :instance_manager, :logger
|
65
|
+
attr_reader :instance_manager, :logger, :config
|
64
66
|
|
65
67
|
FakeRegistry = Struct.new(:port)
|
66
68
|
def registry
|
@@ -40,24 +40,23 @@ module Bosh::Deployer
|
|
40
40
|
config_sha1 = Bosh::Deployer::HashFingerprinter.new.sha1(config)
|
41
41
|
ui_messager = Bosh::Deployer::UiMessager.for_deployer
|
42
42
|
|
43
|
-
new(config, config_sha1, ui_messager, plugin_name)
|
43
|
+
new(Config.configure(config), config_sha1, ui_messager, plugin_name)
|
44
44
|
end
|
45
45
|
|
46
46
|
def initialize(config, config_sha1, ui_messager, plugin_name)
|
47
|
-
|
48
|
-
@config = Config
|
47
|
+
@config = config
|
49
48
|
|
50
49
|
plugin_class = InstanceManager.const_get(plugin_name.capitalize)
|
51
|
-
@infrastructure = plugin_class.new(self, logger)
|
50
|
+
@infrastructure = plugin_class.new(self, config, logger)
|
52
51
|
|
53
|
-
@deployments_state = DeploymentsState.load_from_dir(config
|
54
|
-
|
52
|
+
@deployments_state = DeploymentsState.load_from_dir(config.base_dir, logger)
|
53
|
+
deployments_state.load_deployment(config.name, infrastructure)
|
55
54
|
|
56
|
-
|
55
|
+
config.uuid = state.uuid
|
57
56
|
|
58
57
|
@config_sha1 = config_sha1
|
59
58
|
@ui_messager = ui_messager
|
60
|
-
@renderer = LoggerRenderer.new
|
59
|
+
@renderer = LoggerRenderer.new(logger)
|
61
60
|
end
|
62
61
|
|
63
62
|
def_delegators(
|
@@ -70,19 +69,16 @@ module Bosh::Deployer
|
|
70
69
|
def_delegators(
|
71
70
|
:@config,
|
72
71
|
:cloud,
|
73
|
-
:agent,
|
74
72
|
:logger,
|
75
|
-
:bosh_ip,
|
76
|
-
:bosh_ip=,
|
77
73
|
)
|
78
74
|
|
79
|
-
|
80
|
-
infrastructure
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
75
|
+
def_delegators(
|
76
|
+
:infrastructure,
|
77
|
+
:check_dependencies,
|
78
|
+
:agent_services_ip,
|
79
|
+
:client_services_ip,
|
80
|
+
:internal_services_ip,
|
81
|
+
)
|
86
82
|
|
87
83
|
def step(task)
|
88
84
|
renderer.update(:started, task)
|
@@ -126,7 +122,6 @@ module Bosh::Deployer
|
|
126
122
|
step "Creating VM from #{state.stemcell_cid}" do
|
127
123
|
state.vm_cid = create_vm(state.stemcell_cid)
|
128
124
|
update_vm_metadata(state.vm_cid, { 'Name' => state.name })
|
129
|
-
infrastructure.discover_bosh_ip
|
130
125
|
end
|
131
126
|
save_state
|
132
127
|
|
@@ -144,7 +139,7 @@ module Bosh::Deployer
|
|
144
139
|
|
145
140
|
unless @apply_spec
|
146
141
|
step 'Fetching apply spec' do
|
147
|
-
@apply_spec = Specification.new(agent.release_apply_spec)
|
142
|
+
@apply_spec = Specification.new(agent.release_apply_spec, config)
|
148
143
|
end
|
149
144
|
end
|
150
145
|
|
@@ -220,13 +215,13 @@ module Bosh::Deployer
|
|
220
215
|
run_command("tar -zxf #{stemcell_tgz} -C #{stemcell}")
|
221
216
|
end
|
222
217
|
|
223
|
-
@apply_spec = Specification.load_from_stemcell(stemcell)
|
218
|
+
@apply_spec = Specification.load_from_stemcell(stemcell, config)
|
224
219
|
|
225
220
|
# load properties from stemcell manifest
|
226
221
|
properties = load_stemcell_manifest(stemcell)
|
227
222
|
|
228
223
|
# override with values from the deployment manifest
|
229
|
-
override =
|
224
|
+
override = config.cloud_options['properties']['stemcell']
|
230
225
|
properties['cloud_properties'].merge!(override) if override
|
231
226
|
|
232
227
|
step 'Uploading stemcell' do
|
@@ -242,9 +237,9 @@ module Bosh::Deployer
|
|
242
237
|
# rubocop:enable MethodLength
|
243
238
|
|
244
239
|
def create_vm(stemcell_cid)
|
245
|
-
resources =
|
246
|
-
networks =
|
247
|
-
env =
|
240
|
+
resources = config.resources['cloud_properties']
|
241
|
+
networks = config.networks
|
242
|
+
env = config.env
|
248
243
|
cloud.create_vm(state.uuid, stemcell_cid, resources, networks, nil, env)
|
249
244
|
end
|
250
245
|
|
@@ -283,7 +278,7 @@ module Bosh::Deployer
|
|
283
278
|
|
284
279
|
def create_disk
|
285
280
|
step 'Create disk' do
|
286
|
-
size =
|
281
|
+
size = config.resources['persistent_disk']
|
287
282
|
state.disk_cid = cloud.create_disk(size, state.vm_cid)
|
288
283
|
save_state
|
289
284
|
end
|
@@ -353,7 +348,7 @@ module Bosh::Deployer
|
|
353
348
|
create_disk
|
354
349
|
attach_disk(state.disk_cid, true)
|
355
350
|
elsif infrastructure.persistent_disk_changed?
|
356
|
-
size =
|
351
|
+
size = config.resources['persistent_disk']
|
357
352
|
|
358
353
|
# save a reference to the old disk
|
359
354
|
old_disk_cid = state.disk_cid
|
@@ -383,11 +378,12 @@ module Bosh::Deployer
|
|
383
378
|
step 'Applying micro BOSH spec' do
|
384
379
|
# first update spec with infrastructure specific stuff
|
385
380
|
infrastructure.update_spec(spec)
|
381
|
+
|
386
382
|
# then update spec with generic changes
|
387
|
-
spec = spec.update(
|
383
|
+
spec = spec.update(agent_services_ip, internal_services_ip)
|
388
384
|
|
389
|
-
|
390
|
-
spec =
|
385
|
+
microbosh_instance = MicroboshJobInstance.new(client_services_ip, config.agent_url, logger)
|
386
|
+
spec = microbosh_instance.render_templates(spec)
|
391
387
|
|
392
388
|
agent.run_task(:apply, spec)
|
393
389
|
end
|
@@ -399,8 +395,22 @@ module Bosh::Deployer
|
|
399
395
|
deployments_state.save(infrastructure)
|
400
396
|
end
|
401
397
|
|
398
|
+
def agent
|
399
|
+
uri = URI.parse(config.agent_url)
|
400
|
+
user, password = uri.userinfo.split(':', 2)
|
401
|
+
uri.userinfo = nil
|
402
|
+
uri.host = client_services_ip
|
403
|
+
Bosh::Agent::HTTPClient.new(uri.to_s, {
|
404
|
+
'user' => user,
|
405
|
+
'password' => password,
|
406
|
+
'reply_to' => config.uuid,
|
407
|
+
})
|
408
|
+
end
|
409
|
+
|
402
410
|
private
|
403
411
|
|
412
|
+
attr_reader :config
|
413
|
+
|
404
414
|
def agent_stop
|
405
415
|
step 'Stopping agent services' do
|
406
416
|
begin
|
@@ -431,7 +441,7 @@ module Bosh::Deployer
|
|
431
441
|
end
|
432
442
|
|
433
443
|
def agent_port
|
434
|
-
URI.parse(
|
444
|
+
URI.parse(config.cloud_options['properties']['agent']['mbus']).port
|
435
445
|
end
|
436
446
|
|
437
447
|
def wait_until_agent_ready
|
@@ -441,7 +451,7 @@ module Bosh::Deployer
|
|
441
451
|
|
442
452
|
def wait_until_director_ready
|
443
453
|
port = @apply_spec.director_port
|
444
|
-
url = "https://#{
|
454
|
+
url = "https://#{client_services_ip}:#{port}/info"
|
445
455
|
|
446
456
|
wait_until_ready('director', 1, 600) do
|
447
457
|
|
@@ -499,11 +509,6 @@ module Bosh::Deployer
|
|
499
509
|
Psych.load_file(file)
|
500
510
|
end
|
501
511
|
|
502
|
-
def load_state(name)
|
503
|
-
deployments_state.load_deployment(name, infrastructure)
|
504
|
-
infrastructure.discover_bosh_ip
|
505
|
-
end
|
506
|
-
|
507
512
|
def run_command(command)
|
508
513
|
output, status = Open3.capture2e(command)
|
509
514
|
if status.exitstatus != 0
|
@@ -2,7 +2,8 @@ module Bosh::Deployer
|
|
2
2
|
class LoggerRenderer
|
3
3
|
attr_accessor :stage, :total, :index
|
4
4
|
|
5
|
-
def initialize
|
5
|
+
def initialize(logger)
|
6
|
+
@logger = logger
|
6
7
|
enter_stage('Deployer', 0)
|
7
8
|
end
|
8
9
|
|
@@ -13,8 +14,12 @@ module Bosh::Deployer
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def update(state, task)
|
16
|
-
|
17
|
+
logger.info("#{@stage} - #{state} #{task}")
|
17
18
|
@index += 1 if state == :finished
|
18
19
|
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
attr_reader :logger
|
19
24
|
end
|
20
25
|
end
|
@@ -6,13 +6,13 @@ require 'blobstore_client'
|
|
6
6
|
module Bosh::Deployer
|
7
7
|
class MicroboshJobInstance
|
8
8
|
|
9
|
-
def initialize(
|
9
|
+
def initialize(blobstore_ip, mbus, logger)
|
10
10
|
@logger = logger
|
11
11
|
|
12
12
|
uri = URI.parse(mbus)
|
13
13
|
user, password = uri.userinfo.split(':', 2)
|
14
14
|
uri.userinfo = ''
|
15
|
-
uri.host =
|
15
|
+
uri.host = blobstore_ip
|
16
16
|
uri.path = '/blobs'
|
17
17
|
@blobstore_options = {
|
18
18
|
'endpoint' => uri.to_s,
|
@@ -1,4 +1,7 @@
|
|
1
1
|
module Bosh::Deployer::Models
|
2
|
-
|
2
|
+
def self.define_instance_from_table(table)
|
3
|
+
return if const_defined?(:Instance)
|
4
|
+
klass = Class.new(Sequel.Model(table))
|
5
|
+
const_set(:Instance, klass)
|
3
6
|
end
|
4
7
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Bosh::Deployer
|
2
2
|
class Specification
|
3
|
-
def self.load_from_stemcell(dir)
|
3
|
+
def self.load_from_stemcell(dir, config)
|
4
4
|
spec = load_apply_spec(dir)
|
5
|
-
Specification.new(spec)
|
5
|
+
Specification.new(spec, config)
|
6
6
|
end
|
7
7
|
|
8
8
|
def self.load_apply_spec(dir)
|
@@ -15,46 +15,35 @@ module Bosh::Deployer
|
|
15
15
|
attr_accessor :spec
|
16
16
|
attr_accessor :properties
|
17
17
|
|
18
|
-
def initialize(spec)
|
18
|
+
def initialize(spec, config)
|
19
|
+
@config = config
|
19
20
|
@spec = spec
|
20
21
|
@properties = @spec['properties']
|
21
22
|
end
|
22
23
|
|
23
24
|
# Update the spec with the IP of the micro bosh instance.
|
24
|
-
# @param [String]
|
25
|
-
# @param [String]
|
26
|
-
|
27
|
-
def update(bosh_ip, service_ip)
|
25
|
+
# @param [String] agent_services_ip IP address of the micro bosh VM
|
26
|
+
# @param [String] internal_services_ip private IP of the micro bosh VM
|
27
|
+
def update(agent_services_ip, internal_services_ip)
|
28
28
|
# set the director name to what is specified in the micro_bosh.yml
|
29
|
-
if
|
29
|
+
if config.name
|
30
30
|
@properties['director'] = {} unless @properties['director']
|
31
|
-
@properties['director']['name'] =
|
31
|
+
@properties['director']['name'] = config.name
|
32
32
|
end
|
33
33
|
|
34
|
-
# on AWS blobstore and nats need to use an elastic IP (if available),
|
35
|
-
# as when the micro bosh instance is re-created during a deployment,
|
36
|
-
# it might get a new private IP
|
37
34
|
%w{blobstore nats}.each do |service|
|
38
|
-
update_agent_service_address(service,
|
35
|
+
update_agent_service_address(service, agent_services_ip)
|
39
36
|
end
|
40
37
|
|
41
|
-
|
42
|
-
|
43
|
-
update_service_address(service, service_ip)
|
38
|
+
%w{registry dns}.each do |service|
|
39
|
+
update_service_address(service, agent_services_ip)
|
44
40
|
end
|
45
41
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
override_property(@properties, 'hm', Config.spec_properties['hm'])
|
50
|
-
override_property(@properties, 'director', Config.spec_properties['director'])
|
51
|
-
set_property(@properties, 'ntp', Config.spec_properties['ntp'])
|
42
|
+
%w{director redis blobstore nats}.each do |service|
|
43
|
+
update_service_address(service, internal_services_ip)
|
44
|
+
end
|
52
45
|
|
53
|
-
|
54
|
-
@properties,
|
55
|
-
'compiled_package_cache',
|
56
|
-
Config.spec_properties['compiled_package_cache'],
|
57
|
-
)
|
46
|
+
update_properties
|
58
47
|
|
59
48
|
@spec
|
60
49
|
end
|
@@ -71,20 +60,37 @@ module Bosh::Deployer
|
|
71
60
|
|
72
61
|
private
|
73
62
|
|
63
|
+
attr_reader :config
|
64
|
+
|
65
|
+
# health monitor does not listen to any ports, so there is no
|
66
|
+
# need to update the service address, but we still want to
|
67
|
+
# be able to override values in the apply_spec
|
68
|
+
def update_properties
|
69
|
+
override_property(@properties, 'hm', config.spec_properties['hm'])
|
70
|
+
override_property(@properties, 'director', config.spec_properties['director'])
|
71
|
+
set_property(@properties, 'ntp', config.spec_properties['ntp'])
|
72
|
+
|
73
|
+
set_property(
|
74
|
+
@properties,
|
75
|
+
'compiled_package_cache',
|
76
|
+
config.spec_properties['compiled_package_cache'],
|
77
|
+
)
|
78
|
+
end
|
79
|
+
|
74
80
|
# update the agent service section from the contents of the apply_spec
|
75
81
|
def update_agent_service_address(service, address)
|
76
82
|
agent = @properties['agent'] ||= {}
|
77
83
|
svc = agent[service] ||= {}
|
78
84
|
svc['address'] = address
|
79
85
|
|
80
|
-
override_property(agent, service,
|
86
|
+
override_property(agent, service, config.agent_properties[service])
|
81
87
|
end
|
82
88
|
|
83
89
|
def update_service_address(service, address)
|
84
90
|
return unless @properties[service]
|
85
91
|
@properties[service]['address'] = address
|
86
92
|
|
87
|
-
override_property(@properties, service,
|
93
|
+
override_property(@properties, service, config.spec_properties[service])
|
88
94
|
end
|
89
95
|
|
90
96
|
def set_property(properties, key, value)
|