inception 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.chef/knife.rb +4 -0
- data/.gitignore +20 -0
- data/.kitchen.yml +42 -0
- data/.rspec +3 -0
- data/.travis.yml +23 -0
- data/Berksfile +8 -0
- data/Berksfile.lock +9 -0
- data/Gemfile +18 -0
- data/LICENSE.txt +22 -0
- data/README.md +139 -0
- data/Rakefile +66 -0
- data/TODO.md +26 -0
- data/bin/bosh-inception +8 -0
- data/config/ssh/kitchen-aws +23 -0
- data/cookbooks/bosh_inception/README.md +15 -0
- data/cookbooks/bosh_inception/attributes/default.rb +20 -0
- data/cookbooks/bosh_inception/files/default/Gemfile.cf +4 -0
- data/cookbooks/bosh_inception/files/default/Gemfile.micro +5 -0
- data/cookbooks/bosh_inception/metadata.rb +32 -0
- data/cookbooks/bosh_inception/recipes/default.rb +15 -0
- data/cookbooks/bosh_inception/recipes/install_bosh.rb +37 -0
- data/cookbooks/bosh_inception/recipes/install_ruby.rb +10 -0
- data/cookbooks/bosh_inception/recipes/mount_store_volume.rb +24 -0
- data/cookbooks/bosh_inception/recipes/packages.rb +23 -0
- data/cookbooks/bosh_inception/recipes/setup_git.rb +34 -0
- data/cookbooks/bosh_inception/recipes/useful_dirs.rb +13 -0
- data/inception.gemspec +42 -0
- data/lib/bosh/providers.rb +41 -0
- data/lib/bosh/providers/README.md +5 -0
- data/lib/bosh/providers/cli/aws_provider_cli.rb +58 -0
- data/lib/bosh/providers/cli/openstack_provider_cli.rb +47 -0
- data/lib/bosh/providers/cli/provider_cli.rb +17 -0
- data/lib/bosh/providers/clients/aws_provider_client.rb +168 -0
- data/lib/bosh/providers/clients/fog_provider_client.rb +161 -0
- data/lib/bosh/providers/clients/openstack_provider_client.rb +65 -0
- data/lib/bosh/providers/constants/aws_constants.rb +25 -0
- data/lib/bosh/providers/constants/openstack_constants.rb +12 -0
- data/lib/inception.rb +9 -0
- data/lib/inception/cli.rb +136 -0
- data/lib/inception/cli_helpers/display.rb +26 -0
- data/lib/inception/cli_helpers/infrastructure.rb +157 -0
- data/lib/inception/cli_helpers/interactions.rb +15 -0
- data/lib/inception/cli_helpers/prepare_deploy_settings.rb +89 -0
- data/lib/inception/cli_helpers/provider.rb +14 -0
- data/lib/inception/cli_helpers/settings.rb +47 -0
- data/lib/inception/inception_server.rb +305 -0
- data/lib/inception/inception_server_cookbook.rb +89 -0
- data/lib/inception/next_deploy_actions.rb +20 -0
- data/lib/inception/version.rb +3 -0
- data/nodes/.gitkeep +0 -0
- data/spec/assets/.gitkeep +0 -0
- data/spec/assets/gitconfig +5 -0
- data/spec/assets/settings/aws-before-server.yml +14 -0
- data/spec/assets/settings/aws-created-server.yml +31 -0
- data/spec/integration/.gitkeep +0 -0
- data/spec/integration/aws/aws_basic_spec.rb +39 -0
- data/spec/spec_helper.rb +50 -0
- data/spec/support/aws/aws_helpers.rb +73 -0
- data/spec/support/settings_helper.rb +20 -0
- data/spec/support/stdout_capture.rb +17 -0
- data/spec/unit/.gitkeep +0 -0
- data/spec/unit/bosh/providers/aws_spec.rb +199 -0
- data/spec/unit/cli_delete_spec.rb +39 -0
- data/spec/unit/cli_deploy_aws_spec.rb +84 -0
- data/spec/unit/cli_ssh_spec.rb +82 -0
- data/spec/unit/inception_server_cookbook_spec.rb +61 -0
- data/spec/unit/inception_server_spec.rb +58 -0
- data/test/integration/default/bats/discover_user.bash +2 -0
- data/test/integration/default/bats/install_ruby.bats +8 -0
- data/test/integration/default/bats/useful_dirs.bats +8 -0
- data/test/integration/default/bats/user.bats +9 -0
- data/test/integration/default/bats/verify_bosh.bats +13 -0
- data/test/integration/default/bats/verify_git.bats +18 -0
- 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,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
|