bosh-bootstrap 0.10.2 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. data/.rspec +1 -0
  2. data/.travis.yml +0 -1
  3. data/ChangeLog.md +23 -4
  4. data/Gemfile +5 -2
  5. data/Guardfile +2 -0
  6. data/README.md +209 -197
  7. data/TODO.md +55 -0
  8. data/bosh-bootstrap.gemspec +5 -12
  9. data/lib/bosh/cli/commands/bootstrap.rb +42 -0
  10. data/lib/bosh-bootstrap/cli/commands/delete.rb +26 -0
  11. data/lib/bosh-bootstrap/cli/commands/deploy.rb +89 -0
  12. data/lib/bosh-bootstrap/cli/commands/ssh.rb +32 -0
  13. data/lib/bosh-bootstrap/cli/helpers/bundle.rb +12 -0
  14. data/lib/bosh-bootstrap/cli/helpers/interactions.rb +15 -0
  15. data/lib/bosh-bootstrap/cli/helpers/settings.rb +61 -0
  16. data/lib/bosh-bootstrap/cli/helpers.rb +11 -0
  17. data/lib/bosh-bootstrap/key_pair.rb +21 -0
  18. data/lib/bosh-bootstrap/microbosh.rb +74 -0
  19. data/lib/bosh-bootstrap/microbosh_providers/aws.rb +104 -0
  20. data/lib/bosh-bootstrap/microbosh_providers/base.rb +50 -0
  21. data/lib/bosh-bootstrap/microbosh_providers/openstack.rb +61 -0
  22. data/lib/bosh-bootstrap/microbosh_providers/vsphere.rb +78 -0
  23. data/lib/bosh-bootstrap/microbosh_providers.rb +11 -0
  24. data/lib/bosh-bootstrap/network.rb +33 -0
  25. data/lib/bosh-bootstrap/network_providers/aws.rb +28 -0
  26. data/lib/bosh-bootstrap/network_providers/dummy.rb +10 -0
  27. data/lib/bosh-bootstrap/network_providers/openstack.rb +28 -0
  28. data/lib/bosh-bootstrap/network_providers.rb +11 -0
  29. data/lib/bosh-bootstrap/version.rb +1 -1
  30. data/lib/bosh-bootstrap.rb +3 -4
  31. data/spec/assets/microbosh_yml/micro_bosh.aws_ec2.yml +37 -0
  32. data/spec/assets/microbosh_yml/micro_bosh.aws_vpc.yml +39 -0
  33. data/spec/assets/microbosh_yml/micro_bosh.openstack.yml +30 -0
  34. data/spec/assets/microbosh_yml/micro_bosh.vsphere.yml +34 -0
  35. data/spec/integration/aws/aws_ec2_basic_spec.rb +39 -0
  36. data/spec/integration/aws/aws_helpers.rb +8 -61
  37. data/spec/spec_helper.rb +8 -3
  38. data/spec/support/capture_stdout.rb +18 -0
  39. data/spec/unit/cli/bootstrap_spec.rb +41 -0
  40. data/spec/unit/commands/delete_spec.rb +20 -0
  41. data/spec/unit/commands/deploy_spec.rb +64 -0
  42. data/spec/unit/commands/ssh_spec.rb +19 -0
  43. data/spec/unit/key_pair_spec.rb +13 -0
  44. data/spec/unit/microbosh_providers/aws_spec.rb +68 -0
  45. data/spec/unit/microbosh_providers/openstack_spec.rb +27 -0
  46. data/spec/unit/microbosh_providers/vsphere_spec.rb +42 -0
  47. data/spec/unit/microbosh_spec.rb +27 -0
  48. data/spec/unit/network_providers/aws_spec.rb +29 -0
  49. data/spec/unit/network_providers/openstack_spec.rb +29 -0
  50. data/spec/unit/network_spec.rb +17 -0
  51. metadata +71 -235
  52. data/CleanupCi.md +0 -8
  53. data/bin/bosh-bootstrap +0 -8
  54. data/docs/README.md +0 -3
  55. data/docs/devstack-openstack-tutorial.md +0 -215
  56. data/lib/bosh/providers/README.md +0 -5
  57. data/lib/bosh/providers/aws.rb +0 -258
  58. data/lib/bosh/providers/base_provider.rb +0 -48
  59. data/lib/bosh/providers/openstack.rb +0 -79
  60. data/lib/bosh/providers.rb +0 -21
  61. data/lib/bosh-bootstrap/cli.rb +0 -1347
  62. data/lib/bosh-bootstrap/commander/README.md +0 -47
  63. data/lib/bosh-bootstrap/commander/command.rb +0 -25
  64. data/lib/bosh-bootstrap/commander/commands.rb +0 -80
  65. data/lib/bosh-bootstrap/commander/local_server.rb +0 -68
  66. data/lib/bosh-bootstrap/commander/remote_script_command.rb +0 -51
  67. data/lib/bosh-bootstrap/commander/remote_server.rb +0 -137
  68. data/lib/bosh-bootstrap/commander/upload_command.rb +0 -17
  69. data/lib/bosh-bootstrap/commander.rb +0 -9
  70. data/lib/bosh-bootstrap/helpers/fog_setup.rb +0 -50
  71. data/lib/bosh-bootstrap/helpers/settings.rb +0 -99
  72. data/lib/bosh-bootstrap/helpers/settings_setter.rb +0 -41
  73. data/lib/bosh-bootstrap/helpers.rb +0 -3
  74. data/lib/bosh-bootstrap/stages/stage_micro_bosh_delete/bosh_micro_delete +0 -19
  75. data/lib/bosh-bootstrap/stages/stage_micro_bosh_delete.rb +0 -90
  76. data/lib/bosh-bootstrap/stages/stage_micro_bosh_deploy/bosh_micro_deploy +0 -79
  77. data/lib/bosh-bootstrap/stages/stage_micro_bosh_deploy/install_key_pair_for_user +0 -23
  78. data/lib/bosh-bootstrap/stages/stage_micro_bosh_deploy.rb +0 -146
  79. data/lib/bosh-bootstrap/stages/stage_micro_bosh_download/download_micro_bosh_stemcell +0 -93
  80. data/lib/bosh-bootstrap/stages/stage_micro_bosh_download.rb +0 -139
  81. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/configure_git +0 -25
  82. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/create_vcap_user +0 -79
  83. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_base_packages +0 -30
  84. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_bosh +0 -11
  85. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_bosh_plugins +0 -25
  86. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_hub +0 -26
  87. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_ruby +0 -30
  88. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/install_useful_gems +0 -29
  89. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm/validate_bosh_deployer +0 -18
  90. data/lib/bosh-bootstrap/stages/stage_prepare_inception_vm.rb +0 -69
  91. data/lib/bosh-bootstrap/stages/stage_salted_password/convert_salted_password +0 -11
  92. data/lib/bosh-bootstrap/stages/stage_salted_password.rb +0 -51
  93. data/lib/bosh-bootstrap/stages/stage_setup_new_bosh/setup_bosh_user +0 -29
  94. data/lib/bosh-bootstrap/stages/stage_setup_new_bosh.rb +0 -51
  95. data/lib/bosh-bootstrap/stages/stage_validate_inception_vm/validate_ubuntu +0 -6
  96. data/lib/bosh-bootstrap/stages/stage_validate_inception_vm.rb +0 -39
  97. data/lib/bosh-bootstrap/stages.rb +0 -10
  98. data/spec/assets/bosh/public_stemcells/aws_micro.out +0 -7
  99. data/spec/assets/micro_bosh_yml/micro_bosh.aws_ec2.yml +0 -35
  100. data/spec/assets/micro_bosh_yml/micro_bosh.aws_vpc.yml +0 -37
  101. data/spec/integration/aws/aws_basic_spec.rb +0 -39
  102. data/spec/integration/aws/aws_edge_prebuilt_ami_spec.rb +0 -46
  103. data/spec/integration/aws/aws_edge_prebuilt_spec.rb +0 -46
  104. data/spec/integration/aws/aws_edge_spec.rb +0 -45
  105. data/spec/unit/aws_spec.rb +0 -177
  106. data/spec/unit/bosh/providers/aws_spec.rb +0 -174
  107. data/spec/unit/cli_spec.rb +0 -134
  108. data/spec/unit/cli_ssh_spec.rb +0 -95
  109. data/spec/unit/cli_upgrade_inception_spec.rb +0 -29
  110. data/spec/unit/settings_setter_spec.rb +0 -29
  111. data/vendor/cache/POpen4-0.1.4.gem +0 -0
  112. data/vendor/cache/Platform-0.4.0.gem +0 -0
  113. data/vendor/cache/activesupport-3.2.8.gem +0 -0
  114. data/vendor/cache/awesome_print-1.1.0.gem +0 -0
  115. data/vendor/cache/aws-s3-0.6.3.gem +0 -0
  116. data/vendor/cache/blobstore_client-0.4.0.gem +0 -0
  117. data/vendor/cache/bosh_cli-1.0.3.gem +0 -0
  118. data/vendor/cache/bosh_common-0.5.4.gem +0 -0
  119. data/vendor/cache/builder-3.2.0.gem +0 -0
  120. data/vendor/cache/coderay-1.0.8.gem +0 -0
  121. data/vendor/cache/diff-lcs-1.1.3.gem +0 -0
  122. data/vendor/cache/escape-0.0.4.gem +0 -0
  123. data/vendor/cache/excon-0.20.1.gem +0 -0
  124. data/vendor/cache/fog-1.8.0.gem +0 -0
  125. data/vendor/cache/formatador-0.2.4.gem +0 -0
  126. data/vendor/cache/guard-1.6.2.gem +0 -0
  127. data/vendor/cache/guard-rspec-2.4.0.gem +0 -0
  128. data/vendor/cache/highline-1.6.18.gem +0 -0
  129. data/vendor/cache/httpclient-2.2.4.gem +0 -0
  130. data/vendor/cache/i18n-0.6.1.gem +0 -0
  131. data/vendor/cache/json_pure-1.6.8.gem +0 -0
  132. data/vendor/cache/listen-0.7.2.gem +0 -0
  133. data/vendor/cache/log4r-1.1.10.gem +0 -0
  134. data/vendor/cache/lumberjack-1.0.2.gem +0 -0
  135. data/vendor/cache/method_source-0.8.1.gem +0 -0
  136. data/vendor/cache/mime-types-1.22.gem +0 -0
  137. data/vendor/cache/multi_json-1.1.0.gem +0 -0
  138. data/vendor/cache/net-scp-1.0.4.gem +0 -0
  139. data/vendor/cache/net-ssh-2.2.2.gem +0 -0
  140. data/vendor/cache/net-ssh-gateway-1.1.0.gem +0 -0
  141. data/vendor/cache/netaddr-1.5.0.gem +0 -0
  142. data/vendor/cache/nokogiri-1.5.9.gem +0 -0
  143. data/vendor/cache/open4-1.3.0.gem +0 -0
  144. data/vendor/cache/progressbar-0.9.2.gem +0 -0
  145. data/vendor/cache/pry-0.9.11.4-java.gem +0 -0
  146. data/vendor/cache/pry-0.9.11.4.gem +0 -0
  147. data/vendor/cache/rake-10.0.3.gem +0 -0
  148. data/vendor/cache/rb-fsevent-0.9.3.gem +0 -0
  149. data/vendor/cache/redcard-1.0.0.gem +0 -0
  150. data/vendor/cache/rspec-2.12.0.gem +0 -0
  151. data/vendor/cache/rspec-core-2.12.2.gem +0 -0
  152. data/vendor/cache/rspec-expectations-2.12.1.gem +0 -0
  153. data/vendor/cache/rspec-mocks-2.12.2.gem +0 -0
  154. data/vendor/cache/ruby-atmos-pure-1.0.5.gem +0 -0
  155. data/vendor/cache/ruby-hmac-0.4.0.gem +0 -0
  156. data/vendor/cache/settingslogic-2.0.9.gem +0 -0
  157. data/vendor/cache/slop-3.4.3.gem +0 -0
  158. data/vendor/cache/spoon-0.0.1.gem +0 -0
  159. data/vendor/cache/terminal-table-1.4.5.gem +0 -0
  160. data/vendor/cache/thor-0.17.0.gem +0 -0
  161. data/vendor/cache/uuidtools-2.1.3.gem +0 -0
  162. data/vendor/cache/xml-simple-1.1.2.gem +0 -0
@@ -1,30 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- if [[ $EUID -ne 0 ]]; then
4
- echo "ERROR: This script must be run as root" 1>&2
5
- exit 1
6
- fi
7
-
8
- set -e # exit immediately if a simple command exits with a non-zero status
9
-
10
- apt-get install python-software-properties
11
- if [ "$(lsb_release --release --short)" == '10.04' ]; then
12
- add-apt-repository ppa:keithw/mosh
13
- else
14
- add-apt-repository -y ppa:keithw/mosh
15
- fi
16
-
17
- apt-get update
18
- apt-get install build-essential libsqlite3-dev curl rsync git-core \
19
- tmux mosh \
20
- libmysqlclient-dev libxml2-dev libxslt-dev libpq-dev libsqlite3-dev \
21
- runit \
22
- genisoimage \
23
- debootstrap kpartx qemu-kvm \
24
- vim -y
25
-
26
- if [ "$(lsb_release --release --short)" == '10.04' ]; then
27
- apt-get install mkpasswd -y
28
- else
29
- apt-get install whois -y
30
- fi
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Install BOSH CLI
4
- #
5
- # Options:
6
- # * $BOSH_RUBYGEM_SOURCE - URL for where bosh rubygems can be downloaded
7
-
8
- set -e # exit immediately if a simple command exits with a non-zero status
9
-
10
- cd /var/vcap/store/inception
11
- bundle install
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Install bosh-cloudfoundry BOSH CLI plugin
4
- #
5
- # Options:
6
- # * $UPGRADE - re-install or upgrade gems if already installed
7
-
8
- set -e # exit immediately if a simple command exits with a non-zero status
9
-
10
- if [[ $EUID -ne 0 ]]; then
11
- echo "ERROR: This script must be run as root" 1>&2
12
- exit 1
13
- fi
14
-
15
- # Install a gem if $UPGRADE exists or if gem not already installed
16
- function install_gem() {
17
- gem_name=$1
18
- if [[ ("${UPGRADE}X" != "X") || "$(gem list $gem_name | grep $gem_name)X" == "X" ]]; then
19
- gem install $gem_name --no-ri --no-rdoc
20
- else
21
- echo gem $gem_name already installed
22
- fi
23
- }
24
-
25
- install_gem bosh-cloudfoundry
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- if [[ $EUID -ne 0 ]]; then
4
- echo "ERROR: This script must be run as root" 1>&2
5
- exit 1
6
- fi
7
-
8
- set -e # exit immediately if a simple command exits with a non-zero status
9
-
10
- cd /var/vcap/store/repos
11
- if [[ ! -d hub ]]; then
12
- git clone git://github.com/defunkt/hub.git
13
- cd hub
14
- else
15
- cd hub
16
- git pull origin master
17
- fi
18
- rake install prefix=/usr/local
19
- chown -R vcap:vcap /var/vcap/store/repos/hub
20
-
21
- if [[ $(grep "hub alias -s" /home/vcap/.bashrc) == "" ]]; then
22
- echo 'adding hub alias to .bashrc'
23
- echo 'eval "$(hub alias -s)"' >> /home/vcap/.bashrc
24
- fi
25
-
26
-
@@ -1,30 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Install ruby 1.9.3
4
- #
5
- # Options:
6
- # * $RUBY_VERSION - override ruby version to test/install
7
- # * $UPGRADE - re-install or upgrade ruby if already installed
8
-
9
- set -e # exit immediately if a simple command exits with a non-zero status
10
-
11
- if [[ $EUID -ne 0 ]]; then
12
- echo "ERROR: This script must be run as root" 1>&2
13
- exit 1
14
- fi
15
-
16
- RUBY_VERSION=ruby-1.9.3
17
-
18
- if [[ "$(which ruby)" == "" || "${UPGRADE}X" != "X" || ! ("$(ruby -v)" =~ "ruby 1.9.3") ]]; then
19
- curl -L https://get.rvm.io | bash -s head --autolibs=3 --ruby=$RUBY_VERSION
20
- source /etc/profile.d/rvm.sh
21
- else
22
- echo $RUBY_VERSION already installed
23
- fi
24
-
25
- sudo usermod -a -G rvm vcap
26
-
27
- if [[ $(grep 'rvm $RUBY_VERSION --default' ~vcap/.profile) == "" ]]; then
28
- echo "setting rvm default for ~vcap user"
29
- echo "rvm $RUBY_VERSION --default" >> ~vcap/.profile
30
- fi
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Install bundler, fog, rake
4
- #
5
- # Options:
6
- # * $UPGRADE - re-install or upgrade gems if already installed
7
-
8
- set -e # exit immediately if a simple command exits with a non-zero status
9
-
10
- if [[ $EUID -ne 0 ]]; then
11
- echo "ERROR: This script must be run as root" 1>&2
12
- exit 1
13
- fi
14
-
15
- # Install a gem if $UPGRADE exists or if gem not already installed
16
- function install_gem() {
17
- gem_name=$1
18
- options=$2
19
- if [[ ("${UPGRADE}X" != "X") || "$(gem list $gem_name | grep $gem_name)X" == "X" ]]; then
20
- gem install $gem_name $options --no-ri --no-rdoc -f
21
- else
22
- echo gem $gem_name already installed
23
- fi
24
- }
25
-
26
- install_gem bundler
27
- install_gem rake
28
- install_gem jazor
29
- install_gem yaml_command
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Validate that BOSH deployer is ready
4
-
5
- set -e # exit immediately if a simple command exits with a non-zero status
6
-
7
- echo "Testing for 'bosh micro deploy' command..."
8
-
9
- bosh_output=$(bosh --no-color help micro)
10
- if [[ "$(echo $bosh_output | grep 'micro deploy')" == "" ]]; then
11
- echo "Failed to install 'bosh micro deploy'. Please investigate issue and report root cause so we can fix it."
12
- echo "Output of 'bosh --no-color help micro':"
13
- echo $bosh_output
14
- exit 1
15
- else
16
- echo "Successfully installed bosh deployer (bosh micro deploy)"
17
- exit 0
18
- fi
@@ -1,69 +0,0 @@
1
- module Bosh::Bootstrap::Stages
2
- class StagePrepareInceptionVm
3
- attr_reader :settings
4
-
5
- def initialize(settings)
6
- @settings = settings
7
- end
8
-
9
- def commands
10
- @commands ||= Bosh::Bootstrap::Commander::Commands.new do |server|
11
- # using inception VM username login, create a vcap user with same authorizations
12
- server.create "vcap user", script("create_vcap_user",
13
- "ORIGUSER" => settings.inception.username),
14
- ssh_username: settings.inception.username, run_as_root: true
15
- # install base Ubuntu packages used for bosh micro deployer
16
- server.install "base packages", script("install_base_packages"), run_as_root: true
17
- server.configure "git", script("configure_git",
18
- "GIT_USER_NAME" => settings["git"]["name"],
19
- "GIT_USER_EMAIL" => settings["git"]["email"])
20
- server.install "ruby 1.9.3", script("install_ruby", "UPGRADE" => settings[:upgrade_deps]),
21
- run_as_root: true
22
- server.install "useful ruby gems", script("install_useful_gems", "UPGRADE" => settings[:upgrade_deps]),
23
- run_as_root: true
24
- server.install "hub", script("install_hub"),
25
- run_as_root: true
26
- server.upload_file "/var/vcap/store/inception/Gemfile", gemfile
27
- server.install "bosh", script("install_bosh")
28
- server.validate "bosh deployer", script("validate_bosh_deployer")
29
- end
30
- end
31
-
32
- private
33
- def stage_name
34
- "stage_prepare_inception_vm"
35
- end
36
-
37
- # Loads local script
38
- # If +variables+, then injects KEY=VALUE environment
39
- # variables into bash scripts.
40
- def script(segment_name, variables={})
41
- path = File.expand_path("../#{stage_name}/#{segment_name}", __FILE__)
42
- if File.exist?(path)
43
- script = File.read(path)
44
- if variables.keys.size > 0
45
- inline_variables = "#!/usr/bin/env bash\n\n"
46
- env_variables = variables.reject { |var| var.is_a?(Symbol) }
47
- env_variables.each { |name, value| inline_variables << "#{name}='#{value}'\n" }
48
- script.gsub!("#!/usr/bin/env bash", inline_variables)
49
- end
50
- script
51
- else
52
- Thor::Base.shell.new.say_status "error", "Missing script lib/bosh-bootstrap/stages/#{stage_name}/#{segment_name}", :red
53
- exit 1
54
- end
55
- end
56
-
57
- # returns a Gemfile to be used to install bosh & other gems
58
- def gemfile
59
- <<-RUBY.gsub(/ /, '')
60
- source 'https://rubygems.org'
61
- source 'https://s3.amazonaws.com/bosh-jenkins-gems/'
62
-
63
- gem "bosh_cli", "~> 1.5.0.pre"
64
- gem "bosh_cli_plugin_micro", "~> 1.5.0.pre"
65
- gem "bosh-cloudfoundry"
66
- RUBY
67
- end
68
- end
69
- end
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Convert $PASSWORD into a salted password
4
- # and return via STDOUT
5
- #
6
- # Requires:
7
- # * $PASSWORD
8
-
9
- set -e # exit immediately if a simple command exits with a non-zero status
10
-
11
- mkpasswd -m sha-512 $PASSWORD
@@ -1,51 +0,0 @@
1
- require "json" # for inline hashes within YAML
2
-
3
- module Bosh::Bootstrap::Stages
4
- class SaltedPassword
5
- attr_reader :settings
6
-
7
- def initialize(settings)
8
- @settings = settings
9
- end
10
-
11
- def commands
12
- @commands ||= Bosh::Bootstrap::Commander::Commands.new do |server|
13
- # use inception VM to generate a salted password (local machine may not have mkpasswd)
14
- server.capture_value "salted password", script("convert_salted_password", "PASSWORD" => settings.bosh.password),
15
- :settings => settings, :save_output_to_settings_key => "bosh.salted_password"
16
- end
17
- end
18
-
19
- def stage_name
20
- "stage_salted_password"
21
- end
22
-
23
- # Loads local script
24
- # If +variables+, then injects KEY=VALUE environment
25
- # variables into bash scripts.
26
- def script(segment_name, variables={})
27
- path = File.expand_path("../#{stage_name}/#{segment_name}", __FILE__)
28
- if File.exist?(path)
29
- script = File.read(path)
30
- if variables.keys.size > 0
31
- env_variables = variables.reject { |var| var.is_a?(Symbol) }
32
-
33
- # inject variables into script if its bash script
34
- inline_variables = "#!/usr/bin/env bash\n\n"
35
- env_variables.each { |name, value| inline_variables << "#{name}='#{value}'\n" }
36
- script.gsub!("#!/usr/bin/env bash", inline_variables)
37
-
38
- # inject variables into script if its ruby script
39
- inline_variables = "#!/usr/bin/env ruby\n\n"
40
- env_variables.each { |name, value| inline_variables << "ENV['#{name}'] = '#{value}'\n" }
41
- script.gsub!("#!/usr/bin/env ruby", inline_variables)
42
- end
43
- script
44
- else
45
- Thor::Base.shell.new.say_status "error", "Missing script lib/bosh-bootstrap/stages/#{stage_name}/#{segment_name}", :red
46
- exit 1
47
- end
48
- end
49
-
50
- end
51
- end
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # Deploys a micro BOSH using "bosh micro deploy"
4
- #
5
- # Required:
6
- # * $BOSH_NAME - name of bosh deployment
7
- # (thus /var/vcap/store/microboshes/deployments/$BOSH_NAME/micro_bosh.yml exists)
8
- # * $BOSH_HOST - public IP of the deployed BOSH
9
- # * $BOSH_USERNAME - user login to be created
10
- # * $BOSH_PASSWORD - password for user login
11
-
12
- set -e # exit immediately if a simple command exits with a non-zero status
13
- set -u # report the usage of uninitialized variables
14
-
15
- cd /var/vcap/store/microboshes/deployments/
16
-
17
- if [[ -f $BOSH_NAME/new_bosh_deployed ]]; then
18
- echo "Initially targeting micro-bosh..."
19
- bosh -u admin -p admin target $BOSH_HOST
20
-
21
- echo "Creating initial user $BOSH_USERNAME..."
22
- bosh login admin admin
23
- bosh create user $BOSH_USERNAME $BOSH_PASSWORD
24
-
25
- rm -f $BOSH_NAME/new_bosh_deployed
26
- fi
27
-
28
- echo "Login as $BOSH_USERNAME..."
29
- bosh login $BOSH_USERNAME $BOSH_PASSWORD
@@ -1,51 +0,0 @@
1
- require "json" # for inline hashes within YAML
2
-
3
- module Bosh::Bootstrap::Stages
4
- class SetupNewBosh
5
- attr_reader :settings
6
-
7
- def initialize(settings)
8
- @settings = settings
9
- end
10
-
11
- def commands
12
- @commands ||= Bosh::Bootstrap::Commander::Commands.new do |server|
13
- server.setup "bosh user", script("setup_bosh_user",
14
- "BOSH_NAME" => settings.bosh_name,
15
- "BOSH_HOST" => settings.bosh.ip_address,
16
- "BOSH_USERNAME" => settings.bosh_username,
17
- "BOSH_PASSWORD" => settings.bosh_password)
18
- end
19
- end
20
-
21
- private
22
- def stage_name
23
- "stage_setup_new_bosh"
24
- end
25
-
26
- # Loads local script
27
- # If +variables+, then injects KEY=VALUE environment
28
- # variables into bash scripts.
29
- def script(segment_name, variables={})
30
- path = File.expand_path("../#{stage_name}/#{segment_name}", __FILE__)
31
- if File.exist?(path)
32
- script = File.read(path)
33
- if variables.keys.size > 0
34
- # inject variables into script if its bash script
35
- inline_variables = "#!/usr/bin/env bash\n\n"
36
- variables.each { |name, value| inline_variables << "#{name}='#{value}'\n" }
37
- script.gsub!("#!/usr/bin/env bash", inline_variables)
38
-
39
- # inject variables into script if its ruby script
40
- inline_variables = "#!/usr/bin/env ruby\n\n"
41
- variables.each { |name, value| inline_variables << "ENV['#{name}'] = '#{value}'\n" }
42
- script.gsub!("#!/usr/bin/env ruby", inline_variables)
43
- end
44
- script
45
- else
46
- Thor::Base.shell.new.say_status "error", "Missing script lib/bosh-bootstrap/stages/#{stage_name}/#{segment_name}", :red
47
- exit 1
48
- end
49
- end
50
- end
51
- end
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- if [[ $(uname -a | grep "Ubuntu") == "" ]]; then
4
- echo "Inception VM must be a Ubuntu server"
5
- exit 1
6
- fi
@@ -1,39 +0,0 @@
1
- module Bosh::Bootstrap::Stages
2
- class StageValidateInceptionVm
3
- attr_reader :settings
4
-
5
- def initialize(settings)
6
- @settings = settings
7
- end
8
-
9
- def commands
10
- @commands ||= Bosh::Bootstrap::Commander::Commands.new do |server|
11
- server.validate "ubuntu", script("validate_ubuntu"), ssh_username: settings.inception.username
12
- end
13
- end
14
-
15
- private
16
- def stage_name
17
- "stage_validate_inception_vm"
18
- end
19
-
20
- # Loads local script
21
- # If +variables+, then injects KEY=VALUE environment
22
- # variables into bash scripts.
23
- def script(segment_name, variables={})
24
- path = File.expand_path("../#{stage_name}/#{segment_name}", __FILE__)
25
- if File.exist?(path)
26
- script = File.read(path)
27
- if variables.keys.size > 0
28
- inline_variables = "#!/usr/bin/env bash\n\n"
29
- variables.each { |name, value| inline_variables << "#{name}=#{value}\n" }
30
- script.gsub!("#!/usr/bin/env bash", inline_variables)
31
- end
32
- script
33
- else
34
- Thor::Base.shell.new.say_status "error", "Missing script lib/bosh-bootstrap/stages/#{stage_name}/#{segment_name}", :red
35
- exit 1
36
- end
37
- end
38
- end
39
- end
@@ -1,10 +0,0 @@
1
- module Bosh::Bootstrap::Stages
2
- end
3
-
4
- require "bosh-bootstrap/stages/stage_validate_inception_vm"
5
- require "bosh-bootstrap/stages/stage_prepare_inception_vm"
6
- require "bosh-bootstrap/stages/stage_micro_bosh_download"
7
- require "bosh-bootstrap/stages/stage_micro_bosh_deploy"
8
- require "bosh-bootstrap/stages/stage_setup_new_bosh"
9
- require "bosh-bootstrap/stages/stage_salted_password"
10
- require "bosh-bootstrap/stages/stage_micro_bosh_delete"
@@ -1,7 +0,0 @@
1
- +-----------------------------------+--------------------+
2
- | Name | Tags |
3
- +-----------------------------------+--------------------+
4
- | micro-bosh-stemcell-aws-0.6.4.tgz | aws, micro, stable |
5
- | micro-bosh-stemcell-aws-0.7.0.tgz | aws, micro, test |
6
- | micro-bosh-stemcell-aws-0.8.1.tgz | aws, micro, test |
7
- +-----------------------------------+--------------------+
@@ -1,35 +0,0 @@
1
- ---
2
- name: test-bosh
3
- env:
4
- bosh:
5
- password: pepper
6
- logging:
7
- level: DEBUG
8
- network:
9
- type: dynamic
10
- vip: $MICROBOSH_IP$
11
- resources:
12
- persistent_disk: 16384
13
- cloud_properties:
14
- instance_type: m1.medium
15
- cloud:
16
- plugin: aws
17
- properties:
18
- aws:
19
- access_key_id: YYY
20
- secret_access_key: XXX
21
- region: us-west-2
22
- ec2_endpoint: ec2.us-west-2.amazonaws.com
23
- default_security_groups:
24
- - test-bosh
25
- default_key_name: test-bosh
26
- ec2_private_key: /home/vcap/.ssh/test-bosh.pem
27
- apply_spec:
28
- agent:
29
- blobstore:
30
- address: $MICROBOSH_IP$
31
- nats:
32
- address: $MICROBOSH_IP$
33
- properties:
34
- aws_registry:
35
- address: $MICROBOSH_IP$
@@ -1,37 +0,0 @@
1
- ---
2
- name: test-bosh
3
- env:
4
- bosh:
5
- password: pepper
6
- logging:
7
- level: DEBUG
8
- network:
9
- type: dynamic
10
- vip: $MICROBOSH_IP$
11
- cloud_properties:
12
- subnet: $SUBNET_ID$
13
- resources:
14
- persistent_disk: 16384
15
- cloud_properties:
16
- instance_type: m1.medium
17
- cloud:
18
- plugin: aws
19
- properties:
20
- aws:
21
- access_key_id: YYY
22
- secret_access_key: XXX
23
- region: us-west-2
24
- ec2_endpoint: ec2.us-west-2.amazonaws.com
25
- default_security_groups:
26
- - test-bosh
27
- default_key_name: test-bosh
28
- ec2_private_key: /home/vcap/.ssh/test-bosh.pem
29
- apply_spec:
30
- agent:
31
- blobstore:
32
- address: $MICROBOSH_IP$
33
- nats:
34
- address: $MICROBOSH_IP$
35
- properties:
36
- aws_registry:
37
- address: $MICROBOSH_IP$
@@ -1,39 +0,0 @@
1
- require File.expand_path("../../../spec_helper", __FILE__)
2
- require File.expand_path("../aws_helpers", __FILE__)
3
-
4
- require "active_support/core_ext/hash/keys"
5
-
6
- describe "AWS deployment using gems and publish stemcells" do
7
- include FileUtils
8
- include Bosh::Bootstrap::Helpers::SettingsSetter
9
- include AwsHelpers
10
-
11
- attr_reader :bosh_name
12
-
13
- before { prepare_aws("basic", aws_region) }
14
- after { destroy_test_constructs(bosh_name) unless keep_after_test? }
15
-
16
- def aws_region
17
- ENV['AWS_REGION'] || "us-west-2"
18
- end
19
-
20
- it "creates an EC2 inception/microbosh with the associated resources" do
21
- create_manifest
22
-
23
- manifest_file = home_file(".bosh_bootstrap", "manifest.yml")
24
- File.should be_exists(manifest_file)
25
-
26
- cmd.deploy
27
-
28
- fog.addresses.should have(2).item
29
- inception_ip_address = fog.addresses.first
30
- inception_ip_address.domain.should == "standard"
31
-
32
- inception_vms = servers_with_sg("#{bosh_name}-inception-vm")
33
- inception_vms.size.should == 1
34
-
35
- micrboshes = servers_with_sg(bosh_name)
36
- micrboshes.size.should == 1
37
- end
38
-
39
- end
@@ -1,46 +0,0 @@
1
- require File.expand_path("../../../spec_helper", __FILE__)
2
- require File.expand_path("../aws_helpers", __FILE__)
3
-
4
- require "active_support/core_ext/hash/keys"
5
-
6
- describe "AWS deployment using very latest prebuilt gems and AMIs (us-east-1 only)" do
7
- include FileUtils
8
- include Bosh::Bootstrap::Helpers::SettingsSetter
9
- include AwsHelpers
10
-
11
- attr_reader :bosh_name
12
-
13
- before { prepare_aws("edge-prebuilt", aws_region) }
14
- # after { destroy_test_constructs(bosh_name) unless keep_after_test? }
15
-
16
- # Jenkins AMIs are produced for us-east-1
17
- def aws_region
18
- "us-east-1"
19
- end
20
-
21
- it "creates an EC2 inception/microbosh with the associated resources" do
22
- create_manifest("edge-prebuilt" => true)
23
-
24
- manifest_file = home_file(".bosh_bootstrap", "manifest.yml")
25
- File.should be_exists(manifest_file)
26
-
27
- cmd.deploy
28
-
29
- ip_adresses = fog.addresses
30
- public_ips = ip_adresses.map(&:public_ip)
31
-
32
- inception_vms = provider.servers_with_sg("#{bosh_name}-inception-vm")
33
- inception_vms.size.should == 1
34
-
35
- # TODO inception VM is not getting its IP address bound correctly
36
- # https://github.com/StarkAndWayne/bosh-bootstrap/issues/174
37
- # public_ips.include?(inception_vms.first.public_ip_address).should be_true
38
-
39
- micrboshes = provider.servers_with_sg(bosh_name)
40
- micrboshes.size.should == 1
41
- public_ips.include?(micrboshes.first.public_ip_address).should be_true
42
-
43
- # TODO - no files in /var/vcap/store/stemcells (since it used AMI)
44
- end
45
-
46
- end
@@ -1,46 +0,0 @@
1
- require File.expand_path("../../../spec_helper", __FILE__)
2
- require File.expand_path("../aws_helpers", __FILE__)
3
-
4
- require "active_support/core_ext/hash/keys"
5
-
6
- describe "AWS deployment using very latest prebuilt gems and stemcells (outside of us-east-1)" do
7
- include FileUtils
8
- include Bosh::Bootstrap::Helpers::SettingsSetter
9
- include AwsHelpers
10
-
11
- attr_reader :bosh_name
12
-
13
- before { prepare_aws("edge-prebuilt", aws_region) }
14
- # after { destroy_test_constructs(bosh_name) unless keep_after_test? }
15
-
16
- # Jenkins AMIs are produced for us-east-1; so pick a different region to test stemcell
17
- def aws_region
18
- ENV['AWS_REGION'] || "us-west-2"
19
- end
20
-
21
- it "creates an EC2 inception/microbosh with the associated resources" do
22
- create_manifest("edge-prebuilt" => true)
23
-
24
- manifest_file = home_file(".bosh_bootstrap", "manifest.yml")
25
- File.should be_exists(manifest_file)
26
-
27
- cmd.deploy
28
-
29
- ip_adresses = fog.addresses
30
- public_ips = ip_adresses.map(&:public_ip)
31
-
32
- inception_vms = provider.servers_with_sg("#{bosh_name}-inception-vm")
33
- inception_vms.size.should == 1
34
-
35
- # TODO inception VM is not getting its IP address bound correctly
36
- # https://github.com/StarkAndWayne/bosh-bootstrap/issues/174
37
- # public_ips.include?(inception_vms.first.public_ip_address).should be_true
38
-
39
- micrboshes = provider.servers_with_sg(bosh_name)
40
- micrboshes.size.should == 1
41
- public_ips.include?(micrboshes.first.public_ip_address).should be_true
42
-
43
- # TODO - no files in /var/vcap/store/stemcells (since it used AMI)
44
- end
45
-
46
- end