chef-dk 0.4.0 → 0.5.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +1 -3
- data/README.md +20 -15
- data/lib/chef-dk/cli.rb +18 -1
- data/lib/chef-dk/command/verify.rb +1 -1
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +5 -1
- data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +44 -0
- data/lib/chef-dk/policyfile/uploader.rb +58 -6
- data/lib/chef-dk/policyfile_lock.rb +42 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/{repo/cookbooks → cookbook_readmes}/README-policy.md +0 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/{repo/cookbooks → cookbook_readmes}/README.md +1 -1
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +7 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +3 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +8 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +13 -18
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +4 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +7 -3
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +13 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +6 -13
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +13 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +5 -1
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +5 -1
- data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +5 -20
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +21 -9
- data/spec/spec_helper.rb +8 -0
- data/spec/unit/cli_spec.rb +49 -3
- data/spec/unit/command/generator_commands/app_spec.rb +1 -1
- data/spec/unit/command/generator_commands/cookbook_spec.rb +1 -1
- data/spec/unit/command/generator_commands/repo_spec.rb +46 -50
- data/spec/unit/policyfile/uploader_spec.rb +225 -171
- data/spec/unit/policyfile_evaluation_spec.rb +16 -0
- data/spec/unit/policyfile_lock_build_spec.rb +156 -0
- metadata +18 -9
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/Rakefile +0 -65
- data/lib/chef-dk/skeletons/code_generator/files/default/repo/certificates/README.md +0 -19
- data/lib/chef-dk/skeletons/code_generator/templates/default/repo/config/rake.rb.erb +0 -38
@@ -206,6 +206,22 @@ E
|
|
206
206
|
|
207
207
|
end
|
208
208
|
|
209
|
+
context "with an added cookbook with no options" do
|
210
|
+
|
211
|
+
let(:policyfile_rb) do
|
212
|
+
<<-EOH
|
213
|
+
run_list "foo", "bar"
|
214
|
+
cookbook "baz"
|
215
|
+
EOH
|
216
|
+
end
|
217
|
+
|
218
|
+
it "adds the cookbook to the list of location specs" do
|
219
|
+
expect(policyfile.errors).to eq([])
|
220
|
+
expected_cb_spec = ChefDK::Policyfile::CookbookLocationSpecification.new("baz", ">= 0.0.0", {}, storage_config)
|
221
|
+
expect(policyfile.cookbook_location_specs).to eq("baz" => expected_cb_spec)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
209
225
|
end
|
210
226
|
|
211
227
|
context "with the default source set to a chef server" do
|
@@ -145,8 +145,21 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
+
let(:expected_canonical_revision_string) do
|
149
|
+
<<-REVISION_STRING
|
150
|
+
name:minimal_policyfile
|
151
|
+
run-list-item:recipe[foo]
|
152
|
+
cookbook:foo;id:467dc855408ce8b74f991c5dc2fd72a6aa369b60
|
153
|
+
REVISION_STRING
|
154
|
+
end
|
155
|
+
|
156
|
+
let(:expected_revision_id) do
|
157
|
+
Digest::SHA1.new.hexdigest(expected_canonical_revision_string)
|
158
|
+
end
|
159
|
+
|
148
160
|
let(:compiled_policyfile) do
|
149
161
|
{
|
162
|
+
"revision_id" => expected_revision_id,
|
150
163
|
|
151
164
|
"name" => "minimal_policyfile",
|
152
165
|
|
@@ -175,6 +188,14 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
175
188
|
expect(policyfile_lock.to_lock).to eq(compiled_policyfile)
|
176
189
|
end
|
177
190
|
|
191
|
+
it "generates a canonical revision string" do
|
192
|
+
expect(policyfile_lock.canonical_revision_string).to eq(expected_canonical_revision_string)
|
193
|
+
end
|
194
|
+
|
195
|
+
it "generates a revision id" do
|
196
|
+
expect(policyfile_lock.revision_id).to eq(expected_revision_id)
|
197
|
+
end
|
198
|
+
|
178
199
|
end
|
179
200
|
|
180
201
|
context "with a policyfile containing a local cookbook" do
|
@@ -199,9 +220,23 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
199
220
|
end
|
200
221
|
end
|
201
222
|
|
223
|
+
let(:expected_canonical_revision_string) do
|
224
|
+
<<-REVISION_STRING
|
225
|
+
name:dev_cookbook
|
226
|
+
run-list-item:recipe[bar]
|
227
|
+
cookbook:bar;id:#{cookbook_bar_cksum}
|
228
|
+
REVISION_STRING
|
229
|
+
end
|
230
|
+
|
231
|
+
let(:expected_revision_id) do
|
232
|
+
Digest::SHA1.new.hexdigest(expected_canonical_revision_string)
|
233
|
+
end
|
234
|
+
|
202
235
|
let(:compiled_policyfile) do
|
203
236
|
{
|
204
237
|
|
238
|
+
"revision_id" => expected_revision_id,
|
239
|
+
|
205
240
|
"name" => "dev_cookbook",
|
206
241
|
|
207
242
|
"run_list" => ["recipe[bar]"],
|
@@ -234,6 +269,15 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
234
269
|
actual_lock = policyfile_lock.to_lock
|
235
270
|
expect(actual_lock).to eq(compiled_policyfile)
|
236
271
|
end
|
272
|
+
|
273
|
+
it "generates a canonical revision string" do
|
274
|
+
expect(policyfile_lock.canonical_revision_string).to eq(expected_canonical_revision_string)
|
275
|
+
end
|
276
|
+
|
277
|
+
it "generates a revision id" do
|
278
|
+
expect(policyfile_lock.revision_id).to eq(expected_revision_id)
|
279
|
+
end
|
280
|
+
|
237
281
|
end
|
238
282
|
|
239
283
|
context "with a policyfile using custom identifiers" do
|
@@ -269,9 +313,24 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
269
313
|
|
270
314
|
end
|
271
315
|
|
316
|
+
let(:expected_canonical_revision_string) do
|
317
|
+
<<-REVISION_STRING
|
318
|
+
name:custom_identifier
|
319
|
+
run-list-item:recipe[foo]
|
320
|
+
cookbook:foo;id:1.0.0
|
321
|
+
cookbook:bar;id:0.1.0
|
322
|
+
REVISION_STRING
|
323
|
+
end
|
324
|
+
|
325
|
+
let(:expected_revision_id) do
|
326
|
+
Digest::SHA1.new.hexdigest(expected_canonical_revision_string)
|
327
|
+
end
|
328
|
+
|
272
329
|
let(:compiled_policyfile) do
|
273
330
|
{
|
274
331
|
|
332
|
+
"revision_id" => expected_revision_id,
|
333
|
+
|
275
334
|
"name" => "custom_identifier",
|
276
335
|
|
277
336
|
"run_list" => ["recipe[foo]"],
|
@@ -313,6 +372,14 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
313
372
|
expect(policyfile_lock.to_lock).to eq(compiled_policyfile)
|
314
373
|
end
|
315
374
|
|
375
|
+
it "generates a canonical revision string" do
|
376
|
+
expect(policyfile_lock.canonical_revision_string).to eq(expected_canonical_revision_string)
|
377
|
+
end
|
378
|
+
|
379
|
+
it "generates a revision id" do
|
380
|
+
expect(policyfile_lock.revision_id).to eq(expected_revision_id)
|
381
|
+
end
|
382
|
+
|
316
383
|
end
|
317
384
|
|
318
385
|
context "with a policyfile lock with a mix of cached and local cookbooks" do
|
@@ -361,10 +428,28 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
361
428
|
|
362
429
|
end
|
363
430
|
|
431
|
+
let(:expected_canonical_revision_string) do
|
432
|
+
<<-REVISION_STRING
|
433
|
+
name:basic_example
|
434
|
+
run-list-item:recipe[foo]
|
435
|
+
run-list-item:recipe[bar]
|
436
|
+
run-list-item:recipe[baz::non_default]
|
437
|
+
cookbook:foo;id:#{cookbook_foo_cksum}
|
438
|
+
cookbook:bar;id:#{cookbook_bar_cksum}
|
439
|
+
cookbook:baz;id:#{cookbook_baz_cksum}
|
440
|
+
cookbook:dep_of_bar;id:#{cookbook_dep_of_bar_cksum}
|
441
|
+
REVISION_STRING
|
442
|
+
end
|
443
|
+
|
444
|
+
let(:expected_revision_id) do
|
445
|
+
Digest::SHA1.new.hexdigest(expected_canonical_revision_string)
|
446
|
+
end
|
364
447
|
|
365
448
|
let(:compiled_policyfile) do
|
366
449
|
{
|
367
450
|
|
451
|
+
"revision_id" => expected_revision_id,
|
452
|
+
|
368
453
|
"name" => "basic_example",
|
369
454
|
|
370
455
|
"run_list" => ["recipe[foo]", "recipe[bar]", "recipe[baz::non_default]"],
|
@@ -441,6 +526,14 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
441
526
|
expect(policyfile_lock.to_lock).to eq(compiled_policyfile)
|
442
527
|
end
|
443
528
|
|
529
|
+
it "generates a canonical revision string" do
|
530
|
+
expect(policyfile_lock.canonical_revision_string).to eq(expected_canonical_revision_string)
|
531
|
+
end
|
532
|
+
|
533
|
+
it "generates a revision id" do
|
534
|
+
expect(policyfile_lock.revision_id).to eq(expected_revision_id)
|
535
|
+
end
|
536
|
+
|
444
537
|
end
|
445
538
|
|
446
539
|
context "with solution dependencies specified" do
|
@@ -462,9 +555,23 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
462
555
|
end
|
463
556
|
end
|
464
557
|
|
558
|
+
let(:expected_canonical_revision_string) do
|
559
|
+
<<-REVISION_STRING
|
560
|
+
name:minimal_policyfile
|
561
|
+
run-list-item:recipe[foo]
|
562
|
+
cookbook:foo;id:#{cookbook_foo_cksum}
|
563
|
+
REVISION_STRING
|
564
|
+
end
|
565
|
+
|
566
|
+
let(:expected_revision_id) do
|
567
|
+
Digest::SHA1.new.hexdigest(expected_canonical_revision_string)
|
568
|
+
end
|
569
|
+
|
465
570
|
let(:compiled_policyfile) do
|
466
571
|
{
|
467
572
|
|
573
|
+
"revision_id" => expected_revision_id,
|
574
|
+
|
468
575
|
"name" => "minimal_policyfile",
|
469
576
|
|
470
577
|
"run_list" => ["recipe[foo]"],
|
@@ -511,9 +618,24 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
511
618
|
end
|
512
619
|
end
|
513
620
|
|
621
|
+
let(:expected_canonical_revision_string) do
|
622
|
+
<<-REVISION_STRING
|
623
|
+
name:minimal_policyfile
|
624
|
+
run-list-item:recipe[foo]
|
625
|
+
named-run-list:rl2;run-list-item:recipe[foo::bar]
|
626
|
+
cookbook:foo;id:#{cookbook_foo_cksum}
|
627
|
+
REVISION_STRING
|
628
|
+
end
|
629
|
+
|
630
|
+
let(:expected_revision_id) do
|
631
|
+
Digest::SHA1.new.hexdigest(expected_canonical_revision_string)
|
632
|
+
end
|
633
|
+
|
514
634
|
let(:compiled_policyfile) do
|
515
635
|
{
|
516
636
|
|
637
|
+
"revision_id" => expected_revision_id,
|
638
|
+
|
517
639
|
"name" => "minimal_policyfile",
|
518
640
|
|
519
641
|
"run_list" => ["recipe[foo]"],
|
@@ -540,6 +662,14 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
540
662
|
expect(policyfile_lock.to_lock).to eq(compiled_policyfile)
|
541
663
|
end
|
542
664
|
|
665
|
+
it "generates a canonical revision string" do
|
666
|
+
expect(policyfile_lock.canonical_revision_string).to eq(expected_canonical_revision_string)
|
667
|
+
end
|
668
|
+
|
669
|
+
it "generates a revision id" do
|
670
|
+
expect(policyfile_lock.revision_id).to eq(expected_revision_id)
|
671
|
+
end
|
672
|
+
|
543
673
|
end
|
544
674
|
|
545
675
|
describe "building a policyfile lock from a policyfile compiler" do
|
@@ -589,9 +719,27 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
589
719
|
ChefDK::PolicyfileLock.build_from_compiler(policyfile_compiler, storage_config)
|
590
720
|
end
|
591
721
|
|
722
|
+
|
723
|
+
let(:expected_canonical_revision_string) do
|
724
|
+
<<-REVISION_STRING
|
725
|
+
name:my-policyfile
|
726
|
+
run-list-item:recipe[foo::default]
|
727
|
+
run-list-item:recipe[bar::default]
|
728
|
+
named-run-list:rl2;run-list-item:recipe[bar::default]
|
729
|
+
cookbook:foo;id:#{cookbook_foo_cksum}
|
730
|
+
cookbook:bar;id:#{cookbook_bar_cksum}
|
731
|
+
REVISION_STRING
|
732
|
+
end
|
733
|
+
|
734
|
+
let(:expected_revision_id) do
|
735
|
+
Digest::SHA1.new.hexdigest(expected_canonical_revision_string)
|
736
|
+
end
|
737
|
+
|
592
738
|
let(:compiled_policyfile) do
|
593
739
|
{
|
594
740
|
|
741
|
+
"revision_id" => expected_revision_id,
|
742
|
+
|
595
743
|
"name" => "my-policyfile",
|
596
744
|
|
597
745
|
"run_list" => ["recipe[foo::default]", "recipe[bar::default]"],
|
@@ -656,6 +804,14 @@ describe ChefDK::PolicyfileLock, "building a lockfile" do
|
|
656
804
|
expect(policyfile_lock.to_lock).to eq(compiled_policyfile)
|
657
805
|
end
|
658
806
|
|
807
|
+
it "generates a canonical revision string" do
|
808
|
+
expect(policyfile_lock.canonical_revision_string).to eq(expected_canonical_revision_string)
|
809
|
+
end
|
810
|
+
|
811
|
+
it "generates a revision id" do
|
812
|
+
expect(policyfile_lock.revision_id).to eq(expected_revision_id)
|
813
|
+
end
|
814
|
+
|
659
815
|
end
|
660
816
|
|
661
817
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-dk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel DeLeo
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-03-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: mixlib-cli
|
@@ -67,6 +67,9 @@ dependencies:
|
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '12.0'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 12.2.0.rc.2
|
70
73
|
type: :runtime
|
71
74
|
prerelease: false
|
72
75
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,6 +77,9 @@ dependencies:
|
|
74
77
|
- - "~>"
|
75
78
|
- !ruby/object:Gem::Version
|
76
79
|
version: '12.0'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 12.2.0.rc.2
|
77
83
|
- !ruby/object:Gem::Dependency
|
78
84
|
name: solve
|
79
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -223,15 +229,19 @@ files:
|
|
223
229
|
- lib/chef-dk/shell_out.rb
|
224
230
|
- lib/chef-dk/skeletons/code_generator/files/default/Berksfile
|
225
231
|
- lib/chef-dk/skeletons/code_generator/files/default/chefignore
|
232
|
+
- lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md
|
233
|
+
- lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md
|
226
234
|
- lib/chef-dk/skeletons/code_generator/files/default/gitignore
|
227
235
|
- lib/chef-dk/skeletons/code_generator/files/default/repo/README.md
|
228
|
-
- lib/chef-dk/skeletons/code_generator/files/default/repo/
|
229
|
-
- lib/chef-dk/skeletons/code_generator/files/default/repo/
|
230
|
-
- lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/
|
231
|
-
- lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/README.md
|
236
|
+
- lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb
|
237
|
+
- lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb
|
238
|
+
- lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb
|
232
239
|
- lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md
|
240
|
+
- lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json
|
233
241
|
- lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md
|
242
|
+
- lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json
|
234
243
|
- lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md
|
244
|
+
- lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json
|
235
245
|
- lib/chef-dk/skeletons/code_generator/files/default/serverspec_spec_helper.rb
|
236
246
|
- lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb
|
237
247
|
- lib/chef-dk/skeletons/code_generator/metadata.rb
|
@@ -258,7 +268,6 @@ files:
|
|
258
268
|
- lib/chef-dk/skeletons/code_generator/templates/default/provider.rb.erb
|
259
269
|
- lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb
|
260
270
|
- lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb
|
261
|
-
- lib/chef-dk/skeletons/code_generator/templates/default/repo/config/rake.rb.erb
|
262
271
|
- lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb
|
263
272
|
- lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb
|
264
273
|
- lib/chef-dk/skeletons/code_generator/templates/default/serverspec_default_spec.rb.erb
|
@@ -415,9 +424,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
415
424
|
version: '2.0'
|
416
425
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
417
426
|
requirements:
|
418
|
-
- - "
|
427
|
+
- - ">"
|
419
428
|
- !ruby/object:Gem::Version
|
420
|
-
version:
|
429
|
+
version: 1.3.1
|
421
430
|
requirements: []
|
422
431
|
rubyforge_project:
|
423
432
|
rubygems_version: 2.4.2
|
@@ -1,65 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Rakefile for Chef Server Repository
|
3
|
-
#
|
4
|
-
# Author:: Adam Jacob (<adam@opscode.com>)
|
5
|
-
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
6
|
-
# License:: Apache License, Version 2.0
|
7
|
-
#
|
8
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
# you may not use this file except in compliance with the License.
|
10
|
-
# You may obtain a copy of the License at
|
11
|
-
#
|
12
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
#
|
14
|
-
# Unless required by applicable law or agreed to in writing, software
|
15
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
# See the License for the specific language governing permissions and
|
18
|
-
# limitations under the License.
|
19
|
-
#
|
20
|
-
|
21
|
-
require 'rubygems'
|
22
|
-
require 'chef'
|
23
|
-
require 'json'
|
24
|
-
|
25
|
-
# Load constants from rake config file.
|
26
|
-
require File.join(File.dirname(__FILE__), 'config', 'rake')
|
27
|
-
|
28
|
-
# Detect the version control system and assign to $vcs. Used by the update
|
29
|
-
# task in chef_repo.rake (below). The install task calls update, so this
|
30
|
-
# is run whenever the repo is installed.
|
31
|
-
#
|
32
|
-
# Comment out these lines to skip the update.
|
33
|
-
|
34
|
-
if File.directory?(File.join(TOPDIR, ".svn"))
|
35
|
-
$vcs = :svn
|
36
|
-
elsif File.directory?(File.join(TOPDIR, ".git"))
|
37
|
-
$vcs = :git
|
38
|
-
end
|
39
|
-
|
40
|
-
# Load common, useful tasks from Chef.
|
41
|
-
# rake -T to see the tasks this loads.
|
42
|
-
|
43
|
-
load 'chef/tasks/chef_repo.rake'
|
44
|
-
|
45
|
-
desc "Bundle a single cookbook for distribution"
|
46
|
-
task :bundle_cookbook => [ :metadata ]
|
47
|
-
task :bundle_cookbook, :cookbook do |t, args|
|
48
|
-
tarball_name = "#{args.cookbook}.tar.gz"
|
49
|
-
temp_dir = File.join(Dir.tmpdir, "chef-upload-cookbooks")
|
50
|
-
temp_cookbook_dir = File.join(temp_dir, args.cookbook)
|
51
|
-
tarball_dir = File.join(TOPDIR, "pkgs")
|
52
|
-
FileUtils.mkdir_p(tarball_dir)
|
53
|
-
FileUtils.mkdir(temp_dir)
|
54
|
-
FileUtils.mkdir(temp_cookbook_dir)
|
55
|
-
|
56
|
-
child_folders = [ "cookbooks/#{args.cookbook}", "site-cookbooks/#{args.cookbook}" ]
|
57
|
-
child_folders.each do |folder|
|
58
|
-
file_path = File.join(TOPDIR, folder, ".")
|
59
|
-
FileUtils.cp_r(file_path, temp_cookbook_dir) if File.directory?(file_path)
|
60
|
-
end
|
61
|
-
|
62
|
-
system("tar", "-C", temp_dir, "-cvzf", File.join(tarball_dir, tarball_name), "#{args.cookbook}")
|
63
|
-
|
64
|
-
FileUtils.rm_rf temp_dir
|
65
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
Creating SSL certificates is a common task done in web application infrastructures, so a rake task is provided to generate certificates. These certificates are stored here by the ssl_cert task.
|
2
|
-
|
3
|
-
Configure the values used in the SSL certificate by modifying `config/rake.rb`.
|
4
|
-
|
5
|
-
To generate a certificate set for a new monitoring server, for example:
|
6
|
-
|
7
|
-
rake ssl_cert FQDN=monitoring.example.com
|
8
|
-
|
9
|
-
Once the certificates are generated, copy them into the cookbook(s) where you want to use them.
|
10
|
-
|
11
|
-
cp certificates/monitoring.example.com.* cookbooks/COOKBOOK/files/default
|
12
|
-
|
13
|
-
In the recipe for that cookbook, create a `cookbook_file` resource to configure a resource that puts them in place on the destination server.
|
14
|
-
|
15
|
-
cookbook_file '/etc/apache2/ssl/monitoring.example.com.pem'
|
16
|
-
owner 'root'
|
17
|
-
group 'root'
|
18
|
-
mode 0600
|
19
|
-
end
|