inception 0.1.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.
Files changed (74) hide show
  1. data/.chef/knife.rb +4 -0
  2. data/.gitignore +20 -0
  3. data/.kitchen.yml +42 -0
  4. data/.rspec +3 -0
  5. data/.travis.yml +23 -0
  6. data/Berksfile +8 -0
  7. data/Berksfile.lock +9 -0
  8. data/Gemfile +18 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +139 -0
  11. data/Rakefile +66 -0
  12. data/TODO.md +26 -0
  13. data/bin/bosh-inception +8 -0
  14. data/config/ssh/kitchen-aws +23 -0
  15. data/cookbooks/bosh_inception/README.md +15 -0
  16. data/cookbooks/bosh_inception/attributes/default.rb +20 -0
  17. data/cookbooks/bosh_inception/files/default/Gemfile.cf +4 -0
  18. data/cookbooks/bosh_inception/files/default/Gemfile.micro +5 -0
  19. data/cookbooks/bosh_inception/metadata.rb +32 -0
  20. data/cookbooks/bosh_inception/recipes/default.rb +15 -0
  21. data/cookbooks/bosh_inception/recipes/install_bosh.rb +37 -0
  22. data/cookbooks/bosh_inception/recipes/install_ruby.rb +10 -0
  23. data/cookbooks/bosh_inception/recipes/mount_store_volume.rb +24 -0
  24. data/cookbooks/bosh_inception/recipes/packages.rb +23 -0
  25. data/cookbooks/bosh_inception/recipes/setup_git.rb +34 -0
  26. data/cookbooks/bosh_inception/recipes/useful_dirs.rb +13 -0
  27. data/inception.gemspec +42 -0
  28. data/lib/bosh/providers.rb +41 -0
  29. data/lib/bosh/providers/README.md +5 -0
  30. data/lib/bosh/providers/cli/aws_provider_cli.rb +58 -0
  31. data/lib/bosh/providers/cli/openstack_provider_cli.rb +47 -0
  32. data/lib/bosh/providers/cli/provider_cli.rb +17 -0
  33. data/lib/bosh/providers/clients/aws_provider_client.rb +168 -0
  34. data/lib/bosh/providers/clients/fog_provider_client.rb +161 -0
  35. data/lib/bosh/providers/clients/openstack_provider_client.rb +65 -0
  36. data/lib/bosh/providers/constants/aws_constants.rb +25 -0
  37. data/lib/bosh/providers/constants/openstack_constants.rb +12 -0
  38. data/lib/inception.rb +9 -0
  39. data/lib/inception/cli.rb +136 -0
  40. data/lib/inception/cli_helpers/display.rb +26 -0
  41. data/lib/inception/cli_helpers/infrastructure.rb +157 -0
  42. data/lib/inception/cli_helpers/interactions.rb +15 -0
  43. data/lib/inception/cli_helpers/prepare_deploy_settings.rb +89 -0
  44. data/lib/inception/cli_helpers/provider.rb +14 -0
  45. data/lib/inception/cli_helpers/settings.rb +47 -0
  46. data/lib/inception/inception_server.rb +305 -0
  47. data/lib/inception/inception_server_cookbook.rb +89 -0
  48. data/lib/inception/next_deploy_actions.rb +20 -0
  49. data/lib/inception/version.rb +3 -0
  50. data/nodes/.gitkeep +0 -0
  51. data/spec/assets/.gitkeep +0 -0
  52. data/spec/assets/gitconfig +5 -0
  53. data/spec/assets/settings/aws-before-server.yml +14 -0
  54. data/spec/assets/settings/aws-created-server.yml +31 -0
  55. data/spec/integration/.gitkeep +0 -0
  56. data/spec/integration/aws/aws_basic_spec.rb +39 -0
  57. data/spec/spec_helper.rb +50 -0
  58. data/spec/support/aws/aws_helpers.rb +73 -0
  59. data/spec/support/settings_helper.rb +20 -0
  60. data/spec/support/stdout_capture.rb +17 -0
  61. data/spec/unit/.gitkeep +0 -0
  62. data/spec/unit/bosh/providers/aws_spec.rb +199 -0
  63. data/spec/unit/cli_delete_spec.rb +39 -0
  64. data/spec/unit/cli_deploy_aws_spec.rb +84 -0
  65. data/spec/unit/cli_ssh_spec.rb +82 -0
  66. data/spec/unit/inception_server_cookbook_spec.rb +61 -0
  67. data/spec/unit/inception_server_spec.rb +58 -0
  68. data/test/integration/default/bats/discover_user.bash +2 -0
  69. data/test/integration/default/bats/install_ruby.bats +8 -0
  70. data/test/integration/default/bats/useful_dirs.bats +8 -0
  71. data/test/integration/default/bats/user.bats +9 -0
  72. data/test/integration/default/bats/verify_bosh.bats +13 -0
  73. data/test/integration/default/bats/verify_git.bats +18 -0
  74. metadata +342 -0
@@ -0,0 +1,39 @@
1
+ require File.expand_path("../../support/aws/aws_helpers", __FILE__)
2
+
3
+ require "fog"
4
+
5
+ describe "AWS deployment deletion" do
6
+ include FileUtils
7
+ include StdoutCapture
8
+ include SettingsHelper
9
+ include AwsHelpers
10
+
11
+ before do
12
+ setup_home_dir
13
+ Fog.mock!
14
+ @cmd = Inception::Cli.new
15
+ setting "provider.name", "aws"
16
+ setting "provider.credentials.aws_access_key_id", "aws_access_key_id"
17
+ setting "provider.credentials.aws_secret_access_key", "aws_secret_access_key"
18
+ setting "provider.region", "us-west-2"
19
+ setting "next_deploy_actions.no_converge", true
20
+ capture_stdout { @cmd.deploy }
21
+ end
22
+
23
+ def perform_delete
24
+ config = { shell: Thor::Base.shell.new }
25
+ capture_stdout { @cmd.class.send(:dispatch, :delete, [], {:"non-interactive" => true}, config) }
26
+ end
27
+
28
+ it "clears out settings.yml" do
29
+ perform_delete
30
+ settings = Settingslogic.new(File.expand_path("~/.bosh_inception/settings.yml"))
31
+ settings.exists?("provider").should_not be_nil
32
+ settings.exists?("git").should_not be_nil
33
+ settings.exists?("inception.provisioned.disk_device").should be_nil
34
+ settings.exists?("inception.provisioned.host").should be_nil
35
+ settings.exists?("inception.provisioned.ip_address").should be_nil
36
+ settings.exists?("inception.key_pair").should be_nil
37
+ settings.exists?("inception.provisioned.disk_device").should be_nil
38
+ end
39
+ end
@@ -0,0 +1,84 @@
1
+ require File.expand_path("../../spec_helper", __FILE__)
2
+ require File.expand_path("../../support/aws/aws_helpers", __FILE__)
3
+
4
+ require "fog"
5
+
6
+ describe "AWS deployment" do
7
+ include FileUtils
8
+ include StdoutCapture
9
+ include SettingsHelper
10
+ include AwsHelpers
11
+
12
+ before do
13
+ setup_home_dir
14
+ Fog.mock!
15
+ @cmd = Inception::Cli.new
16
+ @cmd.stub(:converge_cookbooks)
17
+ @credentials = {aws_access_key_id: "ACCESS", aws_secret_access_key: "SECRET"}
18
+ @fog_credentials = @credentials.merge(provider: "AWS")
19
+ end
20
+
21
+ describe "with simple manifest" do
22
+ before do
23
+ create_manifest(credentials: @credentials)
24
+ capture_stdout { cmd.deploy }
25
+ # cmd.deploy
26
+ end
27
+
28
+ it "populates settings with git.name & git.email from ~/.gitconfig" do
29
+ settings.git.name.should == "Dr Nic Williams"
30
+ settings.git.email.should == "drnicwilliams@gmail.com"
31
+ end
32
+
33
+ it "creates an elastic IP automatically and assigns to settings.inception.provisioned.ip_address" do
34
+ settings.inception.provisioned.ip_address.should_not be_nil
35
+ end
36
+
37
+ it "creates AWS key pair and assigns to inception.key_pair.name / private_key" do
38
+ settings.inception.key_pair.name.should == "inception"
39
+ settings.inception.key_pair.private_key.should_not be_nil
40
+ end
41
+
42
+ it "stores private key in local file" do
43
+ local_private_key = File.expand_path("~/.bosh_inception/ssh/inception")
44
+ File.should be_exist(local_private_key)
45
+ File.read(local_private_key).should == settings.inception.key_pair.private_key
46
+ end
47
+
48
+ it "provisions inception server" do
49
+ settings.inception.flavor.should == "m1.small"
50
+ settings.inception.disk_size.should == 16
51
+ settings.inception.image_id.should == "ami-bf1d8a8f" # us-west-2 13.04 AMI
52
+ settings.inception.security_groups.should == ["ssh"]
53
+
54
+ settings.inception.provisioned.username.should == "ubuntu"
55
+ settings.inception.provisioned.host.should_not be_nil
56
+ settings.inception.provisioned.server_id.should_not be_nil
57
+
58
+ settings.inception.provisioned.disk_device.volume_id.should_not be_nil
59
+ settings.inception.provisioned.disk_device.external.should == "/dev/sdf"
60
+ settings.inception.provisioned.disk_device.internal.should == "/dev/xvdf"
61
+ end
62
+
63
+ end
64
+
65
+ describe "converge inception server if it fails midway" do
66
+ it "use local git config even if already allocated" do
67
+ create_manifest(credentials: @credentials, "git.name" => "Mystery", "git.email" => "mystery@gmail.com")
68
+ capture_stdout { cmd.deploy }
69
+ settings.git.email.should == "drnicwilliams@gmail.com"
70
+ end
71
+
72
+ it "does not provision another IP address if already allocated" do
73
+ create_manifest(credentials: @credentials, "inception.provisioned.ip_address" => "1.2.3.4")
74
+ capture_stdout { cmd.deploy }
75
+ settings.inception.provisioned.ip_address.should == "1.2.3.4"
76
+ end
77
+
78
+ it "provisions another server if server_id id unknown" do
79
+ create_manifest(credentials: @credentials, "inception.provisioned.server_id" => "i-UNKNOWN")
80
+ capture_stdout { cmd.deploy }
81
+ settings.inception.provisioned.server_id.should_not == "i-UNKNOWN"
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,82 @@
1
+ # Copyright (c) 2012-2013 Stark & Wayne, LLC
2
+
3
+ require File.expand_path("../../spec_helper", __FILE__)
4
+
5
+ # Specs for 'ssh' related behavior. Includes CLI commands:
6
+ # * ssh
7
+ # * tmux
8
+ # * mosh
9
+ describe Inception do
10
+ include FileUtils
11
+ include SettingsHelper
12
+
13
+ before do
14
+ setup_home_dir
15
+ @cmd = Inception::Cli.new
16
+ setting "provider.name", "aws"
17
+ setting "provider.credentials.aws_access_key_id", "aws_access_key_id"
18
+ setting "provider.credentials.aws_secret_access_key", "aws_secret_access_key"
19
+ setting "provider.region", "us-west-2"
20
+ setting "inception.key_pair.name", "inception"
21
+ setting "inception.key_pair.private_key", "PRIVATE"
22
+ setting "inception.provisioned.host", "5.5.5.5"
23
+ setting "inception.provisioned.username", "vcap"
24
+ end
25
+
26
+ describe "ssh" do
27
+ let(:private_key_path) { home_file(".bosh_inception/ssh/inception") }
28
+
29
+ describe "normal" do
30
+ it "launches ssh session" do
31
+ @cmd.should_receive(:exit)
32
+ @cmd.should_receive(:system).
33
+ with("ssh -i #{private_key_path} vcap@5.5.5.5")
34
+ @cmd.ssh
35
+ end
36
+ it "runs ssh command" do
37
+ @cmd.should_receive(:exit)
38
+ @cmd.should_receive(:system).
39
+ with("ssh -i #{private_key_path} vcap@5.5.5.5 'some command'")
40
+ @cmd.ssh("some command")
41
+ end
42
+ end
43
+
44
+ describe "tmux" do
45
+ it "launches ssh session" do
46
+ @cmd.should_receive(:exit)
47
+ @cmd.should_receive(:system).
48
+ with("ssh -i #{private_key_path} vcap@5.5.5.5 -t 'tmux attach || tmux new-session'")
49
+ @cmd.tmux
50
+ end
51
+ end
52
+
53
+ describe "mosh" do
54
+ before { Fog.mock! }
55
+ after { Fog.unmock! }
56
+ xit "should check whether mosh is installed" do
57
+ @cmd.should_receive(:system).
58
+ with("mosh --version")
59
+ @cmd.stub!(:exit)
60
+ @cmd.ensure_mosh_installed
61
+ end
62
+ xit "launches mosh session" do
63
+ @cmd.stub!(:ensure_mosh_installed).and_return(true)
64
+ @cmd.should_receive(:exit)
65
+ @cmd.should_receive(:system).
66
+ with("mosh --ssh 'ssh -i #{@private_key_path}' vcap@5.5.5.5")
67
+ @cmd.mosh
68
+ end
69
+ xit "should ensure that the mosh ports are opened" do
70
+ expected_ports = {
71
+ mosh: {
72
+ protocol: "udp",
73
+ ports: (60000..60050)
74
+ }
75
+ }
76
+ @cmd.provider.stub!(:create_security_group)
77
+ .with('default','not used', expected_ports)
78
+ @cmd.ensure_security_group_allows_mosh
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,61 @@
1
+ describe Inception::InceptionServerCookbook do
2
+ include FileUtils
3
+ include StdoutCapture
4
+ include SettingsHelper
5
+
6
+ before do
7
+ setup_home_dir
8
+ Fog.mock!
9
+ setting "provider.name", "aws"
10
+ setting "provider.credentials.aws_access_key_id", "aws_access_key_id"
11
+ setting "provider.credentials.aws_secret_access_key", "aws_secret_access_key"
12
+ setting "provider.region", "us-west-2"
13
+ setting "git.name", "Dr Nic Williams"
14
+ setting "git.email", "drnicwilliams@gmail.com"
15
+ setting "inception.host", "host"
16
+ setting "inception.provisioned.username", "user"
17
+ setting "inception.provisioned.disk_device.internal", "/dev/abc"
18
+ end
19
+
20
+ let(:settings_dir) { File.expand_path("~/.bosh_inception") }
21
+ let(:inception_server) { mock(user_host: "user@host", private_key_path: "path/to/key") }
22
+ subject { Inception::InceptionServerCookbook.new(inception_server, settings, settings_dir) }
23
+
24
+ describe "in prepared settings dir" do
25
+ before do
26
+ attributes = '{"disk":{"mounted":true,"device":"/dev/abc"},"git":{"name":"Dr Nic Williams","email":"drnicwilliams@gmail.com"},"user":{"username":"user"}}'
27
+ cmd_arguments = "user@host -i path/to/key -j '#{attributes}' -r 'bosh_inception'"
28
+ subject.stub(:sh).with("knife solo prepare #{cmd_arguments}")
29
+ subject.prepare
30
+
31
+ subject.stub(:sh).with("knife solo cook #{cmd_arguments}")
32
+ subject.converge
33
+ end
34
+
35
+ it "creates Berksfile" do
36
+ FileUtils.chdir(settings_dir) do
37
+ File.should be_exists("Berksfile")
38
+ end
39
+ end
40
+
41
+ it "copies in cookbook" do
42
+ FileUtils.chdir(settings_dir) do
43
+ File.should be_exists("cookbooks/bosh_inception/recipes/default.rb")
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "after initial converge" do
49
+ it "does not prepare/install chef again" do
50
+ setting "cookbook.prepared", true
51
+ cookbook = Inception::InceptionServerCookbook.new(inception_server, settings, settings_dir)
52
+
53
+ attributes = '{"disk":{"mounted":true,"device":"/dev/abc"},"git":{"name":"Dr Nic Williams","email":"drnicwilliams@gmail.com"},"user":{"username":"user"}}'
54
+ cmd_arguments = "user@host -i path/to/key -j '#{attributes}' -r 'bosh_inception'"
55
+
56
+ subject.stub(:sh).with("knife solo cook #{cmd_arguments}") # just to stub :sh
57
+ subject.prepare
58
+ end
59
+ end
60
+
61
+ end
@@ -0,0 +1,58 @@
1
+ describe Inception::InceptionServer do
2
+ include StdoutCapture
3
+
4
+ describe "new AWS server" do
5
+ let(:provider_attributes) do
6
+ {
7
+ "name" => "aws",
8
+ "region" => "us-west-2",
9
+ "credentials" => {
10
+ "aws_access_key_id" => 'MOCK_AWS_ACCESS_KEY_ID',
11
+ "aws_secret_access_key" => 'MOCK_AWS_SECRET_ACCESS_KEY'
12
+ }
13
+ }
14
+ end
15
+ let(:attributes) do
16
+ {
17
+ "provisioned" => {
18
+ "ip_address" => "54.214.15.178"
19
+ },
20
+ "key_pair" => {
21
+ "name" => "inception",
22
+ "private_key" => "private_key",
23
+ "public_key" => "public_key"
24
+ }
25
+ }
26
+ end
27
+ let(:provider_client) { Bosh::Providers.provider_client(provider_attributes) }
28
+ let(:ssh_dir) { "~/.bosh_inception/ssh" }
29
+ subject { Inception::InceptionServer.new(provider_client, attributes, ssh_dir) }
30
+ let(:fog_compute) { subject.fog_compute }
31
+
32
+ before do
33
+ Fog.mock!
34
+ Fog::Mock.reset
35
+ capture_stdout do
36
+ provider_client.create_key_pair("inception")
37
+ subject.create
38
+ end
39
+ end
40
+
41
+ it "has default security groups" do
42
+ subject.security_groups.should == ["ssh"]
43
+ fog_compute.security_groups.get("ssh").should_not be_nil
44
+ end
45
+
46
+ it "has default flavor" do
47
+ subject.flavor.should == "m1.small"
48
+ end
49
+
50
+ it "has default disk size" do
51
+ subject.disk_size.should == 16
52
+ end
53
+
54
+ xit "is created" do
55
+ fog_compute.servers.size.should == 1
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,2 @@
1
+ export TEST_USER=$(users | head -n1 | awk '{print $1}')
2
+ export TEST_USER_HOME="/home/$TEST_USER"
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bats
2
+
3
+ load discover_user
4
+
5
+ @test "ruby 1.9.3p392 is default" {
6
+ run su - $TEST_USER -c "ruby -v"
7
+ [ "$(echo ${lines[0]} | awk '{print $2}')" = "1.9.3p392" ]
8
+ }
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bats
2
+
3
+ @test "use file dirs created" {
4
+ for dir in microboshes/deployments deployments releases repos stemcells systems tmp bosh_cache
5
+ do
6
+ [ -d /var/vcap/store/$dir ]
7
+ done
8
+ }
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bats
2
+
3
+ load discover_user
4
+
5
+ @test "~/.bosh_cache symlink" {
6
+ run su - $TEST_USER -c "readlink ~/.bosh_cache"
7
+ [ "${lines[0]}" = "/var/vcap/store/bosh_cache" ]
8
+ }
9
+
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env bats
2
+
3
+ load discover_user
4
+
5
+ @test "bosh micro installed" {
6
+ run su - $TEST_USER -c "cd /var/vcap/store/microboshes; bundle exec bosh micro"
7
+ [ "$status" -eq 0 ]
8
+ }
9
+
10
+ @test "bosh-cloudfoundry installed" {
11
+ run su - $TEST_USER -c "cd /var/vcap/store/systems; bundle exec bosh cf"
12
+ [ "$status" -eq 0 ]
13
+ }
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env bats
2
+
3
+ load discover_user
4
+
5
+ @test "git config name is set" {
6
+ run git config -f $TEST_USER_HOME/.gitconfig user.name
7
+ [ "${lines[0]}" = "Nobody" ]
8
+ }
9
+
10
+ @test "git config email is set" {
11
+ run git config -f $TEST_USER_HOME/.gitconfig user.email
12
+ [ "${lines[0]}" = "nobody@in-the-house.com" ]
13
+ }
14
+
15
+ @test "hub installed" {
16
+ run hub
17
+ [ "$status" -eq 0 ]
18
+ }
metadata ADDED
@@ -0,0 +1,342 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: inception
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dr Nic Williams
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: highline
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
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: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: escape
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: json
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: settingslogic
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 2.0.9
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 2.0.9
94
+ - !ruby/object:Gem::Dependency
95
+ name: fog
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: knife-solo
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.3.0.pre
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 0.3.0.pre
126
+ - !ruby/object:Gem::Dependency
127
+ name: bundler
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: '1.3'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: '1.3'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rake
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: rspec
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: test-kitchen
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: 1.0.0.alpha.6
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ~>
188
+ - !ruby/object:Gem::Version
189
+ version: 1.0.0.alpha.6
190
+ - !ruby/object:Gem::Dependency
191
+ name: berkshelf
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ description: Create an inception server for Bosh & general inception of new universes
207
+ email:
208
+ - drnicwilliams@gmail.com
209
+ executables:
210
+ - bosh-inception
211
+ extensions: []
212
+ extra_rdoc_files: []
213
+ files:
214
+ - .chef/knife.rb
215
+ - .gitignore
216
+ - .kitchen.yml
217
+ - .rspec
218
+ - .travis.yml
219
+ - Berksfile
220
+ - Berksfile.lock
221
+ - Gemfile
222
+ - LICENSE.txt
223
+ - README.md
224
+ - Rakefile
225
+ - TODO.md
226
+ - bin/bosh-inception
227
+ - config/ssh/kitchen-aws
228
+ - cookbooks/bosh_inception/README.md
229
+ - cookbooks/bosh_inception/attributes/default.rb
230
+ - cookbooks/bosh_inception/files/default/Gemfile.cf
231
+ - cookbooks/bosh_inception/files/default/Gemfile.micro
232
+ - cookbooks/bosh_inception/metadata.rb
233
+ - cookbooks/bosh_inception/recipes/default.rb
234
+ - cookbooks/bosh_inception/recipes/install_bosh.rb
235
+ - cookbooks/bosh_inception/recipes/install_ruby.rb
236
+ - cookbooks/bosh_inception/recipes/mount_store_volume.rb
237
+ - cookbooks/bosh_inception/recipes/packages.rb
238
+ - cookbooks/bosh_inception/recipes/setup_git.rb
239
+ - cookbooks/bosh_inception/recipes/useful_dirs.rb
240
+ - inception.gemspec
241
+ - lib/bosh/providers.rb
242
+ - lib/bosh/providers/README.md
243
+ - lib/bosh/providers/cli/aws_provider_cli.rb
244
+ - lib/bosh/providers/cli/openstack_provider_cli.rb
245
+ - lib/bosh/providers/cli/provider_cli.rb
246
+ - lib/bosh/providers/clients/aws_provider_client.rb
247
+ - lib/bosh/providers/clients/fog_provider_client.rb
248
+ - lib/bosh/providers/clients/openstack_provider_client.rb
249
+ - lib/bosh/providers/constants/aws_constants.rb
250
+ - lib/bosh/providers/constants/openstack_constants.rb
251
+ - lib/inception.rb
252
+ - lib/inception/cli.rb
253
+ - lib/inception/cli_helpers/display.rb
254
+ - lib/inception/cli_helpers/infrastructure.rb
255
+ - lib/inception/cli_helpers/interactions.rb
256
+ - lib/inception/cli_helpers/prepare_deploy_settings.rb
257
+ - lib/inception/cli_helpers/provider.rb
258
+ - lib/inception/cli_helpers/settings.rb
259
+ - lib/inception/inception_server.rb
260
+ - lib/inception/inception_server_cookbook.rb
261
+ - lib/inception/next_deploy_actions.rb
262
+ - lib/inception/version.rb
263
+ - nodes/.gitkeep
264
+ - spec/assets/.gitkeep
265
+ - spec/assets/gitconfig
266
+ - spec/assets/settings/aws-before-server.yml
267
+ - spec/assets/settings/aws-created-server.yml
268
+ - spec/integration/.gitkeep
269
+ - spec/integration/aws/aws_basic_spec.rb
270
+ - spec/spec_helper.rb
271
+ - spec/support/aws/aws_helpers.rb
272
+ - spec/support/settings_helper.rb
273
+ - spec/support/stdout_capture.rb
274
+ - spec/unit/.gitkeep
275
+ - spec/unit/bosh/providers/aws_spec.rb
276
+ - spec/unit/cli_delete_spec.rb
277
+ - spec/unit/cli_deploy_aws_spec.rb
278
+ - spec/unit/cli_ssh_spec.rb
279
+ - spec/unit/inception_server_cookbook_spec.rb
280
+ - spec/unit/inception_server_spec.rb
281
+ - test/integration/default/bats/discover_user.bash
282
+ - test/integration/default/bats/install_ruby.bats
283
+ - test/integration/default/bats/useful_dirs.bats
284
+ - test/integration/default/bats/user.bats
285
+ - test/integration/default/bats/verify_bosh.bats
286
+ - test/integration/default/bats/verify_git.bats
287
+ homepage: ''
288
+ licenses:
289
+ - MIT
290
+ post_install_message:
291
+ rdoc_options: []
292
+ require_paths:
293
+ - lib
294
+ required_ruby_version: !ruby/object:Gem::Requirement
295
+ none: false
296
+ requirements:
297
+ - - ! '>='
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ segments:
301
+ - 0
302
+ hash: -4309994004909638911
303
+ required_rubygems_version: !ruby/object:Gem::Requirement
304
+ none: false
305
+ requirements:
306
+ - - ! '>='
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ segments:
310
+ - 0
311
+ hash: -4309994004909638911
312
+ requirements: []
313
+ rubyforge_project:
314
+ rubygems_version: 1.8.25
315
+ signing_key:
316
+ specification_version: 3
317
+ summary: CLI, with chef recipes, for creating and preparing an inception server for
318
+ deploying/developing a Bosh universe.
319
+ test_files:
320
+ - spec/assets/.gitkeep
321
+ - spec/assets/gitconfig
322
+ - spec/assets/settings/aws-before-server.yml
323
+ - spec/assets/settings/aws-created-server.yml
324
+ - spec/integration/.gitkeep
325
+ - spec/integration/aws/aws_basic_spec.rb
326
+ - spec/spec_helper.rb
327
+ - spec/support/aws/aws_helpers.rb
328
+ - spec/support/settings_helper.rb
329
+ - spec/support/stdout_capture.rb
330
+ - spec/unit/.gitkeep
331
+ - spec/unit/bosh/providers/aws_spec.rb
332
+ - spec/unit/cli_delete_spec.rb
333
+ - spec/unit/cli_deploy_aws_spec.rb
334
+ - spec/unit/cli_ssh_spec.rb
335
+ - spec/unit/inception_server_cookbook_spec.rb
336
+ - spec/unit/inception_server_spec.rb
337
+ - test/integration/default/bats/discover_user.bash
338
+ - test/integration/default/bats/install_ruby.bats
339
+ - test/integration/default/bats/useful_dirs.bats
340
+ - test/integration/default/bats/user.bats
341
+ - test/integration/default/bats/verify_bosh.bats
342
+ - test/integration/default/bats/verify_git.bats