bosh-bootstrap 0.11.0 → 0.11.1

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/.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