bosh-bootstrap 0.11.0 → 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -2,8 +2,8 @@ language: ruby
2
2
  script: bundle exec rake spec:$SUITE
3
3
  rvm:
4
4
  - ruby-1.9.3
5
- # - rbx-19mode
6
- # - ruby-2.0.0 - generates "Cannot find Syck parser for YAML"
5
+ - rbx-19mode
6
+ - ruby-2.0.0
7
7
  notifications:
8
8
  email:
9
9
  recipients:
@@ -21,5 +21,7 @@ env:
21
21
  - secure: "OS3pnXOAVRP0QPDl/Nn/0iBPZbrnn9irFYwEbMJ2fGPsV00u4IYDwoIN5Gzb\nX+cXyiPZB0jdQlbiCMaQEYjYig3fgnDhiLj/MnxkVYtILm+0uPSrX2Zf7jvR\nmxCT5jfTSZoPXQeNi9h8rEqvaqKv4z930xp/Z0QNoZLPWdwY5wk="
22
22
  matrix:
23
23
  allow_failures:
24
+ # - rvm: rbx-19mode
25
+ # - rvm: ruby-2.0.0
24
26
  - env: SUITE=integration:aws:basic
25
27
 
data/ChangeLog.md CHANGED
@@ -3,7 +3,7 @@
3
3
  `bosh-bootstrap` is a command line tool that you can run on your laptop and automatically get a microbosh (and an inception VM) deployed on AWS (with OpenStack & vSphere coming soon).
4
4
 
5
5
  gem install bosh-bootstrap
6
- bosh bootstrap deploy
6
+ bosh-bootstrap deploy
7
7
 
8
8
  ## v0.11
9
9
 
@@ -17,6 +17,7 @@
17
17
  * CLI via bosh plugin (`bosh bootstrap`) rather than a stand alone CLI (`bosh-bootstrap`)
18
18
  * Added `ssh` action to ssh into the microbosh
19
19
  * Added `delete` actions to delete the microbosh (but not the IP address and security groups)
20
+ * Add back `bosh-bootstrap` CLI & remove bosh_cli dependency (v0.11.1)
20
21
 
21
22
  ## v0.10
22
23
 
data/README.md CHANGED
@@ -13,7 +13,7 @@ Bosh Bootstrap currently supports AWS, with OpenStack and vSphere coming soon. T
13
13
  It also performs the task as fast as it is possible. On AWS, if a public AMI has been published for your requested region then it will use that (currently: us-east-1/Virginia).
14
14
 
15
15
  ```
16
- $ bosh bootstrap deploy
16
+ $ bosh-bootstrap deploy
17
17
  Auto-detected infrastructure API credentials at ~/.fog (override with $FOG)
18
18
  1. AWS (default)
19
19
  2. AWS (bosh)
@@ -46,7 +46,7 @@ Confirming: Using address 107.21.194.123
46
46
  Generating ~/.bosh-bootstrap/universes/aws-us-east-1/micro_bosh.yml...
47
47
  Deploying micro bosh server...
48
48
 
49
- $ bosh bootstrap ssh
49
+ $ bosh-bootstrap ssh
50
50
  SSH to micro bosh server...
51
51
 
52
52
  $ bosh-bootstrap delete
@@ -71,12 +71,14 @@ $ gem install bosh-bootstrap
71
71
 
72
72
  ## Usage
73
73
 
74
+ Bosh Bootstrap is available primarily as a standalone CLI `bosh-bootstrap`. If you have the bosh CLI installed, then it is also available as a bosh plugin via `bosh bootstrap`. This readme assumes the former usage.
75
+
74
76
  ### First time usage
75
77
 
76
78
  The first time you use `bosh bootstrap` it will create everything necessary, including a public IP address, security groups, a private key, and the all-important micro bosh that you want. The example output below includes user prompts.
77
79
 
78
80
  ```
79
- $ bosh bootstrap deploy
81
+ $ bosh-bootstrap deploy
80
82
  Auto-detected infrastructure API credentials at ~/.fog (override with $FOG)
81
83
  1. AWS (default)
82
84
  2. AWS (bosh)
@@ -161,22 +163,22 @@ The `deploy` command can be re-run and it will not prompt again for inputs. It a
161
163
  You can open an SSH shell to your micro bosh:
162
164
 
163
165
  ```
164
- $ bosh bootstrap ssh
166
+ $ bosh-bootstrap ssh
165
167
  ```
166
168
 
167
169
  ## Deleting micro bosh
168
170
 
169
- The `bosh bootstrap delete` command will delete the target micro-bosh.
171
+ The `bosh-bootstrap delete` command will delete the target micro-bosh.
170
172
 
171
173
  ```
172
- $ bosh bootstrap delete
174
+ $ bosh-bootstrap delete
173
175
  ```
174
176
 
175
177
  ## Deep dive into the Bosh Bootstrap deploy command
176
178
 
177
- What is actually happening when you run `bosh bootstrap deploy`?
179
+ What is actually happening when you run `bosh-bootstrap deploy`?
178
180
 
179
- At the heart of `bosh bootstrap deploy` is the execution of the micro bosh deployer, a bosh plugin provided to bootstrap a single VM with all the parts of bosh running on it. If you ran this command yourself you would run:
181
+ At the heart of `bosh-bootstrap deploy` is the execution of the micro bosh deployer, a bosh plugin provided to bootstrap a single VM with all the parts of bosh running on it. If you ran this command yourself you would run:
180
182
 
181
183
  ```
182
184
  $ gem install bosh_cli_plugin_micro -s https://s3.amazonaws.com/bosh-jenkins-gems/
@@ -190,7 +192,7 @@ Unfortunately for this simple scenario, there are many little prerequisite steps
190
192
  * publicly available stemcells
191
193
  * custom stemcells generated from the bosh repository.
192
194
 
193
- To understand exactly what the `bosh bootstrap deploy` command is doing, let's start with what the running parts of bosh are and how `bosh micro deploy` deploys them.
195
+ To understand exactly what the `bosh-bootstrap deploy` command is doing, let's start with what the running parts of bosh are and how `bosh micro deploy` deploys them.
194
196
 
195
197
  ### What is in bosh?
196
198
 
@@ -268,7 +270,7 @@ One of the feature of the Bosh Bootstrap is that you can run it from your local
268
270
 
269
271
  ### When do I need an inception server?
270
272
 
271
- There are occasions when it is preferable or required to provision a initial server (called an [inception server](https://github.com/drnic/inception-server)) and to run Bosh Bootstrap (`bosh bootstrap deploy`) within that.
273
+ There are occasions when it is preferable or required to provision a initial server (called an [inception server](https://github.com/drnic/inception-server)) and to run Bosh Bootstrap (`bosh-bootstrap deploy`) within that.
272
274
 
273
275
  * Using a AWS region other than us-east-1 (you need to be in that region to create an AMI)
274
276
  * You want much faster internet between your terminal (an ssh session into your inception server) and your micro bosh and deployed servers
data/TODO.md CHANGED
@@ -6,6 +6,8 @@
6
6
  * bosh name (currently fixed at test-bosh)
7
7
  * ~/.microbosh folder is singular
8
8
 
9
+ * specify an AZ to use in the region
10
+
9
11
  ### Display status
10
12
 
11
13
  ```
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ $:.push File.dirname(__FILE__) + '/../lib'
3
+
4
+ require "rubygems"
5
+ require "bosh-bootstrap"
6
+ require "bosh-bootstrap/thor_cli"
7
+
8
+ Bosh::Bootstrap::ThorCli.start
@@ -22,10 +22,11 @@ EOS
22
22
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
23
23
  gem.require_paths = ["lib"]
24
24
 
25
- gem.add_dependency "cyoi"
25
+ gem.add_dependency "cyoi", "~> 0.4"
26
+ gem.add_dependency "fog", "~> 1.11"
26
27
  gem.add_dependency "readwritesettings", "~> 3.0"
28
+ gem.add_dependency "thor", "~> 0.18"
27
29
  gem.add_dependency "redcard"
28
- gem.add_dependency "bosh_cli"
29
30
  gem.add_development_dependency "rake"
30
31
  gem.add_development_dependency "rspec"
31
32
  gem.add_development_dependency "fakeweb"
@@ -0,0 +1,28 @@
1
+ require "thor"
2
+ require "bosh-bootstrap"
3
+
4
+ module Bosh::Bootstrap
5
+ class ThorCli < Thor
6
+
7
+ desc "deploy", "Configure and bootstrap a micro bosh; or deploy/upgrade existing Micro Bosh"
8
+ def deploy
9
+ require "bosh-bootstrap/cli/commands/deploy"
10
+ deploy_cmd = Bosh::Bootstrap::Cli::Commands::Deploy.new
11
+ deploy_cmd.perform
12
+ end
13
+
14
+ desc "ssh", "SSH into micro bosh"
15
+ def ssh
16
+ require "bosh-bootstrap/cli/commands/ssh"
17
+ cmd = Bosh::Bootstrap::Cli::Commands::SSH.new
18
+ cmd.perform
19
+ end
20
+
21
+ desc "delete", "Delete existing Micro Bosh (does not delete any bosh deployments running)"
22
+ def delete
23
+ require "bosh-bootstrap/cli/commands/delete"
24
+ cmd = Bosh::Bootstrap::Cli::Commands::Delete.new
25
+ cmd.perform
26
+ end
27
+ end
28
+ end
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Bootstrap
3
- VERSION = "0.11.0"
3
+ VERSION = "0.11.1"
4
4
  end
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -9,8 +9,8 @@ Bundler.setup(:default, :test)
9
9
  $:.unshift(File.expand_path("../../lib", __FILE__))
10
10
 
11
11
  require "rspec/core"
12
- require "cli" # bosh CLI
13
- require "bosh/cli/commands/bootstrap" # "bosh bootstrap COMMAND" commands added to bosh CLI
12
+ require "tmpdir"
13
+ require "bosh-bootstrap"
14
14
  require "bosh-bootstrap/cli/helpers"
15
15
 
16
16
  # for the #sh helper
@@ -32,6 +32,12 @@ def files_match(filename, expected_filename)
32
32
  file.should == expected_file
33
33
  end
34
34
 
35
+ def yaml_files_match(filename, expected_filename)
36
+ yaml = YAML.load_file(filename)
37
+ expected_yaml = YAML.load_file(expected_filename)
38
+ yaml.should == expected_yaml
39
+ end
40
+
35
41
  def setup_home_dir
36
42
  home_dir = File.expand_path("../../tmp/home", __FILE__)
37
43
  FileUtils.rm_rf(home_dir)
@@ -1,41 +1,49 @@
1
1
  # Copyright (c) 2012-2013 Stark & Wayne, LLC
2
2
 
3
- require "bosh-bootstrap/cli/commands/deploy"
4
- require "bosh-bootstrap/cli/commands/delete"
5
- require "bosh-bootstrap/cli/commands/ssh"
6
- describe Bosh::Cli::Command::Bootstrap do
7
- include FileUtils
3
+ # By default, this bosh plugin test does not run. To enable it, include the `bosh_cli` gem
4
+ # in the Gemfile.
5
+ begin
6
+ require "cli" # bosh CLI
7
+ require "bosh/cli/commands/bootstrap" # "bosh bootstrap COMMAND" commands added to bosh CLI
8
8
 
9
- before do
10
- FileUtils.mkdir_p(@stemcells_dir = File.join(Dir.mktmpdir, "stemcells"))
11
- FileUtils.mkdir_p(@cache_dir = File.join(Dir.mktmpdir, "cache"))
12
- end
9
+ require "bosh-bootstrap/cli/commands/deploy"
10
+ require "bosh-bootstrap/cli/commands/delete"
11
+ require "bosh-bootstrap/cli/commands/ssh"
12
+ describe Bosh::Cli::Command::Bootstrap do
13
+ include FileUtils
13
14
 
14
- let(:cli) do
15
- cli = Bosh::Cli::Command::Bootstrap.new(nil)
16
- cli.add_option(:non_interactive, true)
17
- cli.add_option(:cache_dir, @cache_dir)
18
- cli
19
- end
15
+ before do
16
+ FileUtils.mkdir_p(@stemcells_dir = File.join(Dir.mktmpdir, "stemcells"))
17
+ FileUtils.mkdir_p(@cache_dir = File.join(Dir.mktmpdir, "cache"))
18
+ end
20
19
 
21
- it "runs deploy command" do
22
- cmd = double(Bosh::Bootstrap::Cli::Commands::Deploy)
23
- cmd.should_receive(:perform)
24
- Bosh::Bootstrap::Cli::Commands::Deploy.stub(:new).and_return(cmd)
25
- cli.deploy
26
- end
20
+ let(:cli) do
21
+ cli = Bosh::Cli::Command::Bootstrap.new(nil)
22
+ cli.add_option(:non_interactive, true)
23
+ cli.add_option(:cache_dir, @cache_dir)
24
+ cli
25
+ end
27
26
 
28
- it "runs delete command" do
29
- cmd = double(Bosh::Bootstrap::Cli::Commands::Delete)
30
- cmd.should_receive(:perform)
31
- Bosh::Bootstrap::Cli::Commands::Delete.stub(:new).and_return(cmd)
32
- cli.delete
33
- end
27
+ it "runs deploy command" do
28
+ cmd = double(Bosh::Bootstrap::Cli::Commands::Deploy)
29
+ cmd.should_receive(:perform)
30
+ Bosh::Bootstrap::Cli::Commands::Deploy.stub(:new).and_return(cmd)
31
+ cli.deploy
32
+ end
33
+
34
+ it "runs delete command" do
35
+ cmd = double(Bosh::Bootstrap::Cli::Commands::Delete)
36
+ cmd.should_receive(:perform)
37
+ Bosh::Bootstrap::Cli::Commands::Delete.stub(:new).and_return(cmd)
38
+ cli.delete
39
+ end
34
40
 
35
- it "runs ssh command" do
36
- cmd = double(Bosh::Bootstrap::Cli::Commands::SSH)
37
- cmd.should_receive(:perform)
38
- Bosh::Bootstrap::Cli::Commands::SSH.stub(:new).and_return(cmd)
39
- cli.ssh
41
+ it "runs ssh command" do
42
+ cmd = double(Bosh::Bootstrap::Cli::Commands::SSH)
43
+ cmd.should_receive(:perform)
44
+ Bosh::Bootstrap::Cli::Commands::SSH.stub(:new).and_return(cmd)
45
+ cli.ssh
46
+ end
40
47
  end
48
+ rescue LoadError
41
49
  end
@@ -58,7 +58,5 @@ describe Bosh::Bootstrap::Cli::Commands::Deploy do
58
58
 
59
59
  capture_stdout { cmd.perform }
60
60
  end
61
- it "delete does nothing if not targetting a deployment"
62
- it "delete runs 'bosh micro delete' & releases IP address; updates settings"
63
61
  end
64
62
  end
@@ -1,3 +1,5 @@
1
+ require "bosh-bootstrap/key_pair"
2
+
1
3
  describe Bosh::Bootstrap::KeyPair do
2
4
  include Bosh::Bootstrap::Cli::Helpers::Settings
3
5
 
@@ -25,7 +25,7 @@ describe Bosh::Bootstrap::MicroboshProviders::AWS do
25
25
 
26
26
  subject.create_microbosh_yml(settings)
27
27
  File.should be_exists(microbosh_yml)
28
- files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.aws_ec2.yml"))
28
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.aws_ec2.yml"))
29
29
  end
30
30
 
31
31
  describe "stemcell" do
@@ -22,6 +22,6 @@ describe Bosh::Bootstrap::MicroboshProviders::OpenStack do
22
22
 
23
23
  subject.create_microbosh_yml(settings)
24
24
  File.should be_exists(microbosh_yml)
25
- files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.yml"))
25
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.openstack.yml"))
26
26
  end
27
27
  end
@@ -37,6 +37,6 @@ describe Bosh::Bootstrap::MicroboshProviders::VSphere do
37
37
 
38
38
  subject.create_microbosh_yml(settings)
39
39
  File.should be_exists(microbosh_yml)
40
- files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.vsphere.yml"))
40
+ yaml_files_match(microbosh_yml, spec_asset("microbosh_yml/micro_bosh.vsphere.yml"))
41
41
  end
42
42
  end
@@ -1,5 +1,6 @@
1
1
  require "readwritesettings"
2
2
  require "fakeweb"
3
+ require "bosh-bootstrap/network_providers"
3
4
  require "bosh-bootstrap/network_providers/aws"
4
5
 
5
6
  describe Bosh::Bootstrap::NetworkProviders::AWS do
@@ -1,3 +1,5 @@
1
+ require "bosh-bootstrap/network"
2
+
1
3
  describe Bosh::Bootstrap::Network do
2
4
  include Bosh::Bootstrap::Cli::Helpers::Settings
3
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,40 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-20 00:00:00.000000000 Z
12
+ date: 2013-05-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cyoi
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: '0.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: '0.4'
30
+ - !ruby/object:Gem::Dependency
31
+ name: fog
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.11'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.11'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: readwritesettings
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -44,23 +60,23 @@ dependencies:
44
60
  - !ruby/object:Gem::Version
45
61
  version: '3.0'
46
62
  - !ruby/object:Gem::Dependency
47
- name: redcard
63
+ name: thor
48
64
  requirement: !ruby/object:Gem::Requirement
49
65
  none: false
50
66
  requirements:
51
- - - ! '>='
67
+ - - ~>
52
68
  - !ruby/object:Gem::Version
53
- version: '0'
69
+ version: '0.18'
54
70
  type: :runtime
55
71
  prerelease: false
56
72
  version_requirements: !ruby/object:Gem::Requirement
57
73
  none: false
58
74
  requirements:
59
- - - ! '>='
75
+ - - ~>
60
76
  - !ruby/object:Gem::Version
61
- version: '0'
77
+ version: '0.18'
62
78
  - !ruby/object:Gem::Dependency
63
- name: bosh_cli
79
+ name: redcard
64
80
  requirement: !ruby/object:Gem::Requirement
65
81
  none: false
66
82
  requirements:
@@ -126,7 +142,8 @@ dependencies:
126
142
  description: Bootstrap a micro bosh universe from one CLI
127
143
  email:
128
144
  - drnicwilliams@gmail.com
129
- executables: []
145
+ executables:
146
+ - bosh-bootstrap
130
147
  extensions: []
131
148
  extra_rdoc_files: []
132
149
  files:
@@ -140,6 +157,7 @@ files:
140
157
  - README.md
141
158
  - Rakefile
142
159
  - TODO.md
160
+ - bin/bosh-bootstrap
143
161
  - bosh-bootstrap.gemspec
144
162
  - lib/bosh-bootstrap.rb
145
163
  - lib/bosh-bootstrap/cli/commands/delete.rb
@@ -161,6 +179,7 @@ files:
161
179
  - lib/bosh-bootstrap/network_providers/aws.rb
162
180
  - lib/bosh-bootstrap/network_providers/dummy.rb
163
181
  - lib/bosh-bootstrap/network_providers/openstack.rb
182
+ - lib/bosh-bootstrap/thor_cli.rb
164
183
  - lib/bosh-bootstrap/version.rb
165
184
  - lib/bosh/cli/commands/bootstrap.rb
166
185
  - spec/assets/.gitkeep
@@ -206,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
225
  version: '0'
207
226
  segments:
208
227
  - 0
209
- hash: 2107311079188106960
228
+ hash: -2381433706831646133
210
229
  requirements: []
211
230
  rubyforge_project:
212
231
  rubygems_version: 1.8.25