linecook-gem 0.6.10 → 0.7.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.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linecook-gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.10
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Hamel
@@ -11,201 +11,145 @@ cert_chain: []
11
11
  date: 2015-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: xhyve-ruby
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '='
18
- - !ruby/object:Gem::Version
19
- version: 0.0.6
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 0.0.6
27
- - !ruby/object:Gem::Dependency
28
- name: sshkit
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 1.7.1
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 1.7.1
41
- - !ruby/object:Gem::Dependency
42
- name: sshkey
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 1.8.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 1.8.0
55
- - !ruby/object:Gem::Dependency
56
- name: octokit
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 4.2.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 4.2.0
69
- - !ruby/object:Gem::Dependency
70
- name: chefdepartie
14
+ name: activesupport
71
15
  requirement: !ruby/object:Gem::Requirement
72
16
  requirements:
73
17
  - - '='
74
18
  - !ruby/object:Gem::Version
75
- version: 0.1.2
19
+ version: 4.2.5
76
20
  type: :runtime
77
21
  prerelease: false
78
22
  version_requirements: !ruby/object:Gem::Requirement
79
23
  requirements:
80
24
  - - '='
81
25
  - !ruby/object:Gem::Version
82
- version: 0.1.2
26
+ version: 4.2.5
83
27
  - !ruby/object:Gem::Dependency
84
- name: chef-provisioner
28
+ name: ruby-progressbar
85
29
  requirement: !ruby/object:Gem::Requirement
86
30
  requirements:
87
- - - '='
31
+ - - "~>"
88
32
  - !ruby/object:Gem::Version
89
- version: 0.1.11
33
+ version: '1.7'
90
34
  type: :runtime
91
35
  prerelease: false
92
36
  version_requirements: !ruby/object:Gem::Requirement
93
37
  requirements:
94
- - - '='
38
+ - - "~>"
95
39
  - !ruby/object:Gem::Version
96
- version: 0.1.11
40
+ version: '1.7'
97
41
  - !ruby/object:Gem::Dependency
98
- name: activesupport
42
+ name: ejson
99
43
  requirement: !ruby/object:Gem::Requirement
100
44
  requirements:
101
45
  - - '='
102
46
  - !ruby/object:Gem::Version
103
- version: 4.2.5
47
+ version: 1.0.1
104
48
  type: :runtime
105
49
  prerelease: false
106
50
  version_requirements: !ruby/object:Gem::Requirement
107
51
  requirements:
108
52
  - - '='
109
53
  - !ruby/object:Gem::Version
110
- version: 4.2.5
54
+ version: 1.0.1
111
55
  - !ruby/object:Gem::Dependency
112
- name: ruby-progressbar
56
+ name: aws-sdk
113
57
  requirement: !ruby/object:Gem::Requirement
114
58
  requirements:
115
- - - '='
59
+ - - "~>"
116
60
  - !ruby/object:Gem::Version
117
- version: 1.7.5
61
+ version: '2.3'
118
62
  type: :runtime
119
63
  prerelease: false
120
64
  version_requirements: !ruby/object:Gem::Requirement
121
65
  requirements:
122
- - - '='
66
+ - - "~>"
123
67
  - !ruby/object:Gem::Version
124
- version: 1.7.5
68
+ version: '2.3'
125
69
  - !ruby/object:Gem::Dependency
126
- name: ipaddress
70
+ name: rubyzip
127
71
  requirement: !ruby/object:Gem::Requirement
128
72
  requirements:
129
73
  - - '='
130
74
  - !ruby/object:Gem::Version
131
- version: 0.8.0
75
+ version: 1.1.7
132
76
  type: :runtime
133
77
  prerelease: false
134
78
  version_requirements: !ruby/object:Gem::Requirement
135
79
  requirements:
136
80
  - - '='
137
81
  - !ruby/object:Gem::Version
138
- version: 0.8.0
82
+ version: 1.1.7
139
83
  - !ruby/object:Gem::Dependency
140
- name: encryptor
84
+ name: rbnacl
141
85
  requirement: !ruby/object:Gem::Requirement
142
86
  requirements:
143
87
  - - '='
144
88
  - !ruby/object:Gem::Version
145
- version: 1.3.0
89
+ version: 3.2.0
146
90
  type: :runtime
147
91
  prerelease: false
148
92
  version_requirements: !ruby/object:Gem::Requirement
149
93
  requirements:
150
94
  - - '='
151
95
  - !ruby/object:Gem::Version
152
- version: 1.3.0
96
+ version: 3.2.0
153
97
  - !ruby/object:Gem::Dependency
154
- name: ejson
98
+ name: docker-api
155
99
  requirement: !ruby/object:Gem::Requirement
156
100
  requirements:
157
101
  - - '='
158
102
  - !ruby/object:Gem::Version
159
- version: 1.0.1
103
+ version: 1.28.0
160
104
  type: :runtime
161
105
  prerelease: false
162
106
  version_requirements: !ruby/object:Gem::Requirement
163
107
  requirements:
164
108
  - - '='
165
109
  - !ruby/object:Gem::Version
166
- version: 1.0.1
110
+ version: 1.28.0
167
111
  - !ruby/object:Gem::Dependency
168
- name: aws-sdk
112
+ name: test-kitchen
169
113
  requirement: !ruby/object:Gem::Requirement
170
114
  requirements:
171
115
  - - '='
172
116
  - !ruby/object:Gem::Version
173
- version: 2.2.4
117
+ version: 1.9.0
174
118
  type: :runtime
175
119
  prerelease: false
176
120
  version_requirements: !ruby/object:Gem::Requirement
177
121
  requirements:
178
122
  - - '='
179
123
  - !ruby/object:Gem::Version
180
- version: 2.2.4
124
+ version: 1.9.0
181
125
  - !ruby/object:Gem::Dependency
182
- name: rubyzip
126
+ name: kitchen-sync
183
127
  requirement: !ruby/object:Gem::Requirement
184
128
  requirements:
185
- - - '='
129
+ - - "~>"
186
130
  - !ruby/object:Gem::Version
187
- version: 1.1.7
131
+ version: '2.1'
188
132
  type: :runtime
189
133
  prerelease: false
190
134
  version_requirements: !ruby/object:Gem::Requirement
191
135
  requirements:
192
- - - '='
136
+ - - "~>"
193
137
  - !ruby/object:Gem::Version
194
- version: 1.1.7
138
+ version: '2.1'
195
139
  - !ruby/object:Gem::Dependency
196
- name: rbnacl
140
+ name: kitchen-docker
197
141
  requirement: !ruby/object:Gem::Requirement
198
142
  requirements:
199
143
  - - '='
200
144
  - !ruby/object:Gem::Version
201
- version: 3.2.0
145
+ version: 2.4.0
202
146
  type: :runtime
203
147
  prerelease: false
204
148
  version_requirements: !ruby/object:Gem::Requirement
205
149
  requirements:
206
150
  - - '='
207
151
  - !ruby/object:Gem::Version
208
- version: 3.2.0
152
+ version: 2.4.0
209
153
  - !ruby/object:Gem::Dependency
210
154
  name: rbnacl-libsodium
211
155
  requirement: !ruby/object:Gem::Requirement
@@ -276,8 +220,22 @@ dependencies:
276
220
  - - '='
277
221
  - !ruby/object:Gem::Version
278
222
  version: 4.0.0
223
+ - !ruby/object:Gem::Dependency
224
+ name: pry
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '0.10'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '0.10'
279
237
  description: Build and snapshot a system image for distribution, CI, or both using
280
- real chef cookbooks and a fake server.
238
+ real chef cookbooks and a fake server using test kitchen.
281
239
  email: dale.hamel@srvthe.net
282
240
  executables:
283
241
  - linecook
@@ -286,25 +244,19 @@ extra_rdoc_files: []
286
244
  files:
287
245
  - bin/linecook
288
246
  - lib/linecook-gem.rb
289
- - lib/linecook-gem/builder/build.rb
290
- - lib/linecook-gem/builder/darwin_backend.rb
291
- - lib/linecook-gem/builder/linux_backend.rb
292
- - lib/linecook-gem/builder/lxc.rb
293
- - lib/linecook-gem/builder/manager.rb
247
+ - lib/linecook-gem/baker.rb
248
+ - lib/linecook-gem/baker/docker.rb
294
249
  - lib/linecook-gem/cli.rb
250
+ - lib/linecook-gem/config.rb
251
+ - lib/linecook-gem/image.rb
295
252
  - lib/linecook-gem/image/crypt.rb
296
- - lib/linecook-gem/image/github.rb
297
- - lib/linecook-gem/image/manager.rb
298
253
  - lib/linecook-gem/image/s3.rb
299
- - lib/linecook-gem/packager/ebs.rb
300
- - lib/linecook-gem/packager/manager.rb
301
- - lib/linecook-gem/provisioner/chef-zero.rb
302
- - lib/linecook-gem/provisioner/manager.rb
303
- - lib/linecook-gem/provisioner/packer.rb
304
- - lib/linecook-gem/util/config.rb
254
+ - lib/linecook-gem/packager.rb
255
+ - lib/linecook-gem/packager/packer.rb
256
+ - lib/linecook-gem/packager/route53.rb
257
+ - lib/linecook-gem/packager/squashfs.rb
305
258
  - lib/linecook-gem/util/downloader.rb
306
- - lib/linecook-gem/util/executor.rb
307
- - lib/linecook-gem/util/ssh.rb
259
+ - lib/linecook-gem/util/secrets.rb
308
260
  - lib/linecook-gem/version.rb
309
261
  - man/LINECOOK.1
310
262
  homepage: http://rubygems.org/gems/linecook
@@ -330,5 +282,5 @@ rubyforge_project:
330
282
  rubygems_version: 2.4.8
331
283
  signing_key:
332
284
  specification_version: 4
333
- summary: Build system images using chef zero, LXC, and packer
285
+ summary: Build system images using test kitchen
334
286
  test_files: []
@@ -1,44 +0,0 @@
1
- require 'forwardable'
2
- require 'linecook-gem/builder/manager'
3
-
4
- module Linecook
5
- class Build
6
- extend Forwardable
7
- USERNAME = 'linecook'
8
-
9
- def_instance_delegators :@container, :start, :stop, :ip, :info
10
- attr_reader :type
11
-
12
- def initialize(name, tag: nil, image: nil, id: nil)
13
- Linecook::Builder.start
14
- @type = tag ? "#{name}-#{tag}" : name
15
- @id = id ? "#{@type}-#{id}" : @type
16
- @id = @id.gsub(/[\/|\.]/,'_')
17
- @image = image || Linecook.config[:provisioner][:default_image]
18
- @container = Linecook::Lxc::Container.new(name: @id, image: @image, remote: Linecook::Builder.ssh, tmp: Linecook.config[:tmp])
19
- end
20
-
21
- def clean
22
- Linecook::ImageManager.clean(type: @image[:type]) if @image.is_a?(Hash) && @image[:type]
23
- end
24
-
25
- def ssh
26
- @ssh ||= Linecook::SSH.new(@container.ip, username: USERNAME, proxy: Linecook::Builder.ssh, keyfile: Linecook::SSH.private_key, setup: false)
27
- end
28
-
29
- def snapshot(save: false, resume: false)
30
- path = "/tmp/#{@id}-#{Time.now.to_i}.squashfs"
31
- @container.stop(destroy: false)
32
- Linecook::Builder.ssh.run("sudo mksquashfs #{@container.root} #{path} -wildcards -e 'usr/src' 'var/lib/apt/lists/archive*' 'var/cache/apt/archives'") # FIXME make these excludes dynamic based on OS
33
- @container.resume if resume
34
- path = if save
35
- local_path = File.join(Linecook::ImageManager::IMAGE_PATH, File.basename(path))
36
- Linecook::Builder.ssh.download(path, local: local_path)
37
- Linecook::Builder.ssh.run("sudo rm -f #{path}")
38
- local_path
39
- else
40
- path
41
- end
42
- end
43
- end
44
- end
@@ -1,98 +0,0 @@
1
- require 'securerandom'
2
- require 'linecook-gem/image/manager'
3
- # FIXME: read config values from config file
4
- # - create cache loopback image
5
- # - dd, based on config file.
6
-
7
-
8
- module Linecook
9
- module OSXBuilder
10
- extend self
11
- def backend
12
- XhyveBackend.new
13
- end
14
- end
15
-
16
- class XhyveBackend
17
- RUN_SPEC_PATH = File.join(Linecook::Config::LINECOOK_HOME, 'xhyve.yml').freeze
18
- LINUX_CMDLINE = 'boot=live root=/dev/ram0 live-media=initramfs console=ttyS1,115200 console=tty0 net.ifnames=0 biosdevname=0'.freeze
19
-
20
- attr_reader :ip
21
- def initialize
22
- spec = load_run_spec
23
- @pid = spec[:pid]
24
- @ip = spec[:ip]
25
- @uuid = spec[:uuid]
26
- end
27
-
28
- def info
29
- {ip: @ip, pid: @pid, uuid: @uuid}
30
- end
31
-
32
- def start
33
- launch_guest unless running?
34
- end
35
-
36
- def stop
37
- return false unless @pid
38
- Process.kill('KILL', @pid)
39
- @ip = nil
40
- @pid = nil
41
- save_run_spec
42
- end
43
-
44
- def running?
45
- return false unless @pid
46
- (true if Process.kill(0, @pid) rescue false)
47
- end
48
-
49
- private
50
-
51
- def launch_guest
52
- get_iso
53
- boot_path = File.join(mount_iso, 'BOOT')
54
- puts "Starting xhyve guest..."
55
- @uuid ||= SecureRandom.uuid
56
- guest = Xhyve::Guest.new(
57
- kernel: File.join(boot_path, 'VMLINUZ'),
58
- initrd: File.join(boot_path, 'INITRD'),
59
- cmdline: LINUX_CMDLINE, # boot flags to linux
60
- #blockdevs: 'loop.img', # path to img files to use as block devs # FIXME
61
- uuid: @uuid,
62
- serial: 'com2',
63
- memory: '4G', # FIXME
64
- processors: 1, # number of processors #FIXME
65
- networking: true, # Enable networking? (requires sudo)
66
- acpi: true, # set up acpi? (required for clean shutdown)
67
- )
68
- guest.start
69
- puts "Started with #{guest.mac}... waiting for network"
70
- @ip = guest.ip
71
- @pid = guest.pid
72
- unless @ip
73
- @guest.kill
74
- fail 'Could not acquire ip'
75
- end
76
- puts "Network acquired, IP is #{@ip}"
77
- save_run_spec
78
- # wait_ssh # FIXME: we need to wait until SSH is actually up or we will sometimes timeout
79
- end
80
-
81
- # get and mount the iso
82
- def get_iso
83
- @image_path = Linecook::ImageManager.fetch(:live_iso, profile: :public)
84
- end
85
-
86
- def mount_iso
87
- `hdiutil mount #{@image_path}`.strip.split(/\s+/).last
88
- end
89
-
90
- def save_run_spec
91
- File.write(RUN_SPEC_PATH, YAML.dump(info))
92
- end
93
-
94
- def load_run_spec
95
- File.exists?(RUN_SPEC_PATH) ? YAML.load(File.read(RUN_SPEC_PATH)) : {}
96
- end
97
- end
98
- end