bosh-stemcell 1.2881.0 → 1.2889.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 088896224dc4a7ccf85ecaa586ebdcb8ec23147a
4
- data.tar.gz: 6b161556654c8d3f34ecc2673a2f777c03113b85
3
+ metadata.gz: ba2a6ef7459587f1cff7db279bf62d32d11929f1
4
+ data.tar.gz: 8a34eae0f8cd1ec05b4f72397b636e9f826ee6b4
5
5
  SHA512:
6
- metadata.gz: 9679c0ff11d0da4b7c1960924cad91b06e5184cf4392f89aa0baa86e384320e12cec5ea75d290a0ece26da182cd4fe0ac75628cc5662fcd7a8243aa5264d1ca4
7
- data.tar.gz: e904b130eca5edebfc70dea59e2a550db9d24a0c73292857095ae988076cbd3a0f745bc3d110074d6be4e0f775494e7587b360c3d29a44bf7eeb9869f6475738
6
+ metadata.gz: 1ec689fe1a2938146844d2c1c190a9c77994def83bc1d2698b288d33810d84ef11e2d58f4625094d231aef2319eaf091621e7252aaeeaae768edf41cf29c02e6
7
+ data.tar.gz: b6e5853950d2c6fdb27fe9b92c250c2a6eb7fc9153b628265c51f945199ccef49474481747b88a0786f424a3348d3c3872c768362c9aa3b75b2a9f92f5630801
data/README.md CHANGED
@@ -50,7 +50,7 @@ If you have changes that will require new OS image you need to build one. A stem
50
50
  The arguments to `stemcell:build_os_image` are:
51
51
 
52
52
  1. *`operating_system_name`* identifies which type of OS to fetch. Determines which package repository and packaging tool will be used to download and assemble the files. Must match a value recognized by the [OperatingSystem](lib/bosh/stemcell/operating_system.rb) module. Currently, only `ubuntu` and `centos` are recognized.
53
- 2. *`operating_system_version`* an identifier that the system may use to decide which release of the OS to download. Acceptable values depend on the operating system. For `ubuntu`, use `trusty`. For `centos`, the value is currently ignored.
53
+ 2. *`operating_system_version`* an identifier that the system may use to decide which release of the OS to download. Acceptable values depend on the operating system. For `ubuntu`, use `trusty`. For `centos`, use `6.5` (which builds a CentOS 6.6 OS image) or `7`. No other combinations are presently supported.
54
54
  3. *`os_image_path`* the path to write the finished OS image tarball to. If a file exists at this path already, it will be overwritten without warning.
55
55
 
56
56
  See below [Building the stemcell with local OS image](#building-the-stemcell-with-local-os-image) on how to build stemcell with the new OS image.
@@ -91,3 +91,23 @@ AWS stemcells can be shipped in light format which includes a reference to a pub
91
91
  export BOSH_AWS_SECRET_ACCESS_KEY=YOUR-AWS-SECRET-KEY
92
92
  bundle exec rake stemcell:build_light[/tmp/bosh-stemcell.tgz,hvm]
93
93
  ' remote
94
+
95
+ ### When things go sideways
96
+
97
+ If you find yourself debugging any of the above processes, here is what you need to know:
98
+
99
+ 1. Most of the action happens in Bash scripts, which are referred to as _stages_, and can
100
+ be found in `stemcell_builder/stages/<stage_name>/apply.sh`.
101
+ 2. You should make all changes on your local machine, and sync them over to the AWS stemcell
102
+ building machine using `vagrant provision remote` as explained earlier on this page.
103
+ 3. While debugging a particular stage that is failing, you can resume the process from that
104
+ stage by adding `resume_from=<stage_name>` to the end of your `bundle exec rake` command.
105
+ When a stage's `apply.sh` fails, you should see a message of the form
106
+ `Can't find stage '<stage>' to resume from. Aborting.` so you know which stage failed and
107
+ where you can resume from after fixing the problem.
108
+
109
+ For example:
110
+
111
+ ```
112
+ bundle exec rake stemcell:build_os_image[ubuntu,trusty,/tmp/ubuntu_base_image.tgz] resume_from=rsyslog_build
113
+ ```
@@ -28,8 +28,10 @@ module Bosh::Stemcell
28
28
  attr_reader :version
29
29
 
30
30
  def prepare_build
31
- sanitize
32
- prepare_build_path
31
+ if (ENV['resume_from'] == NIL)
32
+ sanitize
33
+ prepare_build_path
34
+ end
33
35
  copy_stemcell_builder_to_build_path
34
36
  prepare_work_root
35
37
  prepare_stemcell_path
@@ -42,6 +44,7 @@ module Bosh::Stemcell
42
44
  "OS_IMAGE=#{os_image_tarball_path}",
43
45
  'bundle exec rspec -fd',
44
46
  "spec/os_image/common_spec.rb",
47
+ "spec/os_image/#{operating_system.name}_common_spec.rb",
45
48
  "spec/os_image/#{operating_system_spec_name}_spec.rb",
46
49
  ].join(' ')
47
50
  end
@@ -117,11 +120,7 @@ module Bosh::Stemcell
117
120
  end
118
121
 
119
122
  def operating_system_spec_name
120
- spec_name = operating_system.name
121
- if operating_system.version
122
- spec_name = "#{spec_name}_#{operating_system.version}"
123
- end
124
- spec_name
123
+ "#{operating_system.name}_#{operating_system.version}"
125
124
  end
126
125
 
127
126
  def prepare_build_path
@@ -1,8 +1,9 @@
1
1
  module Bosh::Stemcell
2
2
  module OperatingSystem
3
+
3
4
  def self.for(operating_system_name, operating_system_version = nil)
4
5
  case operating_system_name
5
- when 'centos' then Centos.new
6
+ when 'centos' then Centos.new(operating_system_version)
6
7
  when 'ubuntu' then Ubuntu.new(operating_system_version)
7
8
  else raise ArgumentError.new("invalid operating system: #{operating_system_name}")
8
9
  end
@@ -13,7 +14,7 @@ module Bosh::Stemcell
13
14
 
14
15
  def initialize(options = {})
15
16
  @name = options.fetch(:name)
16
- @version = options.fetch(:version, nil)
17
+ @version = options.fetch(:version)
17
18
  end
18
19
 
19
20
  def ==(other)
@@ -22,8 +23,8 @@ module Bosh::Stemcell
22
23
  end
23
24
 
24
25
  class Centos < Base
25
- def initialize
26
- super(name: 'centos')
26
+ def initialize(version)
27
+ super(name: 'centos', version: version)
27
28
  end
28
29
  end
29
30
 
@@ -9,7 +9,7 @@ module Bosh::Stemcell
9
9
 
10
10
  def build(os_image_path)
11
11
  environment.prepare_build
12
- runner.configure_and_apply(collection.operating_system_stages)
12
+ runner.configure_and_apply(collection.operating_system_stages, ENV['resume_from'])
13
13
  archive_handler.compress(environment.chroot_dir, os_image_path)
14
14
  end
15
15
 
@@ -91,20 +91,21 @@ module Bosh::Stemcell
91
91
  end
92
92
 
93
93
  def centos_os_stages
94
- [
95
- :base_centos,
96
- :base_centos_packages,
97
- :base_ssh,
98
- # Bosh steps
99
- :bosh_users,
100
- :bosh_monit,
101
- :bosh_ntpdate,
102
- :bosh_sudoers,
103
- :rsyslog,
104
- :delay_monit_start,
105
- # Install GRUB/kernel/etc
106
- :system_grub,
107
- ]
94
+ os_stages = [
95
+ :base_centos,
96
+ :base_centos_packages,
97
+ :base_ssh,
98
+ bosh_steps,
99
+ :rsyslog_config,
100
+ :delay_monit_start,
101
+ :system_grub,
102
+ ].flatten
103
+
104
+ if operating_system.version.to_f < 7
105
+ os_stages.insert(os_stages.index(:rsyslog_config),:rsyslog_build)
106
+ end
107
+
108
+ os_stages
108
109
  end
109
110
 
110
111
  def ubuntu_os_stages
@@ -119,17 +120,21 @@ module Bosh::Stemcell
119
120
  :bosh_sysstat,
120
121
  :bosh_sysctl,
121
122
  :system_kernel,
122
- # Bosh steps
123
- :bosh_users,
124
- :bosh_monit,
125
- :bosh_ntpdate,
126
- :bosh_sudoers,
127
- :rsyslog,
123
+ bosh_steps,
124
+ :rsyslog_build,
125
+ :rsyslog_config,
128
126
  :delay_monit_start,
129
- # Install GRUB/kernel/etc
130
127
  :system_grub,
131
- # Symlink vim to vim.tiny
132
128
  :vim_tiny,
129
+ ].flatten
130
+ end
131
+
132
+ def bosh_steps
133
+ [
134
+ :bosh_users,
135
+ :bosh_monit,
136
+ :bosh_ntpdate,
137
+ :bosh_sudoers,
133
138
  ]
134
139
  end
135
140
 
@@ -9,7 +9,8 @@ module Bosh::Stemcell
9
9
  @work_path = options.fetch(:work_path)
10
10
  end
11
11
 
12
- def configure_and_apply(stages)
12
+ def configure_and_apply(stages, resume_from_stage = nil)
13
+ stages = resume_from(stages, resume_from_stage)
13
14
  configure(stages)
14
15
  apply(stages)
15
16
  end
@@ -33,9 +34,16 @@ module Bosh::Stemcell
33
34
  puts "=== Applying '#{stage}' stage ==="
34
35
  puts "== Started #{Time.now.strftime('%a %b %e %H:%M:%S %Z %Y')} =="
35
36
 
36
- stage_apply_script = File.join(build_path, 'stages', stage.to_s, 'apply.sh')
37
+ begin
38
+ stage_apply_script = File.join(build_path, 'stages', stage.to_s, 'apply.sh')
39
+
40
+ run_sudo_with_command_env("#{stage_apply_script} #{work_path}")
41
+
42
+ rescue => _
43
+ puts "=== You can resume_from the '#{stage}' stage by using resume_from=#{stage} ==="
44
+ raise
45
+ end
37
46
 
38
- run_sudo_with_command_env("#{stage_apply_script} #{work_path}")
39
47
  end
40
48
  end
41
49
 
@@ -43,6 +51,18 @@ module Bosh::Stemcell
43
51
 
44
52
  attr_reader :stages, :build_path, :command_env, :settings_file, :work_path
45
53
 
54
+ def resume_from(all_stages, resume_from_stage)
55
+ if resume_from_stage != NIL
56
+ stage_index = all_stages.index(resume_from_stage.to_sym)
57
+ if stage_index == NIL
58
+ raise "Can't find stage '#{resume_from_stage}' to resume from. Aborting."
59
+ end
60
+ all_stages.drop(stage_index)
61
+ else
62
+ all_stages
63
+ end
64
+ end
65
+
46
66
  def run_sudo_with_command_env(command)
47
67
  shell = Bosh::Core::Shell.new
48
68
 
@@ -17,7 +17,7 @@ module Bosh::Stemcell
17
17
  stemcell_stages = collection.extract_operating_system_stages +
18
18
  collection.agent_stages +
19
19
  collection.build_stemcell_image_stages
20
- runner.configure_and_apply(stemcell_stages)
20
+ runner.configure_and_apply(stemcell_stages, ENV['resume_from'])
21
21
  end
22
22
 
23
23
  private
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Stemcell
3
- VERSION = '1.2881.0'
3
+ VERSION = '1.2889.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-stemcell
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2881.0
4
+ version: 1.2889.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pivotal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-16 00:00:00.000000000 Z
11
+ date: 2015-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_aws_cpi
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2881.0
19
+ version: 1.2889.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2881.0
26
+ version: 1.2889.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bosh-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2881.0
33
+ version: 1.2889.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.2881.0
40
+ version: 1.2889.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: fakefs
43
43
  requirement: !ruby/object:Gem::Requirement