bosh-deployer 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +4 -1
- data/Gemfile.lock +27 -66
- data/bosh-deployer.gemspec +2 -0
- data/lib/bosh-deployer.rb +1 -0
- data/lib/bosh-deployer/bosh_stub.rb +105 -0
- data/lib/bosh-deployer/cli/commands/generate_stub.rb +20 -0
- data/lib/bosh-deployer/version.rb +1 -1
- data/lib/bosh/cli/commands/bosh_deployer.rb +23 -0
- data/lib/bosh/cli/commands/deployer.rb +7 -0
- data/spec/bosh_stub_spec.rb +96 -0
- data/spec/cli/deployer_spec.rb +19 -4
- data/spec/commands/generate_stub_spec.rb +29 -0
- data/spec/commands/provision_stemcells_spec.rb +1 -0
- data/spec/fixtures/bosh-bootstrap/settings.yml +12 -0
- data/spec/fixtures/stubs/bosh.yml +25 -0
- data/spec/fixtures/stubs/cloudfoundry.stub.yml +145 -0
- data/stubs/bosh.yml.erb +25 -0
- metadata +44 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f23d785521e58b46f24e09480694af1e7cc5a72
|
4
|
+
data.tar.gz: 1b8d153523965f11c94e44ea3815a19a9039f6e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74c62b59ad4d1e12d69738c0456bca66cae516ceda3157e017960ea4a69705f256059b1b64930f481e2931b5a7eebbc318babe30819230e87acba19b775c60c8
|
7
|
+
data.tar.gz: 808c6c521726d44c7f61658f54cab64fbcfd2ab35850cadb79a9147319b83fcdc7f1d51c1c0898a52f4a623c41d7312e2aacf211c55460384fdae5584dd9bd5f
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,74 +1,29 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
bosh-deployer (0.
|
4
|
+
bosh-deployer (0.2.2)
|
5
|
+
readwritesettings
|
5
6
|
redcard
|
6
7
|
thor (~> 0.18)
|
7
8
|
|
9
|
+
PATH
|
10
|
+
remote: ../cancun
|
11
|
+
specs:
|
12
|
+
cancun (0.2.1)
|
13
|
+
highline
|
14
|
+
highline-color
|
15
|
+
sourcify
|
16
|
+
|
8
17
|
GEM
|
9
18
|
remote: https://rubygems.org/
|
10
19
|
specs:
|
11
|
-
aws-sdk (1.44.0)
|
12
|
-
json (~> 1.4)
|
13
|
-
nokogiri (>= 1.4.4)
|
14
|
-
blobstore_client (1.2707.0)
|
15
|
-
aws-sdk (= 1.44.0)
|
16
|
-
bosh_common (~> 1.2707.0)
|
17
|
-
fog (~> 1.14.0)
|
18
|
-
httpclient (= 2.4.0)
|
19
|
-
multi_json (~> 1.1)
|
20
|
-
ruby-atmos-pure (~> 1.0.5)
|
21
|
-
bosh-template (1.2707.0)
|
22
|
-
semi_semantic (~> 1.1.0)
|
23
|
-
bosh_cli (1.2707.0)
|
24
|
-
blobstore_client (~> 1.2707.0)
|
25
|
-
bosh-template (~> 1.2707.0)
|
26
|
-
bosh_common (~> 1.2707.0)
|
27
|
-
highline (~> 1.6.2)
|
28
|
-
httpclient (= 2.4.0)
|
29
|
-
json_pure (~> 1.7)
|
30
|
-
minitar (~> 0.5.4)
|
31
|
-
net-scp (~> 1.1.0)
|
32
|
-
net-ssh (>= 2.2.1)
|
33
|
-
net-ssh-gateway (~> 1.2.0)
|
34
|
-
netaddr (~> 1.5.0)
|
35
|
-
progressbar (~> 0.9.0)
|
36
|
-
terminal-table (~> 1.4.3)
|
37
|
-
bosh_common (1.2707.0)
|
38
|
-
semi_semantic (~> 1.1.0)
|
39
|
-
builder (3.2.2)
|
40
20
|
diff-lcs (1.2.5)
|
41
|
-
|
42
|
-
|
43
|
-
builder
|
44
|
-
excon (~> 0.25.0)
|
45
|
-
formatador (~> 0.2.0)
|
46
|
-
mime-types
|
47
|
-
multi_json (~> 1.0)
|
48
|
-
net-scp (~> 1.1)
|
49
|
-
net-ssh (>= 2.1.3)
|
50
|
-
nokogiri (~> 1.5)
|
51
|
-
ruby-hmac
|
52
|
-
formatador (0.2.5)
|
21
|
+
file-tail (1.0.12)
|
22
|
+
tins (~> 0.5)
|
53
23
|
highline (1.6.21)
|
54
|
-
|
55
|
-
json (1.8.1)
|
56
|
-
json_pure (1.8.1)
|
57
|
-
log4r (1.1.10)
|
58
|
-
mime-types (2.3)
|
59
|
-
mini_portile (0.6.0)
|
60
|
-
minitar (0.5.4)
|
61
|
-
multi_json (1.10.1)
|
62
|
-
net-scp (1.1.2)
|
63
|
-
net-ssh (>= 2.6.5)
|
64
|
-
net-ssh (2.9.1)
|
65
|
-
net-ssh-gateway (1.2.0)
|
66
|
-
net-ssh (>= 2.6.5)
|
67
|
-
netaddr (1.5.0)
|
68
|
-
nokogiri (1.6.3.1)
|
69
|
-
mini_portile (= 0.6.0)
|
70
|
-
progressbar (0.9.2)
|
24
|
+
highline-color (0.0.2)
|
71
25
|
rake (10.3.2)
|
26
|
+
readwritesettings (3.0.1)
|
72
27
|
redcard (1.1.0)
|
73
28
|
rspec (3.0.0)
|
74
29
|
rspec-core (~> 3.0.0)
|
@@ -82,19 +37,25 @@ GEM
|
|
82
37
|
rspec-mocks (3.0.4)
|
83
38
|
rspec-support (~> 3.0.0)
|
84
39
|
rspec-support (3.0.4)
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
40
|
+
ruby2ruby (2.1.2)
|
41
|
+
ruby_parser (~> 3.1)
|
42
|
+
sexp_processor (~> 4.0)
|
43
|
+
ruby_parser (3.6.2)
|
44
|
+
sexp_processor (~> 4.1)
|
45
|
+
sexp_processor (4.4.4)
|
46
|
+
sourcify (0.5.0)
|
47
|
+
file-tail (>= 1.0.5)
|
48
|
+
ruby2ruby (>= 1.2.5)
|
49
|
+
ruby_parser (>= 2.0.5)
|
50
|
+
sexp_processor (>= 3.0.5)
|
91
51
|
thor (0.19.1)
|
52
|
+
tins (0.13.2)
|
92
53
|
|
93
54
|
PLATFORMS
|
94
55
|
ruby
|
95
56
|
|
96
57
|
DEPENDENCIES
|
97
58
|
bosh-deployer!
|
98
|
-
|
59
|
+
cancun!
|
99
60
|
rake
|
100
61
|
rspec
|
data/bosh-deployer.gemspec
CHANGED
@@ -27,6 +27,8 @@ Gem::Specification.new do |gem|
|
|
27
27
|
|
28
28
|
gem.add_dependency "thor", "~> 0.18"
|
29
29
|
gem.add_dependency "redcard"
|
30
|
+
gem.add_dependency 'readwritesettings'
|
30
31
|
gem.add_development_dependency "rake"
|
32
|
+
gem.add_development_dependency "cancun"
|
31
33
|
gem.add_development_dependency "rspec"
|
32
34
|
end
|
data/lib/bosh-deployer.rb
CHANGED
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'cancun/highline'
|
3
|
+
require 'readwritesettings'
|
4
|
+
|
5
|
+
module Bosh; module Deployer; end ;end
|
6
|
+
|
7
|
+
class Bosh::Deployer::BoshStub
|
8
|
+
include ::Cancun::Highline
|
9
|
+
attr_reader :filename
|
10
|
+
|
11
|
+
def initialize(path = '~/.bosh-deployer/stubs')
|
12
|
+
path = path[0..-2] if path[-1] == '/'
|
13
|
+
@filename = "#{path}/bosh.yml"
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate
|
17
|
+
say_bold 'Provide the following information for your bosh configuration:'
|
18
|
+
stub = template.result(binding)
|
19
|
+
say "Saving stub at #{filename}"
|
20
|
+
File.open(filename, 'w') { |f| f.write(stub) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def static_ip_from
|
24
|
+
@static_ip_from ||= ask 'Intial available static ip for deploying bosh:'
|
25
|
+
end
|
26
|
+
|
27
|
+
def static_ip_to
|
28
|
+
@static_ip_to ||= ask 'Last available static ip for deploying bosh:'
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def openstack_auth_url
|
33
|
+
@openstack_auth_url ||= ask('Openstack auth url:') do |q|
|
34
|
+
q.default = microbosh.provider.credentials.openstack_auth_url.gsub('/tokens', '') if microbosh
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def openstack_username
|
39
|
+
@openstack_username ||= ask('Openstack username:') do |q|
|
40
|
+
q.default = microbosh.provider.credentials.openstack_username if microbosh
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def openstack_api_key
|
45
|
+
@openstack_api_key ||= ask('Openstack api key:') do |q|
|
46
|
+
q.default = microbosh.provider.credentials.openstack_api_key if microbosh
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def openstack_tenant
|
51
|
+
@openstack_tenant ||= ask('Openstack tenant:') do |q|
|
52
|
+
q.default = microbosh.provider.credentials.openstack_tenant if microbosh
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def recursor_ip
|
57
|
+
@recursor_ip ||= ask('Recursor ip or host:') do |q|
|
58
|
+
q.default = microbosh.address.ip if microbosh
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def subnet_id
|
63
|
+
@subnet_id ||= ask('Subnet ID where bosh will be deployed:') do |q|
|
64
|
+
q.default = microbosh.address.subnet_id if microbosh
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def gateway
|
69
|
+
@gateway ||= ask('Gateway IP for bosh:') do |q|
|
70
|
+
#UGLY REPLACE ME WITH A REGEX
|
71
|
+
q.default = (static_ip_from.split('.')[0..-2] + ['1']).join('.')
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def range
|
76
|
+
@range ||= ask('Gateway IP for bosh:') do |q|
|
77
|
+
#UGLY REPLACE ME WITH A REGEX
|
78
|
+
q.default = (static_ip_from.split('.')[0..-2] + ['0']).join('.') + '/24'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def default_key_name
|
83
|
+
@default_key_name ||= ask('Key name:') do |q|
|
84
|
+
q.default = 'firstbosh'
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def private_key
|
89
|
+
@private_key ||= ask('Private key:') do |q|
|
90
|
+
q.default = '~/.microbosh/ssh/firstbosh.pem'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
protected
|
95
|
+
|
96
|
+
def template
|
97
|
+
@template ||= ERB.new( File.read(File.expand_path('../../../stubs/bosh.yml.erb', __FILE__)))
|
98
|
+
end
|
99
|
+
|
100
|
+
def microbosh
|
101
|
+
if File.exists?('~/.bootstrap/settings.yml')
|
102
|
+
@microbosh ||= ReadWriteSettings.new('~/.bootstrap/settings.yml')
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
module Bosh; module Deployer; module Cli; module Commands; end; end; end; end
|
3
|
+
|
4
|
+
class Bosh::Deployer::Cli::Commands::GenerateStub
|
5
|
+
attr_reader :name, :path
|
6
|
+
|
7
|
+
def initialize(name, path=nil)
|
8
|
+
@name = name
|
9
|
+
@path = path
|
10
|
+
end
|
11
|
+
|
12
|
+
def perform
|
13
|
+
stub.generate
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
def stub
|
18
|
+
Bosh::Deployer::BoshStub.new(path) if name == 'bosh'
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "bosh-deployer"
|
2
|
+
|
3
|
+
module Bosh::Cli::Command
|
4
|
+
class Deployer < Base
|
5
|
+
usage "deployer"
|
6
|
+
desc "show deployer sub-commands"
|
7
|
+
def help
|
8
|
+
say("bosh deployer sub-commands:")
|
9
|
+
nl
|
10
|
+
cmds = Bosh::Cli::Config.commands.values.find_all {|c|
|
11
|
+
c.usage =~ /^deployer/
|
12
|
+
}
|
13
|
+
Bosh::Cli::Command::Help.list_commands(cmds)
|
14
|
+
end
|
15
|
+
|
16
|
+
usage "deployer provision stemcells"
|
17
|
+
desc "finds and uploads the required stemcell point out in your manifest to bosh"
|
18
|
+
def provision_stemcells
|
19
|
+
require "bosh-deployer/cli/commands/provision_stemcells"
|
20
|
+
Bosh::Deployer::Cli::Commands::ProvisionStemcells.new.perform
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -19,5 +19,12 @@ module Bosh::Cli::Command
|
|
19
19
|
require "bosh-deployer/cli/commands/provision_stemcells"
|
20
20
|
Bosh::Deployer::Cli::Commands::ProvisionStemcells.new.perform
|
21
21
|
end
|
22
|
+
|
23
|
+
usage "generate stubs for bosh or cf"
|
24
|
+
desc "Creates stub file"
|
25
|
+
def generate_stub(name, path=nil)
|
26
|
+
require "bosh-deployer/cli/commands/generate_stub"
|
27
|
+
Bosh::Deployer::Cli::Commands::GenerateStub.new(name,path).perform
|
28
|
+
end
|
22
29
|
end
|
23
30
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'cancun'
|
2
|
+
require 'bosh-deployer/bosh_stub'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
class Hash
|
6
|
+
def sort_by_key(recursive = false, &block)
|
7
|
+
self.keys.sort(&block).reduce({}) do |seed, key|
|
8
|
+
seed[key] = self[key]
|
9
|
+
if recursive && seed[key].is_a?(Hash)
|
10
|
+
seed[key] = seed[key].sort_by_key(true, &block)
|
11
|
+
end
|
12
|
+
seed
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def equal_yaml(expected_file, actual_file)
|
18
|
+
@expected_content = File.read(expected_file)
|
19
|
+
@actual_content = File.read(actual_file)
|
20
|
+
|
21
|
+
expected = YAML.load(@expected_content).sort_by_key(true).to_a
|
22
|
+
actual = YAML.load(@actual_content).sort_by_key(true).to_a
|
23
|
+
|
24
|
+
expect(expected).to eq(actual)
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Bosh::Deployer::BoshStub do
|
28
|
+
include ::Cancun::Test
|
29
|
+
before{ init_cancun_test }
|
30
|
+
|
31
|
+
let(:path){ 'tmp/'}
|
32
|
+
let(:bosh_stub){ described_class.new(path) }
|
33
|
+
|
34
|
+
describe '#new' do
|
35
|
+
describe 'when path is given' do
|
36
|
+
it 'sets the filename to PATH/stubs' do
|
37
|
+
expect(bosh_stub.filename).to eq('tmp/bosh.yml')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe 'when path is not given' do
|
42
|
+
let(:bosh_stub){ described_class.new }
|
43
|
+
|
44
|
+
it 'sets the filename to ~/.bosh-deployer/stubs' do
|
45
|
+
expect(bosh_stub.filename).to eq('~/.bosh-deployer/stubs/bosh.yml')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#generate' do
|
51
|
+
let(:settings_file) do
|
52
|
+
File.new('spec/fixtures/bosh-bootstrap/settings.yml')
|
53
|
+
end
|
54
|
+
|
55
|
+
let(:args) do
|
56
|
+
[ '', '', '10.10.10.10', '11.11.11.11', '','','', '', '', '', '', '' ]
|
57
|
+
end
|
58
|
+
|
59
|
+
describe 'when .bootstrap/settings.yml exist' do
|
60
|
+
before do
|
61
|
+
`rm -rf tmp ; mkdir tmp`
|
62
|
+
allow_any_instance_of(ReadWriteSettings)
|
63
|
+
.to receive(:open).and_call_original
|
64
|
+
allow_any_instance_of(ReadWriteSettings)
|
65
|
+
.to receive(:open).with('~/.bootstrap/settings.yml')
|
66
|
+
.and_return(settings_file)
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
it 'should generate the stub correctly' do
|
71
|
+
execute do
|
72
|
+
bosh_stub.generate
|
73
|
+
end.and_type *args
|
74
|
+
|
75
|
+
equal_yaml('spec/fixtures/stubs/bosh.yml', 'tmp/bosh.yml')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe 'when .bootstrap/settings.yml does not exist' do
|
80
|
+
let(:args) do
|
81
|
+
[ 'IP', 'SUBNET_ID', '10.10.10.10', '11.11.11.11',
|
82
|
+
'10.10.10.0/24', '10.10.10.1','https://example.com:5000/v2.0',
|
83
|
+
'admin', 'admin', 'dev', '', '', '' ]
|
84
|
+
end
|
85
|
+
before { `rm -rf tmp ; mkdir tmp` }
|
86
|
+
|
87
|
+
it 'should generate the stub correctly' do
|
88
|
+
execute do
|
89
|
+
bosh_stub.generate
|
90
|
+
end.and_type *args
|
91
|
+
|
92
|
+
equal_yaml('spec/fixtures/stubs/bosh.yml', 'tmp/bosh.yml')
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/spec/cli/deployer_spec.rb
CHANGED
@@ -1,17 +1,32 @@
|
|
1
1
|
require 'cli'
|
2
2
|
require 'bosh/cli/commands/deployer' # "bosh bootstrap COMMAND" commands added to bosh CLI
|
3
3
|
require 'bosh-deployer/cli/commands/provision_stemcells'
|
4
|
+
require 'bosh-deployer/cli/commands/generate_stub'
|
4
5
|
|
5
6
|
describe Bosh::Cli::Command::Deployer do
|
6
7
|
let(:cli) do
|
7
8
|
described_class.new(nil)
|
8
9
|
end
|
9
|
-
let(:cmd){ double(Bosh::Deployer::Cli::Commands::ProvisionStemcells) }
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
describe 'provision stemcells' do
|
12
|
+
let(:cmd){ double(Bosh::Deployer::Cli::Commands::ProvisionStemcells) }
|
13
|
+
|
14
|
+
it 'should runs upload stemcell command' do
|
15
|
+
allow(cmd).to receive(:perform)
|
16
|
+
expect(Bosh::Deployer::Cli::Commands::ProvisionStemcells)
|
14
17
|
.to receive(:new).and_return(cmd)
|
15
18
|
cli.provision_stemcells
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'generate stubs' do
|
23
|
+
let(:cmd){ double(Bosh::Deployer::Cli::Commands::GenerateStub) }
|
24
|
+
|
25
|
+
it 'should generate stub' do
|
26
|
+
allow(cmd).to receive(:perform)
|
27
|
+
expect(Bosh::Deployer::Cli::Commands::GenerateStub)
|
28
|
+
.to receive(:new).and_return(cmd)
|
29
|
+
cli.generate_stub('name', 'path')
|
30
|
+
end
|
16
31
|
end
|
17
32
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "bosh-deployer/cli/commands/generate_stub"
|
2
|
+
require "bosh-deployer/bosh_stub"
|
3
|
+
|
4
|
+
describe Bosh::Deployer::Cli::Commands::GenerateStub do
|
5
|
+
let(:cmd) { described_class.new(*args) }
|
6
|
+
|
7
|
+
let(:bosh_stub) { double.as_null_object }
|
8
|
+
let(:path) { 'tmp/' }
|
9
|
+
|
10
|
+
before do
|
11
|
+
allow(Bosh::Deployer::BoshStub).to receive(:new)
|
12
|
+
.and_return(bosh_stub)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'when creating bosh stub' do
|
16
|
+
let(:args){ %w{bosh} }
|
17
|
+
|
18
|
+
describe '#perform' do
|
19
|
+
let(:generate_stub){ cmd.perform }
|
20
|
+
|
21
|
+
describe 'when no stub exists' do
|
22
|
+
it 'generates the stub' do
|
23
|
+
expect(bosh_stub).to receive(:generate)
|
24
|
+
generate_stub
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
provider:
|
3
|
+
name: openstack
|
4
|
+
credentials:
|
5
|
+
openstack_username: admin
|
6
|
+
openstack_api_key: admin
|
7
|
+
openstack_tenant: dev
|
8
|
+
openstack_auth_url: 'https://example.com:5000/v2.0/tokens'
|
9
|
+
openstack_region: ''
|
10
|
+
address:
|
11
|
+
ip: IP
|
12
|
+
subnet_id: SUBNET_ID
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
meta:
|
3
|
+
recursor: IP
|
4
|
+
networks:
|
5
|
+
cloud_properties:
|
6
|
+
net_id: SUBNET_ID
|
7
|
+
security_groups:
|
8
|
+
- ssh
|
9
|
+
- bosh
|
10
|
+
manual:
|
11
|
+
static:
|
12
|
+
- 10.10.10.10 - 11.11.11.11
|
13
|
+
range: 10.10.10.0/24
|
14
|
+
gateway: 10.10.10.1
|
15
|
+
properties:
|
16
|
+
openstack:
|
17
|
+
auth_url: https://example.com:5000/v2.0
|
18
|
+
username: admin
|
19
|
+
api_key: admin
|
20
|
+
tenant: dev
|
21
|
+
default_security_groups:
|
22
|
+
- ssh
|
23
|
+
- bosh
|
24
|
+
default_key_name: firstbosh
|
25
|
+
private_key: ~/.microbosh/ssh/firstbosh.pem
|
@@ -0,0 +1,145 @@
|
|
1
|
+
---
|
2
|
+
director_uuid: DELETE_ME
|
3
|
+
meta:
|
4
|
+
bosh-network:
|
5
|
+
cidr: 10.0.0.0/8
|
6
|
+
floating_static_ips:
|
7
|
+
- 1.2.3.4
|
8
|
+
openstack:
|
9
|
+
stemcell:
|
10
|
+
name: bosh-openstack-kvm-ubuntu-lucid-go_agent
|
11
|
+
version: latest
|
12
|
+
environment: cf
|
13
|
+
jobs:
|
14
|
+
ha_proxy_z1:
|
15
|
+
instances: 1
|
16
|
+
networks:
|
17
|
+
cf1:
|
18
|
+
default:
|
19
|
+
- dns
|
20
|
+
- gateway
|
21
|
+
properties:
|
22
|
+
ha_proxy:
|
23
|
+
ssl_pem: ! 'KEY
|
24
|
+
|
25
|
+
CERTIFICATE'
|
26
|
+
etcd_z1:
|
27
|
+
instances: 1
|
28
|
+
login_z2:
|
29
|
+
instances: 0
|
30
|
+
networks:
|
31
|
+
- type: vip
|
32
|
+
cloud_properties:
|
33
|
+
net_id: MICROBOSH_SUBNET_ID
|
34
|
+
name: floating
|
35
|
+
- subnets:
|
36
|
+
- name: default_unused
|
37
|
+
range: 10.0.0.0/8
|
38
|
+
gateway: 1.1.1.1
|
39
|
+
reserved:
|
40
|
+
- 1.1.1.1 - 2.2.2.2
|
41
|
+
static:
|
42
|
+
- 2.2.2.2 - 3.3.3.3
|
43
|
+
cloud_properties:
|
44
|
+
net_id: MICROBOSH_SUBNET_ID
|
45
|
+
security_groups:
|
46
|
+
- cf-public
|
47
|
+
- cf-private
|
48
|
+
- ssh
|
49
|
+
name: cf1
|
50
|
+
- cloud_properties:
|
51
|
+
net_id: MICROBOSH_SUBNET_ID
|
52
|
+
security_groups:
|
53
|
+
- cf-public
|
54
|
+
- cf-private
|
55
|
+
- ssh
|
56
|
+
range: 10.0.0.0/8
|
57
|
+
type: dynamic
|
58
|
+
name: cf-dynamic
|
59
|
+
- type: manual
|
60
|
+
subnets:
|
61
|
+
- name: default_unused
|
62
|
+
range: 10.0.0.0/23
|
63
|
+
gateway: 10.0.0.1
|
64
|
+
reserved: []
|
65
|
+
static:
|
66
|
+
- 10.0.0.2 - 10.0.0.250
|
67
|
+
cloud_properties:
|
68
|
+
net_id: MICROBOSH_SUBNET_ID
|
69
|
+
security_groups:
|
70
|
+
- cf-public
|
71
|
+
- cf-private
|
72
|
+
- ssh
|
73
|
+
name: cf2
|
74
|
+
properties:
|
75
|
+
login:
|
76
|
+
protocol: http
|
77
|
+
ssl:
|
78
|
+
skip_cert_verify: true
|
79
|
+
domain: (( meta.floating_static_ips.[0] "xip.io" ))
|
80
|
+
loggregator_endpoint:
|
81
|
+
shared_secret: 1p@ss4cf
|
82
|
+
cc:
|
83
|
+
bulk_api_password: 1p@ss4cf
|
84
|
+
db_encryption_key: 1p@ss4cf
|
85
|
+
staging_upload_password: upload-password
|
86
|
+
staging_upload_user: upload-user
|
87
|
+
databases:
|
88
|
+
roles:
|
89
|
+
- name: ccadmin
|
90
|
+
password: ccadmin
|
91
|
+
tag: admin
|
92
|
+
- name: uaaadmin
|
93
|
+
password: uaaadmin
|
94
|
+
tag: admin
|
95
|
+
ccdb:
|
96
|
+
roles:
|
97
|
+
- name: ccadmin
|
98
|
+
password: ccadmin
|
99
|
+
uaadb:
|
100
|
+
roles:
|
101
|
+
- name: uaaadmin
|
102
|
+
password: uaaadmin
|
103
|
+
uaa:
|
104
|
+
admin:
|
105
|
+
client_secret: 1p@ss4cf
|
106
|
+
batch:
|
107
|
+
password: 1p@ss4cf
|
108
|
+
username: batch
|
109
|
+
cc:
|
110
|
+
client_secret: 1p@ss4cf
|
111
|
+
clients:
|
112
|
+
app-direct:
|
113
|
+
secret: 1p@ss4cf
|
114
|
+
developer_console:
|
115
|
+
secret: 1p@ss4cf
|
116
|
+
login:
|
117
|
+
secret: 1p@ss4cf
|
118
|
+
servicesmgmt:
|
119
|
+
secret: 1p@ss4cf
|
120
|
+
space-mail:
|
121
|
+
secret: 1p@ss4cf
|
122
|
+
support-services:
|
123
|
+
secret: 1p@ss4cf
|
124
|
+
jwt:
|
125
|
+
signing_key: ! 'KEY
|
126
|
+
|
127
|
+
KEY'
|
128
|
+
verification_key: ! 'KEY
|
129
|
+
|
130
|
+
KEY'
|
131
|
+
scim:
|
132
|
+
userids_enabled: false
|
133
|
+
users:
|
134
|
+
- admin|admin|scim.write,scim.read,openid,cloud_controller.admin,uaa.admin,password.write
|
135
|
+
- services|1p@ss4cf|scim.write,scim.read,openid,cloud_controller.admin
|
136
|
+
nats:
|
137
|
+
password: nats
|
138
|
+
user: nats
|
139
|
+
dea_next:
|
140
|
+
disk_mb: 10000
|
141
|
+
memory_mb: 1024
|
142
|
+
router:
|
143
|
+
status:
|
144
|
+
password: router
|
145
|
+
user: router
|
data/stubs/bosh.yml.erb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
meta:
|
3
|
+
recursor: <%= recursor_ip %>
|
4
|
+
networks:
|
5
|
+
cloud_properties:
|
6
|
+
net_id: <%= subnet_id %>
|
7
|
+
security_groups:
|
8
|
+
- ssh
|
9
|
+
- bosh
|
10
|
+
manual:
|
11
|
+
static:
|
12
|
+
- <%= static_ip_from %> - <%= static_ip_to %>
|
13
|
+
range: <%= range %>
|
14
|
+
gateway: <%= gateway %>
|
15
|
+
properties:
|
16
|
+
openstack:
|
17
|
+
auth_url: <%= openstack_auth_url %>
|
18
|
+
username: <%= openstack_username %>
|
19
|
+
api_key: <%= openstack_api_key %>
|
20
|
+
tenant: <%= openstack_tenant %>
|
21
|
+
default_security_groups:
|
22
|
+
- ssh
|
23
|
+
- bosh
|
24
|
+
default_key_name: <%= default_key_name %>
|
25
|
+
private_key: <%= private_key %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-deployer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alan Moran
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: readwritesettings
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - '>='
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: cancun
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: rspec
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,16 +112,25 @@ files:
|
|
84
112
|
- bin/bosh-deployer
|
85
113
|
- bosh-deployer.gemspec
|
86
114
|
- lib/bosh-deployer.rb
|
115
|
+
- lib/bosh-deployer/bosh_stub.rb
|
116
|
+
- lib/bosh-deployer/cli/commands/generate_stub.rb
|
87
117
|
- lib/bosh-deployer/cli/commands/provision_stemcells.rb
|
88
118
|
- lib/bosh-deployer/stemcell.rb
|
89
119
|
- lib/bosh-deployer/thor_cli.rb
|
90
120
|
- lib/bosh-deployer/version.rb
|
121
|
+
- lib/bosh/cli/commands/bosh_deployer.rb
|
91
122
|
- lib/bosh/cli/commands/deployer.rb
|
123
|
+
- spec/bosh_stub_spec.rb
|
92
124
|
- spec/cli/deployer_spec.rb
|
125
|
+
- spec/commands/generate_stub_spec.rb
|
93
126
|
- spec/commands/provision_stemcells_spec.rb
|
127
|
+
- spec/fixtures/bosh-bootstrap/settings.yml
|
94
128
|
- spec/fixtures/manifests/bosh.yml
|
95
129
|
- spec/fixtures/manifests/cf.yml
|
130
|
+
- spec/fixtures/stubs/bosh.yml
|
131
|
+
- spec/fixtures/stubs/cloudfoundry.stub.yml
|
96
132
|
- spec/stemcell_spec.rb
|
133
|
+
- stubs/bosh.yml.erb
|
97
134
|
homepage: https://github.com/bonzofenix/bosh-deployer
|
98
135
|
licenses: []
|
99
136
|
metadata: {}
|
@@ -119,8 +156,13 @@ specification_version: 4
|
|
119
156
|
summary: 'bosh-deployer can: - downloads and upload stemcells specifies on a manifest
|
120
157
|
pending: - deploy Bosh - deploy CF'
|
121
158
|
test_files:
|
159
|
+
- spec/bosh_stub_spec.rb
|
122
160
|
- spec/cli/deployer_spec.rb
|
161
|
+
- spec/commands/generate_stub_spec.rb
|
123
162
|
- spec/commands/provision_stemcells_spec.rb
|
163
|
+
- spec/fixtures/bosh-bootstrap/settings.yml
|
124
164
|
- spec/fixtures/manifests/bosh.yml
|
125
165
|
- spec/fixtures/manifests/cf.yml
|
166
|
+
- spec/fixtures/stubs/bosh.yml
|
167
|
+
- spec/fixtures/stubs/cloudfoundry.stub.yml
|
126
168
|
- spec/stemcell_spec.rb
|