chef-dk 3.3.23 → 3.4.38
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +7 -7
- data/Gemfile.lock +91 -82
- data/lib/chef-dk/cli.rb +13 -13
- data/lib/chef-dk/command/base.rb +8 -8
- data/lib/chef-dk/command/clean_policy_cookbooks.rb +10 -10
- data/lib/chef-dk/command/clean_policy_revisions.rb +9 -9
- data/lib/chef-dk/command/delete_policy.rb +9 -9
- data/lib/chef-dk/command/delete_policy_group.rb +9 -9
- data/lib/chef-dk/command/diff.rb +35 -35
- data/lib/chef-dk/command/export.rb +11 -11
- data/lib/chef-dk/command/generate.rb +3 -3
- data/lib/chef-dk/command/generator_commands.rb +24 -24
- data/lib/chef-dk/command/generator_commands/build_cookbook.rb +3 -3
- data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +1 -1
- data/lib/chef-dk/command/generator_commands/cookbook.rb +3 -3
- data/lib/chef-dk/command/generator_commands/cookbook_file.rb +3 -3
- data/lib/chef-dk/command/generator_commands/generator_generator.rb +5 -5
- data/lib/chef-dk/command/generator_commands/template.rb +3 -3
- data/lib/chef-dk/command/install.rb +11 -11
- data/lib/chef-dk/command/provision.rb +32 -32
- data/lib/chef-dk/command/push.rb +9 -9
- data/lib/chef-dk/command/push_archive.rb +9 -9
- data/lib/chef-dk/command/shell_init.rb +21 -21
- data/lib/chef-dk/command/show_policy.rb +11 -11
- data/lib/chef-dk/command/undelete.rb +17 -17
- data/lib/chef-dk/command/update.rb +12 -12
- data/lib/chef-dk/command/verify.rb +63 -63
- data/lib/chef-dk/component_test.rb +3 -3
- data/lib/chef-dk/exceptions.rb +5 -5
- data/lib/chef-dk/generator.rb +61 -61
- data/lib/chef-dk/helpers.rb +1 -1
- data/lib/chef-dk/policyfile/cookbook_location_specification.rb +1 -1
- data/lib/chef-dk/policyfile/cookbook_locks.rb +1 -1
- data/lib/chef-dk/policyfile/git_lock_fetcher.rb +7 -7
- data/lib/chef-dk/policyfile/policyfile_location_specification.rb +1 -1
- data/lib/chef-dk/policyfile/uploader.rb +4 -4
- data/lib/chef-dk/policyfile_compiler.rb +1 -1
- data/lib/chef-dk/policyfile_services/export_repo.rb +49 -49
- data/lib/chef-dk/policyfile_services/install.rb +3 -3
- data/lib/chef-dk/policyfile_services/push_archive.rb +5 -5
- data/lib/chef-dk/policyfile_services/rm_policy_group.rb +1 -1
- data/lib/chef-dk/policyfile_services/update_attributes.rb +2 -2
- data/lib/chef-dk/service_exception_inspectors/http.rb +9 -9
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +6 -6
- data/lib/chef-dk/version.rb +1 -1
- data/lib/kitchen/provisioner/policyfile_zero.rb +9 -9
- data/omnibus_overrides.rb +1 -1
- data/spec/spec_helper.rb +3 -3
- data/spec/unit/cli_spec.rb +9 -9
- data/spec/unit/command/base_spec.rb +25 -25
- data/spec/unit/command/clean_policy_cookbooks_spec.rb +6 -6
- data/spec/unit/command/clean_policy_revisions_spec.rb +6 -6
- data/spec/unit/command/delete_policy_group_spec.rb +6 -6
- data/spec/unit/command/delete_policy_spec.rb +6 -6
- data/spec/unit/command/export_spec.rb +10 -10
- data/spec/unit/command/generate_spec.rb +5 -5
- data/spec/unit/command/generator_commands/build_cookbook_spec.rb +15 -15
- data/spec/unit/command/generator_commands/cookbook_spec.rb +174 -174
- data/spec/unit/command/generator_commands/generator_generator_spec.rb +5 -5
- data/spec/unit/command/generator_commands/policyfile_spec.rb +15 -15
- data/spec/unit/command/generator_commands/repo_spec.rb +16 -16
- data/spec/unit/command/install_spec.rb +15 -15
- data/spec/unit/command/provision_spec.rb +25 -25
- data/spec/unit/command/push_spec.rb +12 -12
- data/spec/unit/command/shell_init_spec.rb +59 -59
- data/spec/unit/command/show_policy_spec.rb +6 -6
- data/spec/unit/command/undelete_spec.rb +6 -6
- data/spec/unit/command/update_spec.rb +30 -30
- data/spec/unit/fixtures/command/cli_test_command.rb +1 -1
- data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +41 -41
- data/spec/unit/policyfile/comparison_base_spec.rb +38 -38
- data/spec/unit/policyfile/cookbook_locks_spec.rb +3 -3
- data/spec/unit/policyfile/differ_spec.rb +361 -361
- data/spec/unit/policyfile/git_lock_fetcher_spec.rb +34 -34
- data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +6 -6
- data/spec/unit/policyfile/local_lock_fetcher_spec.rb +35 -35
- data/spec/unit/policyfile/lock_applier_spec.rb +6 -6
- data/spec/unit/policyfile/reports/upload_spec.rb +5 -5
- data/spec/unit/policyfile/uploader_spec.rb +27 -27
- data/spec/unit/policyfile_demands_spec.rb +84 -84
- data/spec/unit/policyfile_evaluation_spec.rb +14 -14
- data/spec/unit/policyfile_includes_spec.rb +1 -1
- data/spec/unit/policyfile_install_with_includes_spec.rb +3 -3
- data/spec/unit/policyfile_lock_build_spec.rb +58 -58
- data/spec/unit/policyfile_lock_validation_spec.rb +108 -108
- data/spec/unit/policyfile_services/clean_policies_spec.rb +12 -12
- data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +9 -9
- data/spec/unit/policyfile_services/export_repo_spec.rb +64 -64
- data/spec/unit/policyfile_services/install_spec.rb +4 -4
- data/spec/unit/policyfile_services/push_archive_spec.rb +41 -41
- data/spec/unit/policyfile_services/push_spec.rb +38 -38
- data/spec/unit/policyfile_services/rm_policy_group_spec.rb +12 -12
- data/spec/unit/policyfile_services/rm_policy_spec.rb +6 -6
- data/spec/unit/policyfile_services/show_policy_spec.rb +161 -161
- data/spec/unit/policyfile_services/undelete_spec.rb +13 -13
- data/spec/unit/policyfile_services/update_attributes_spec.rb +6 -6
- data/spec/unit/policyfile_services/update_spec.rb +7 -7
- data/spec/unit/service_exception_inspectors/http_spec.rb +12 -12
- metadata +2 -2
@@ -27,21 +27,21 @@ module ChefDK
|
|
27
27
|
|
28
28
|
include Configurable
|
29
29
|
|
30
|
-
banner(
|
31
|
-
Usage: chef install [ POLICY_FILE ] [options]
|
30
|
+
banner(<<~E)
|
31
|
+
Usage: chef install [ POLICY_FILE ] [options]
|
32
32
|
|
33
|
-
`chef install` evaluates a `Policyfile.rb` to find a compatible set of
|
34
|
-
cookbooks for the policy's run_list and caches them locally. It emits a
|
35
|
-
Policyfile.lock.json describing the locked cookbook set. You can use the
|
36
|
-
lockfile to install the locked cookbooks on another machine. You can also push
|
37
|
-
the lockfile to a "policy group" on a Chef Server and apply that exact set of
|
38
|
-
cookbooks to nodes in your infrastructure.
|
33
|
+
`chef install` evaluates a `Policyfile.rb` to find a compatible set of
|
34
|
+
cookbooks for the policy's run_list and caches them locally. It emits a
|
35
|
+
Policyfile.lock.json describing the locked cookbook set. You can use the
|
36
|
+
lockfile to install the locked cookbooks on another machine. You can also push
|
37
|
+
the lockfile to a "policy group" on a Chef Server and apply that exact set of
|
38
|
+
cookbooks to nodes in your infrastructure.
|
39
39
|
|
40
|
-
See our detailed README for more information:
|
40
|
+
See our detailed README for more information:
|
41
41
|
|
42
|
-
https://docs.chef.io/policyfile.html
|
42
|
+
https://docs.chef.io/policyfile.html
|
43
43
|
|
44
|
-
Options:
|
44
|
+
Options:
|
45
45
|
|
46
46
|
E
|
47
47
|
|
@@ -71,19 +71,19 @@ module ChefDK
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def chef_config
|
74
|
-
config =
|
75
|
-
# SSL Settings:
|
76
|
-
ssl_verify_mode #{Chef::Config.ssl_verify_mode.inspect}
|
74
|
+
config = <<~CONFIG
|
75
|
+
# SSL Settings:
|
76
|
+
ssl_verify_mode #{Chef::Config.ssl_verify_mode.inspect}
|
77
77
|
|
78
78
|
CONFIG
|
79
79
|
if enable_policyfile
|
80
|
-
policyfile_config =
|
81
|
-
# Policyfile Settings:
|
82
|
-
use_policyfile true
|
83
|
-
policy_document_native_api true
|
80
|
+
policyfile_config = <<~CONFIG
|
81
|
+
# Policyfile Settings:
|
82
|
+
use_policyfile true
|
83
|
+
policy_document_native_api true
|
84
84
|
|
85
|
-
policy_group "#{policy_group}"
|
86
|
-
policy_name "#{policy_name}"
|
85
|
+
policy_group "#{policy_group}"
|
86
|
+
policy_name "#{policy_name}"
|
87
87
|
|
88
88
|
CONFIG
|
89
89
|
config << policyfile_config
|
@@ -100,39 +100,39 @@ CONFIG
|
|
100
100
|
|
101
101
|
class Provision < Base
|
102
102
|
|
103
|
-
banner(
|
104
|
-
Usage: chef provision POLICY_GROUP --policy-name POLICY_NAME [options]
|
105
|
-
|
106
|
-
|
103
|
+
banner(<<~E)
|
104
|
+
Usage: chef provision POLICY_GROUP --policy-name POLICY_NAME [options]
|
105
|
+
chef provision POLICY_GROUP --sync [POLICYFILE_PATH] [options]
|
106
|
+
chef provision --no-policy [options]
|
107
107
|
|
108
|
-
`chef provision` invokes an embedded chef-client run to provision machines
|
109
|
-
using Chef Provisioning. If not otherwise specified, `chef provision` will
|
110
|
-
expect to find a cookbook named 'provision' in the current working directory.
|
111
|
-
It runs a recipe in this cookbook which should use Chef Provisioning to create
|
112
|
-
one or more machines (or other infrastructure).
|
108
|
+
`chef provision` invokes an embedded chef-client run to provision machines
|
109
|
+
using Chef Provisioning. If not otherwise specified, `chef provision` will
|
110
|
+
expect to find a cookbook named 'provision' in the current working directory.
|
111
|
+
It runs a recipe in this cookbook which should use Chef Provisioning to create
|
112
|
+
one or more machines (or other infrastructure).
|
113
113
|
|
114
|
-
`chef provision` provides three forms of operation:
|
114
|
+
`chef provision` provides three forms of operation:
|
115
115
|
|
116
|
-
### chef provision POLICY_GROUP --policy-name POLICY_NAME
|
116
|
+
### chef provision POLICY_GROUP --policy-name POLICY_NAME
|
117
117
|
|
118
|
-
In the first form of the command, `chef provision` creates machines that will
|
119
|
-
operate in policyfile mode. The chef configuration passed to the cookbook will
|
120
|
-
set the policy group and policy name as given.
|
118
|
+
In the first form of the command, `chef provision` creates machines that will
|
119
|
+
operate in policyfile mode. The chef configuration passed to the cookbook will
|
120
|
+
set the policy group and policy name as given.
|
121
121
|
|
122
|
-
### chef provision POLICY_GROUP --sync [POLICYFILE_PATH] [options]
|
122
|
+
### chef provision POLICY_GROUP --sync [POLICYFILE_PATH] [options]
|
123
123
|
|
124
|
-
In the second form of the command, `chef provision` create machines that will
|
125
|
-
operate in policyfile mode and syncronizes a local policyfile to the server
|
126
|
-
before converging the machine(s) defined in the provision cookbook.
|
124
|
+
In the second form of the command, `chef provision` create machines that will
|
125
|
+
operate in policyfile mode and syncronizes a local policyfile to the server
|
126
|
+
before converging the machine(s) defined in the provision cookbook.
|
127
127
|
|
128
|
-
### chef provision --no-policy [options]
|
128
|
+
### chef provision --no-policy [options]
|
129
129
|
|
130
|
-
In the third form of the command, `chef provision` expects to create machines
|
131
|
-
that will not operate in policyfile mode.
|
130
|
+
In the third form of the command, `chef provision` expects to create machines
|
131
|
+
that will not operate in policyfile mode.
|
132
132
|
|
133
|
-
Chef Provisioning is documented at https://docs.chef.io/provisioning.html
|
133
|
+
Chef Provisioning is documented at https://docs.chef.io/provisioning.html
|
134
134
|
|
135
|
-
Options:
|
135
|
+
Options:
|
136
136
|
|
137
137
|
E
|
138
138
|
include Configurable
|
data/lib/chef-dk/command/push.rb
CHANGED
@@ -27,19 +27,19 @@ module ChefDK
|
|
27
27
|
|
28
28
|
include Configurable
|
29
29
|
|
30
|
-
banner(
|
31
|
-
Usage: chef push POLICY_GROUP [ POLICY_FILE ] [options]
|
30
|
+
banner(<<~E)
|
31
|
+
Usage: chef push POLICY_GROUP [ POLICY_FILE ] [options]
|
32
32
|
|
33
|
-
`chef push` Uploads an existing Policyfile.lock.json to a Chef Server, along
|
34
|
-
with all the cookbooks contained in the policy lock. The policy lock is applied
|
35
|
-
to a specific POLICY_GROUP, which is a set of nodes that share the same
|
36
|
-
run_list and cookbooks.
|
33
|
+
`chef push` Uploads an existing Policyfile.lock.json to a Chef Server, along
|
34
|
+
with all the cookbooks contained in the policy lock. The policy lock is applied
|
35
|
+
to a specific POLICY_GROUP, which is a set of nodes that share the same
|
36
|
+
run_list and cookbooks.
|
37
37
|
|
38
|
-
See our detailed README for more information:
|
38
|
+
See our detailed README for more information:
|
39
39
|
|
40
|
-
https://docs.chef.io/policyfile.html
|
40
|
+
https://docs.chef.io/policyfile.html
|
41
41
|
|
42
|
-
Options:
|
42
|
+
Options:
|
43
43
|
|
44
44
|
E
|
45
45
|
|
@@ -27,19 +27,19 @@ module ChefDK
|
|
27
27
|
|
28
28
|
include Configurable
|
29
29
|
|
30
|
-
banner(
|
31
|
-
Usage: chef push-archive POLICY_GROUP ARCHIVE_FILE [options]
|
30
|
+
banner(<<~E)
|
31
|
+
Usage: chef push-archive POLICY_GROUP ARCHIVE_FILE [options]
|
32
32
|
|
33
|
-
`chef push-archive` publishes a policy archive to a Chef Server. Policy
|
34
|
-
archives can be created with `chef export -a`. The policy will be applied to
|
35
|
-
the given POLICY_GROUP, which is a set of nodes that share the same
|
36
|
-
run_list and cookbooks.
|
33
|
+
`chef push-archive` publishes a policy archive to a Chef Server. Policy
|
34
|
+
archives can be created with `chef export -a`. The policy will be applied to
|
35
|
+
the given POLICY_GROUP, which is a set of nodes that share the same
|
36
|
+
run_list and cookbooks.
|
37
37
|
|
38
|
-
For more information about Policyfiles, see our detailed README:
|
38
|
+
For more information about Policyfiles, see our detailed README:
|
39
39
|
|
40
|
-
https://docs.chef.io/policyfile.html
|
40
|
+
https://docs.chef.io/policyfile.html
|
41
41
|
|
42
|
-
Options:
|
42
|
+
Options:
|
43
43
|
E
|
44
44
|
|
45
45
|
option :config_file,
|
@@ -43,37 +43,37 @@ module ChefDK
|
|
43
43
|
|
44
44
|
SUPPORTED_SHELLS = %w{ bash fish zsh sh powershell posh}.map(&:freeze).freeze
|
45
45
|
|
46
|
-
banner(
|
47
|
-
Usage: chef shell-init
|
46
|
+
banner(<<~HELP)
|
47
|
+
Usage: chef shell-init
|
48
48
|
|
49
|
-
`chef shell-init` modifies your shell environment to make ChefDK your default
|
50
|
-
ruby.
|
49
|
+
`chef shell-init` modifies your shell environment to make ChefDK your default
|
50
|
+
ruby.
|
51
51
|
|
52
|
-
|
52
|
+
To enable for just the current shell session:
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
54
|
+
In sh, bash, and zsh:
|
55
|
+
eval "$(chef shell-init SHELL_NAME)"
|
56
|
+
In fish:
|
57
|
+
eval (chef shell-init fish)
|
58
|
+
In Powershell:
|
59
|
+
chef shell-init powershell | Invoke-Expression
|
60
60
|
|
61
|
-
|
61
|
+
To permanently enable:
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
63
|
+
In sh, bash, and zsh:
|
64
|
+
echo 'eval "$(chef shell-init SHELL_NAME)"' >> ~/.YOUR_SHELL_RC_FILE
|
65
|
+
In fish:
|
66
|
+
echo 'eval (chef shell-init SHELL_NAME)' >> ~/.config/fish/config.fish
|
67
|
+
In Powershell
|
68
|
+
"chef shell-init powershell | Invoke-Expression" >> $PROFILE
|
69
69
|
|
70
|
-
OPTIONS:
|
70
|
+
OPTIONS:
|
71
71
|
|
72
72
|
HELP
|
73
73
|
|
74
74
|
option :omnibus_dir,
|
75
|
-
:
|
76
|
-
:
|
75
|
+
long: "--omnibus-dir OMNIBUS_DIR",
|
76
|
+
description: "Alternate path to omnibus install (used for testing)"
|
77
77
|
|
78
78
|
def initialize
|
79
79
|
super
|
@@ -26,22 +26,22 @@ module ChefDK
|
|
26
26
|
|
27
27
|
class ShowPolicy < Base
|
28
28
|
|
29
|
-
banner(
|
30
|
-
Usage: chef show-policy [POLICY_NAME [POLICY_GROUP]] [options]
|
29
|
+
banner(<<~BANNER)
|
30
|
+
Usage: chef show-policy [POLICY_NAME [POLICY_GROUP]] [options]
|
31
31
|
|
32
|
-
`chef show-policy` Displays the revisions of policyfiles on the server. By
|
33
|
-
default, only active policy revisions are shown. Use the `--orphans` options to
|
34
|
-
show policy revisions that are not assigned to any policy group.
|
32
|
+
`chef show-policy` Displays the revisions of policyfiles on the server. By
|
33
|
+
default, only active policy revisions are shown. Use the `--orphans` options to
|
34
|
+
show policy revisions that are not assigned to any policy group.
|
35
35
|
|
36
|
-
When both POLICY_NAME and POLICY_GROUP are given, the command shows the content
|
37
|
-
of a the active policyfile lock for the given POLICY_GROUP. See also the `diff`
|
38
|
-
command.
|
36
|
+
When both POLICY_NAME and POLICY_GROUP are given, the command shows the content
|
37
|
+
of a the active policyfile lock for the given POLICY_GROUP. See also the `diff`
|
38
|
+
command.
|
39
39
|
|
40
|
-
See our detailed README for more information:
|
40
|
+
See our detailed README for more information:
|
41
41
|
|
42
|
-
https://docs.chef.io/policyfile.html
|
42
|
+
https://docs.chef.io/policyfile.html
|
43
43
|
|
44
|
-
Options:
|
44
|
+
Options:
|
45
45
|
|
46
46
|
BANNER
|
47
47
|
|
@@ -25,30 +25,30 @@ module ChefDK
|
|
25
25
|
|
26
26
|
class Undelete < Base
|
27
27
|
|
28
|
-
banner(
|
29
|
-
Usage: chef undelete [--list | --id ID] [options]
|
28
|
+
banner(<<~BANNER)
|
29
|
+
Usage: chef undelete [--list | --id ID] [options]
|
30
30
|
|
31
|
-
`chef undelete` helps you recover quickly if you've deleted a policy or policy
|
32
|
-
group in error. When run with no arguements, it lists the available undo
|
33
|
-
operations. To undo the last delete operation, use `chef undelete --last`.
|
31
|
+
`chef undelete` helps you recover quickly if you've deleted a policy or policy
|
32
|
+
group in error. When run with no arguements, it lists the available undo
|
33
|
+
operations. To undo the last delete operation, use `chef undelete --last`.
|
34
34
|
|
35
|
-
CAVEATS:
|
36
|
-
`chef undelete` doesn't detect conflicts. If a deleted item has been recreated,
|
37
|
-
running `chef undelete` will overwrite it.
|
35
|
+
CAVEATS:
|
36
|
+
`chef undelete` doesn't detect conflicts. If a deleted item has been recreated,
|
37
|
+
running `chef undelete` will overwrite it.
|
38
38
|
|
39
|
-
Undo information does not include cookbooks that might be referenced by
|
40
|
-
policies. If you have cleaned the policy cookbooks after the delete operation
|
41
|
-
you want to reverse, `chef undelete` may not be able to fully restore the
|
42
|
-
previous state.
|
39
|
+
Undo information does not include cookbooks that might be referenced by
|
40
|
+
policies. If you have cleaned the policy cookbooks after the delete operation
|
41
|
+
you want to reverse, `chef undelete` may not be able to fully restore the
|
42
|
+
previous state.
|
43
43
|
|
44
|
-
The delete commands also do not store access control data, so you may have to
|
45
|
-
manually reapply any ACL customizations you have made.
|
44
|
+
The delete commands also do not store access control data, so you may have to
|
45
|
+
manually reapply any ACL customizations you have made.
|
46
46
|
|
47
|
-
See our detailed README for more information:
|
47
|
+
See our detailed README for more information:
|
48
48
|
|
49
|
-
https://docs.chef.io/policyfile.html
|
49
|
+
https://docs.chef.io/policyfile.html
|
50
50
|
|
51
|
-
Options:
|
51
|
+
Options:
|
52
52
|
|
53
53
|
BANNER
|
54
54
|
|
@@ -28,23 +28,23 @@ module ChefDK
|
|
28
28
|
|
29
29
|
include Configurable
|
30
30
|
|
31
|
-
banner(
|
32
|
-
Usage: chef update [ POLICY_FILE ] [options] [cookbook_1] [...]
|
31
|
+
banner(<<~BANNER)
|
32
|
+
Usage: chef update [ POLICY_FILE ] [options] [cookbook_1] [...]
|
33
33
|
|
34
|
-
`chef update` reads your `Policyfile.rb`, applies any changes, re-solves the
|
35
|
-
dependencies and emits an updated `Policyfile.lock.json`. The new locked policy
|
36
|
-
will reflect any changes to the `run_list` and pull in any cookbook updates
|
37
|
-
that are compatible with the version constraints stated in your `Policyfile.rb`.
|
34
|
+
`chef update` reads your `Policyfile.rb`, applies any changes, re-solves the
|
35
|
+
dependencies and emits an updated `Policyfile.lock.json`. The new locked policy
|
36
|
+
will reflect any changes to the `run_list` and pull in any cookbook updates
|
37
|
+
that are compatible with the version constraints stated in your `Policyfile.rb`.
|
38
38
|
|
39
|
-
Individual dependent cookbooks (and their dependencies) may be updated by
|
40
|
-
passing their names after the POLICY_FILE. The POLICY_FILE parameter is
|
41
|
-
mandatory if you want to update individual cookbooks.
|
39
|
+
Individual dependent cookbooks (and their dependencies) may be updated by
|
40
|
+
passing their names after the POLICY_FILE. The POLICY_FILE parameter is
|
41
|
+
mandatory if you want to update individual cookbooks.
|
42
42
|
|
43
|
-
See our detailed README for more information:
|
43
|
+
See our detailed README for more information:
|
44
44
|
|
45
|
-
https://docs.chef.io/policyfile.html
|
45
|
+
https://docs.chef.io/policyfile.html
|
46
46
|
|
47
|
-
Options:
|
47
|
+
Options:
|
48
48
|
|
49
49
|
BANNER
|
50
50
|
|
@@ -28,25 +28,25 @@ module ChefDK
|
|
28
28
|
banner "Usage: chef verify [component, ...] [options]"
|
29
29
|
|
30
30
|
option :omnibus_dir,
|
31
|
-
:
|
32
|
-
:
|
31
|
+
long: "--omnibus-dir OMNIBUS_DIR",
|
32
|
+
description: "Alternate path to omnibus install (used for testing)"
|
33
33
|
|
34
34
|
option :unit,
|
35
|
-
:
|
36
|
-
:
|
35
|
+
long: "--unit",
|
36
|
+
description: "Run bundled app unit tests (only smoke tests run by default)"
|
37
37
|
|
38
38
|
option :integration,
|
39
|
-
:
|
40
|
-
:
|
39
|
+
long: "--integration",
|
40
|
+
description: "Run integration tests. Possibly dangerous, for development systems only"
|
41
41
|
|
42
42
|
option :verbose,
|
43
|
-
:
|
44
|
-
:
|
43
|
+
long: "--verbose",
|
44
|
+
description: "Display all test output, not just failing tests"
|
45
45
|
|
46
46
|
class << self
|
47
47
|
def add_component(name, _delete_me = nil)
|
48
48
|
component = ComponentTest.new(name)
|
49
|
-
yield component if block_given? #delete this conditional
|
49
|
+
yield component if block_given? # delete this conditional
|
50
50
|
component_map[name] = component
|
51
51
|
end
|
52
52
|
|
@@ -124,25 +124,25 @@ module ChefDK
|
|
124
124
|
c.smoke_test do
|
125
125
|
tmpdir do |cwd|
|
126
126
|
File.open(File.join(cwd, ".kitchen.yml"), "w+") do |f|
|
127
|
-
f.print(
|
128
|
-
---
|
129
|
-
driver:
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
provisioner:
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
platforms:
|
139
|
-
|
140
|
-
|
141
|
-
suites:
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
127
|
+
f.print(<<~KITCHEN_YML)
|
128
|
+
---
|
129
|
+
driver:
|
130
|
+
name: dummy
|
131
|
+
network:
|
132
|
+
- ["forwarded_port", {guest: 80, host: 8080}]
|
133
|
+
|
134
|
+
provisioner:
|
135
|
+
name: policyfile_zero
|
136
|
+
require_chef_omnibus: 12.3.0
|
137
|
+
|
138
|
+
platforms:
|
139
|
+
- name: ubuntu-14.04
|
140
|
+
|
141
|
+
suites:
|
142
|
+
- name: default
|
143
|
+
run_list:
|
144
|
+
- recipe[aar::default]
|
145
|
+
attributes:
|
146
146
|
|
147
147
|
KITCHEN_YML
|
148
148
|
end
|
@@ -186,10 +186,10 @@ KITCHEN_YML
|
|
186
186
|
|
187
187
|
add_component "chef-apply" do |c|
|
188
188
|
c.gem_base_dir = "chef-apply"
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
189
|
+
# c.unit_test do
|
190
|
+
# bundle_install_mutex.synchronize { sh("#{embedded_bin("bundle")} install") }
|
191
|
+
# sh("#{embedded_bin("bundle")} exec rspec")
|
192
|
+
# end
|
193
193
|
c.smoke_test { sh("#{bin("chef-run")} -v") }
|
194
194
|
end
|
195
195
|
|
@@ -206,13 +206,13 @@ KITCHEN_YML
|
|
206
206
|
|
207
207
|
# construct a hash of { driver_name => [version1, version2, ...]}
|
208
208
|
driver_versions = {}
|
209
|
-
Gem::Specification.all.map { |gs| [gs.name, gs.version] }
|
210
|
-
select { |n| n[0] =~ /^chef-provisioning-/ }
|
211
|
-
each { |gem, version| (driver_versions[gem] ||= []) << version }
|
209
|
+
Gem::Specification.all.map { |gs| [gs.name, gs.version] }
|
210
|
+
.select { |n| n[0] =~ /^chef-provisioning-/ }
|
211
|
+
.each { |gem, version| (driver_versions[gem] ||= []) << version }
|
212
212
|
|
213
|
-
drivers = Gem::Specification.all.map { |gs| gs.name }
|
214
|
-
select { |n| n =~ /^chef-provisioning-/ }
|
215
|
-
uniq
|
213
|
+
drivers = Gem::Specification.all.map { |gs| gs.name }
|
214
|
+
.select { |n| n =~ /^chef-provisioning-/ }
|
215
|
+
.uniq
|
216
216
|
|
217
217
|
versions = Gem::Specification.find_all_by_name("chef-provisioning").map { |s| s.version }
|
218
218
|
$VERBOSE = verbose
|
@@ -222,9 +222,9 @@ KITCHEN_YML
|
|
222
222
|
# ------------
|
223
223
|
# fail the verify if we have more than one version of chef-provisioning or any of its drivers.
|
224
224
|
def format_gem_failure(name, versions)
|
225
|
-
|
226
|
-
#{name} has multiple versions installed:
|
227
|
-
#{versions.sort.map { |gv| " #{gv}" }.join("\n")}
|
225
|
+
<<~EOS
|
226
|
+
#{name} has multiple versions installed:
|
227
|
+
#{versions.sort.map { |gv| " #{gv}" }.join("\n")}
|
228
228
|
EOS
|
229
229
|
end
|
230
230
|
|
@@ -236,10 +236,10 @@ KITCHEN_YML
|
|
236
236
|
end
|
237
237
|
|
238
238
|
if failures.size > 0
|
239
|
-
failures <<
|
239
|
+
failures << <<~EOS
|
240
240
|
|
241
|
-
Some applications may need or prefer different versions of the chef-provisioning gem or its drivers, so
|
242
|
-
this multiple-version check can fail if a user has installed new versions of those libraries.
|
241
|
+
Some applications may need or prefer different versions of the chef-provisioning gem or its drivers, so
|
242
|
+
this multiple-version check can fail if a user has installed new versions of those libraries.
|
243
243
|
EOS
|
244
244
|
end
|
245
245
|
|
@@ -300,20 +300,20 @@ EOS
|
|
300
300
|
tmpdir do |cwd|
|
301
301
|
FileUtils.mkdir(File.join(cwd, "spec"))
|
302
302
|
with_file(File.join(cwd, "spec", "spec_helper.rb")) do |f|
|
303
|
-
f.write
|
304
|
-
require 'chefspec'
|
305
|
-
require 'chefspec/berkshelf'
|
306
|
-
require 'chefspec/cacher'
|
303
|
+
f.write <<~EOF
|
304
|
+
require 'chefspec'
|
305
|
+
require 'chefspec/berkshelf'
|
306
|
+
require 'chefspec/cacher'
|
307
307
|
|
308
|
-
RSpec.configure do |config|
|
309
|
-
|
310
|
-
end
|
308
|
+
RSpec.configure do |config|
|
309
|
+
config.expect_with(:rspec) { |c| c.syntax = :expect }
|
310
|
+
end
|
311
311
|
EOF
|
312
312
|
end
|
313
313
|
FileUtils.touch(File.join(cwd, "Berksfile"))
|
314
314
|
with_file(File.join(cwd, "spec", "foo_spec.rb")) do |f|
|
315
|
-
f.write
|
316
|
-
require 'spec_helper'
|
315
|
+
f.write <<~EOF
|
316
|
+
require 'spec_helper'
|
317
317
|
EOF
|
318
318
|
end
|
319
319
|
sh(embedded_bin("rspec"), cwd: cwd)
|
@@ -418,9 +418,9 @@ require 'spec_helper'
|
|
418
418
|
|
419
419
|
# Commenting out the unit and integration tests for now until we figure
|
420
420
|
# out the bundler error
|
421
|
-
#c.unit_test { sh("#{embedded_bin("bundle")} exec rake test:isolated") }
|
421
|
+
# c.unit_test { sh("#{embedded_bin("bundle")} exec rake test:isolated") }
|
422
422
|
# This runs Test Kitchen (using kitchen-inspec) with some inspec tests
|
423
|
-
#c.integration_test { sh("#{embedded_bin("bundle")} exec rake test:vm") }
|
423
|
+
# c.integration_test { sh("#{embedded_bin("bundle")} exec rake test:vm") }
|
424
424
|
|
425
425
|
# It would be nice to use a chef generator to create these specs, but
|
426
426
|
# we dont have that yet. So we do it manually.
|
@@ -513,11 +513,11 @@ require 'spec_helper'
|
|
513
513
|
c.smoke_test do
|
514
514
|
tmpdir do |cwd|
|
515
515
|
with_file(File.join(cwd, "foo.rb")) do |f|
|
516
|
-
f.write
|
517
|
-
require 'chef/sugar'
|
518
|
-
log 'something' do
|
519
|
-
|
520
|
-
end
|
516
|
+
f.write <<~EOF
|
517
|
+
require 'chef/sugar'
|
518
|
+
log 'something' do
|
519
|
+
not_if { _64_bit? }
|
520
|
+
end
|
521
521
|
EOF
|
522
522
|
end
|
523
523
|
sh("chef-apply foo.rb", cwd: cwd)
|
@@ -594,9 +594,9 @@ end
|
|
594
594
|
end
|
595
595
|
|
596
596
|
{
|
597
|
-
:
|
598
|
-
:
|
599
|
-
:
|
597
|
+
component: component,
|
598
|
+
results: results,
|
599
|
+
component_status: component_status,
|
600
600
|
}
|
601
601
|
end
|
602
602
|
|