chef-dk 0.4.0 → 0.5.0.rc.1
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 +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
|