chef 17.2.29-universal-mingw32 → 17.5.22-universal-mingw32
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/Gemfile +6 -5
- data/chef.gemspec +3 -0
- data/lib/chef/application/base.rb +11 -1
- data/lib/chef/application.rb +3 -1
- data/lib/chef/client.rb +2 -3
- data/lib/chef/compliance/default_attributes.rb +5 -3
- data/lib/chef/compliance/input.rb +115 -0
- data/lib/chef/compliance/input_collection.rb +139 -0
- data/lib/chef/compliance/profile.rb +122 -0
- data/lib/chef/compliance/profile_collection.rb +109 -0
- data/lib/chef/compliance/reporter/automate.rb +1 -1
- data/lib/chef/compliance/runner.rb +62 -6
- data/lib/chef/compliance/waiver.rb +115 -0
- data/lib/chef/compliance/waiver_collection.rb +143 -0
- data/lib/chef/data_bag.rb +1 -2
- data/lib/chef/data_bag_item.rb +1 -2
- data/lib/chef/deprecated.rb +10 -4
- data/lib/chef/dsl/compliance.rb +38 -0
- data/lib/chef/dsl/reader_helpers.rb +51 -0
- data/lib/chef/dsl/recipe.rb +4 -2
- data/lib/chef/dsl/render_helpers.rb +44 -0
- data/lib/chef/dsl/secret.rb +62 -0
- data/lib/chef/dsl/toml.rb +116 -0
- data/lib/chef/dsl/universal.rb +7 -0
- data/lib/chef/dsl.rb +1 -0
- data/lib/chef/event_dispatch/base.rb +44 -2
- data/lib/chef/exceptions.rb +20 -0
- data/lib/chef/formatters/doc.rb +60 -13
- data/lib/chef/formatters/error_mapper.rb +2 -2
- data/lib/chef/formatters/minimal.rb +6 -5
- data/lib/chef/handler/slow_report.rb +1 -1
- data/lib/chef/http/basic_client.rb +15 -7
- data/lib/chef/http.rb +12 -8
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +88 -45
- data/lib/chef/provider/execute.rb +1 -1
- data/lib/chef/provider/file.rb +4 -2
- data/lib/chef/provider/group/dscl.rb +1 -1
- data/lib/chef/provider/launchd.rb +6 -6
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/lwrp_base.rb +1 -1
- data/lib/chef/provider/package/habitat.rb +168 -0
- data/lib/chef/provider/package/powershell.rb +5 -0
- data/lib/chef/provider/registry_key.rb +3 -2
- data/lib/chef/provider/remote_file/http.rb +1 -1
- data/lib/chef/provider/subversion.rb +4 -4
- data/lib/chef/provider/support/yum_repo.erb +1 -1
- data/lib/chef/provider/systemd_unit.rb +17 -16
- data/lib/chef/provider/template.rb +1 -1
- data/lib/chef/provider/user/mac.rb +3 -3
- data/lib/chef/provider/yum_repository.rb +27 -43
- data/lib/chef/provider/zypper_repository.rb +3 -3
- data/lib/chef/provider.rb +26 -1
- data/lib/chef/provider_resolver.rb +8 -2
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/resource/archive_file.rb +17 -14
- data/lib/chef/resource/chef_client_config.rb +7 -2
- data/lib/chef/resource/chef_client_cron.rb +1 -1
- data/lib/chef/resource/chef_client_launchd.rb +1 -1
- data/lib/chef/resource/chef_client_scheduled_task.rb +46 -3
- data/lib/chef/resource/chef_client_systemd_timer.rb +1 -1
- data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +2 -2
- data/lib/chef/resource/chocolatey_config.rb +13 -13
- data/lib/chef/resource/dsc_resource.rb +1 -1
- data/lib/chef/resource/execute.rb +5 -5
- data/lib/chef/resource/file/verification/json.rb +50 -0
- data/lib/chef/resource/file/verification/yaml.rb +52 -0
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/habitat/_habitat_shared.rb +28 -0
- data/lib/chef/resource/habitat/habitat_package.rb +129 -0
- data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
- data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
- data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
- data/lib/chef/resource/habitat_config.rb +107 -0
- data/lib/chef/resource/habitat_install.rb +247 -0
- data/lib/chef/resource/habitat_service.rb +451 -0
- data/lib/chef/resource/habitat_user_toml.rb +92 -0
- data/lib/chef/resource/homebrew_cask.rb +1 -1
- data/lib/chef/resource/inspec_input.rb +128 -0
- data/lib/chef/resource/inspec_waiver.rb +185 -0
- data/lib/chef/resource/inspec_waiver_file_entry.rb +2 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/registry_key.rb +36 -48
- data/lib/chef/resource/remote_file.rb +99 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -5
- data/lib/chef/resource/ruby_block.rb +100 -0
- data/lib/chef/resource/scm/subversion.rb +1 -1
- data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
- data/lib/chef/resource/support/client.erb +8 -1
- data/lib/chef/resource/support/sup.toml.erb +179 -0
- data/lib/chef/resource/sysctl.rb +2 -2
- data/lib/chef/resource/systemd_unit.rb +3 -3
- data/lib/chef/resource/timezone.rb +2 -2
- data/lib/chef/resource/user_ulimit.rb +1 -0
- data/lib/chef/resource/windows_defender.rb +163 -0
- data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
- data/lib/chef/resource/windows_printer.rb +78 -44
- data/lib/chef/resource/windows_printer_port.rb +1 -1
- data/lib/chef/resource/windows_uac.rb +3 -1
- data/lib/chef/resource/windows_update_settings.rb +259 -0
- data/lib/chef/resource/windows_user_privilege.rb +1 -1
- data/lib/chef/resource/yum_package.rb +1 -5
- data/lib/chef/resource.rb +13 -17
- data/lib/chef/resource_inspector.rb +6 -2
- data/lib/chef/resources.rb +14 -1
- data/lib/chef/run_context/cookbook_compiler.rb +112 -28
- data/lib/chef/run_context.rb +31 -1
- data/lib/chef/secret_fetcher/akeyless_vault.rb +57 -0
- data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
- data/lib/chef/secret_fetcher/azure_key_vault.rb +78 -0
- data/lib/chef/secret_fetcher/base.rb +76 -0
- data/lib/chef/secret_fetcher/example.rb +46 -0
- data/lib/chef/secret_fetcher/hashi_vault.rb +100 -0
- data/lib/chef/secret_fetcher.rb +61 -0
- data/lib/chef/version.rb +1 -1
- data/spec/data/archive_file/test_archive.tar.gz +0 -0
- data/spec/functional/mixin/from_file_spec.rb +1 -1
- data/spec/functional/resource/archive_file_spec.rb +87 -0
- data/spec/functional/resource/group_spec.rb +5 -1
- data/spec/functional/resource/link_spec.rb +8 -0
- data/spec/integration/compliance/compliance_spec.rb +61 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
- data/spec/integration/recipes/resource_action_spec.rb +6 -6
- data/spec/spec_helper.rb +3 -0
- data/spec/support/platform_helpers.rb +4 -0
- data/spec/support/ruby_installer.rb +51 -0
- data/spec/support/shared/unit/provider/file.rb +2 -8
- data/spec/unit/compliance/input_spec.rb +104 -0
- data/spec/unit/compliance/profile_spec.rb +120 -0
- data/spec/unit/compliance/runner_spec.rb +46 -2
- data/spec/unit/compliance/waiver_spec.rb +104 -0
- data/spec/unit/data_bag_item_spec.rb +2 -2
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/dsl/render_helpers_spec.rb +102 -0
- data/spec/unit/dsl/secret_spec.rb +71 -0
- data/spec/unit/formatters/doc_spec.rb +1 -1
- data/spec/unit/http/basic_client_spec.rb +30 -0
- data/spec/unit/http_spec.rb +8 -2
- data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
- data/spec/unit/policy_builder/policyfile_spec.rb +144 -56
- data/spec/unit/provider/apt_update_spec.rb +3 -1
- data/spec/unit/provider/link_spec.rb +13 -7
- data/spec/unit/provider/mount/aix_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +74 -12
- data/spec/unit/provider/remote_file/http_spec.rb +10 -0
- data/spec/unit/provider/template_spec.rb +2 -2
- data/spec/unit/provider_spec.rb +23 -0
- data/spec/unit/resource/archive_file_spec.rb +414 -3
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +69 -0
- data/spec/unit/resource/file/verification/json_spec.rb +72 -0
- data/spec/unit/resource/file/verification/yaml_spec.rb +67 -0
- data/spec/unit/resource/homebrew_cask_spec.rb +29 -11
- data/spec/unit/resource/inspec_input_spec.rb +300 -0
- data/spec/unit/resource/inspec_waiver_spec.rb +312 -0
- data/spec/unit/resource/mount_spec.rb +10 -0
- data/spec/unit/resource/rhsm_subscription_spec.rb +50 -3
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/user_ulimit_spec.rb +14 -1
- data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
- data/spec/unit/resource/windows_defender_spec.rb +71 -0
- data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
- data/spec/unit/resource_spec.rb +19 -8
- data/spec/unit/secret_fetcher/akeyless_vault_spec.rb +37 -0
- data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
- data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +70 -0
- data/spec/unit/secret_fetcher/hashi_vault_spec.rb +80 -0
- data/spec/unit/secret_fetcher_spec.rb +82 -0
- data/tasks/rspec.rb +2 -1
- metadata +106 -7
@@ -0,0 +1,247 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Chef Software, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
require_relative "../http/simple"
|
18
|
+
require_relative "../resource"
|
19
|
+
class Chef
|
20
|
+
class Resource
|
21
|
+
class HabitatInstall < Chef::Resource
|
22
|
+
unified_mode true
|
23
|
+
provides :habitat_install
|
24
|
+
|
25
|
+
description "Use the **habitat_install** resource to install Chef Habitat."
|
26
|
+
introduced "17.3"
|
27
|
+
examples <<~DOC
|
28
|
+
**Installation Without a Resource Name**
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
habitat_install
|
32
|
+
```
|
33
|
+
|
34
|
+
**Installation specifying a habitat builder URL**
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
habitat_install 'install habitat' do
|
38
|
+
bldr_url 'http://localhost'
|
39
|
+
end
|
40
|
+
```
|
41
|
+
|
42
|
+
**Installation specifying version and habitat builder URL**
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
habitat_install 'install habitat' do
|
46
|
+
bldr_url 'http://localhost'
|
47
|
+
hab_version '1.5.50'
|
48
|
+
end
|
49
|
+
```
|
50
|
+
DOC
|
51
|
+
|
52
|
+
property :name, String, default: "install habitat",
|
53
|
+
description: "Name of the resource block. This has no impact other than logging."
|
54
|
+
|
55
|
+
property :install_url, String, default: "https://raw.githubusercontent.com/habitat-sh/habitat/master/components/hab/install.sh",
|
56
|
+
description: "URL to the install script, default is from the [habitat repo](https://raw.githubusercontent.com/habitat-sh/habitat/master/components/hab/install.sh) ."
|
57
|
+
|
58
|
+
property :bldr_url, String,
|
59
|
+
description: "Optional URL to an alternate Habitat Builder."
|
60
|
+
|
61
|
+
property :create_user, [true, false], default: true,
|
62
|
+
description: "Creates the `hab` system user."
|
63
|
+
|
64
|
+
property :tmp_dir, String,
|
65
|
+
description: "Sets TMPDIR environment variable for location to place temp files. Note: This is required if `/tmp` and `/var/tmp` are mounted `noexec`."
|
66
|
+
|
67
|
+
property :license, String, equal_to: ["accept"],
|
68
|
+
description: "Specifies acceptance of habitat license when set to `accept`."
|
69
|
+
|
70
|
+
property :hab_version, String,
|
71
|
+
description: "Specify the version of `Habitat` you would like to install."
|
72
|
+
|
73
|
+
action :install, description: "Installs Habitat. Does nothing if the `hab` binary is found in the default location for the system (`/bin/hab` on Linux, `/usr/local/bin/hab` on macOS, `C:/habitat/hab.exe` on Windows)" do
|
74
|
+
if ::File.exist?(hab_path)
|
75
|
+
cmd = shell_out!([hab_path, "--version"].flatten.compact.join(" "))
|
76
|
+
version = %r{hab (\d*\.\d*\.\d[^\/]*)}.match(cmd.stdout)[1]
|
77
|
+
return if version == new_resource.hab_version
|
78
|
+
end
|
79
|
+
|
80
|
+
if windows?
|
81
|
+
# Retrieve version information
|
82
|
+
uri = "https://packages.chef.io/files"
|
83
|
+
package_name = "hab-x86_64-windows"
|
84
|
+
habfile = "#{Chef::Config[:file_cache_path]}/#{package_name}.zip"
|
85
|
+
|
86
|
+
# TODO: Figure out how to properly validate the shasum for windows. Doesn't seem it's published
|
87
|
+
# as a .sha265sum like for the linux .tar.gz
|
88
|
+
download = "#{uri}/stable/habitat/latest/hab-x86_64-windows.zip"
|
89
|
+
|
90
|
+
remote_file habfile do
|
91
|
+
source download
|
92
|
+
end
|
93
|
+
|
94
|
+
archive_file "#{package_name}.zip" do
|
95
|
+
path habfile
|
96
|
+
destination "#{Chef::Config[:file_cache_path]}/habitat"
|
97
|
+
action :extract
|
98
|
+
not_if { ::Dir.exist?('c:\habitat') }
|
99
|
+
end
|
100
|
+
|
101
|
+
directory 'c:\habitat' do
|
102
|
+
notifies :run, "powershell_script[installing from archive]", :immediately
|
103
|
+
end
|
104
|
+
|
105
|
+
powershell_script "installing from archive" do
|
106
|
+
code <<-EOH
|
107
|
+
Move-Item -Path #{Chef::Config[:file_cache_path]}/habitat/hab-*/* -Destination C:/habitat -Force
|
108
|
+
EOH
|
109
|
+
action :nothing
|
110
|
+
end
|
111
|
+
|
112
|
+
# TODO: This won't self heal if missing until the next upgrade
|
113
|
+
windows_path 'C:\habitat' do
|
114
|
+
action :add
|
115
|
+
end
|
116
|
+
else
|
117
|
+
package %w{curl tar gzip}
|
118
|
+
|
119
|
+
if new_resource.create_user
|
120
|
+
group "hab"
|
121
|
+
|
122
|
+
user "hab" do
|
123
|
+
gid "hab"
|
124
|
+
system true
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
remote_file ::File.join(Chef::Config[:file_cache_path], "hab-install.sh") do
|
129
|
+
source new_resource.install_url
|
130
|
+
sensitive true
|
131
|
+
end
|
132
|
+
|
133
|
+
execute "installing with hab-install.sh" do
|
134
|
+
command hab_command
|
135
|
+
environment(
|
136
|
+
{
|
137
|
+
"HAB_BLDR_URL" => "bldr_url",
|
138
|
+
"TMPDIR" => "tmp_dir",
|
139
|
+
}.each_with_object({}) do |(var, property), env|
|
140
|
+
env[var] = new_resource.send(property.to_sym) if new_resource.send(property.to_sym)
|
141
|
+
end
|
142
|
+
)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
execute "hab license accept" if new_resource.license == "accept"
|
146
|
+
end
|
147
|
+
|
148
|
+
# TODO: Work out cleanest method to implement upgrade that will support effortless installs as well as standard chef-client
|
149
|
+
# action :upgrade do
|
150
|
+
# if platform_family?('windows')
|
151
|
+
# # Retrieve version information
|
152
|
+
# uri = 'https://packages.chef.io/files'
|
153
|
+
# package_name = 'hab-x86_64-windows'
|
154
|
+
# zipfile = "#{Chef::Config[:file_cache_path]}/#{package_name}.zip"
|
155
|
+
|
156
|
+
# # TODO: Figure out how to properly validate the shasum for windows. Doesn't seem it's published
|
157
|
+
# # as a .sha265sum like for the linux .tar.gz
|
158
|
+
# download = "#{uri}/stable/habitat/latest/hab-x86_64-windows.zip"
|
159
|
+
|
160
|
+
# remote_file zipfile do
|
161
|
+
# source download
|
162
|
+
# end
|
163
|
+
|
164
|
+
# if Chef::VERSION.to_i < 15
|
165
|
+
# ruby_block "#{package_name}.zip" do
|
166
|
+
# block do
|
167
|
+
# require 'zip'
|
168
|
+
# Zip::File.open(zipfile) do |zip_file|
|
169
|
+
# zip_file.each do |f|
|
170
|
+
# fpath = "#{Chef::Config[:file_cache_path]}/habitat/" + f.name
|
171
|
+
# zip_file.extract(f, fpath) # unless ::File.exist?(fpath)
|
172
|
+
# end
|
173
|
+
# end
|
174
|
+
# end
|
175
|
+
# action :run
|
176
|
+
# end
|
177
|
+
# else
|
178
|
+
# archive_file "#{package_name}.zip" do
|
179
|
+
# path zipfile
|
180
|
+
# destination "#{Chef::Config[:file_cache_path]}/habitat"
|
181
|
+
# action :extract
|
182
|
+
# end
|
183
|
+
# end
|
184
|
+
|
185
|
+
# powershell_script 'installing from archive' do
|
186
|
+
# code <<-EOH
|
187
|
+
# Move-Item -Path #{Chef::Config[:file_cache_path]}/habitat/hab-*/* -Destination C:/habitat -Force
|
188
|
+
# EOH
|
189
|
+
# end
|
190
|
+
|
191
|
+
# # TODO: This won't self heal if missing until the next upgrade
|
192
|
+
# if Chef::VERSION.to_i < 14
|
193
|
+
# env 'PATH_c-habitat' do
|
194
|
+
# key_name 'PATH'
|
195
|
+
# delim ';' # this was missing
|
196
|
+
# value 'C:\habitat'
|
197
|
+
# action :modify
|
198
|
+
# end
|
199
|
+
# else
|
200
|
+
# windows_path 'C:\habitat' do
|
201
|
+
# action :add
|
202
|
+
# end
|
203
|
+
# end
|
204
|
+
# else
|
205
|
+
# remote_file ::File.join(Chef::Config[:file_cache_path], 'hab-install.sh') do
|
206
|
+
# source new_resource.install_url
|
207
|
+
# sensitive true
|
208
|
+
# end
|
209
|
+
|
210
|
+
# execute 'installing with hab-install.sh' do
|
211
|
+
# command hab_command
|
212
|
+
# environment(
|
213
|
+
# {
|
214
|
+
# 'HAB_BLDR_URL' => 'bldr_url',
|
215
|
+
# 'TMPDIR' => 'tmp_dir',
|
216
|
+
# }.each_with_object({}) do |(var, property), env|
|
217
|
+
# env[var] = new_resource.send(property.to_sym) if new_resource.send(property.to_sym)
|
218
|
+
# end
|
219
|
+
# )
|
220
|
+
# not_if { ::File.exist?('/bin/hab') }
|
221
|
+
# end
|
222
|
+
# end
|
223
|
+
# end
|
224
|
+
|
225
|
+
action_class do
|
226
|
+
use "../resource/habitat/habitat_shared"
|
227
|
+
|
228
|
+
def hab_path
|
229
|
+
if macos?
|
230
|
+
"/usr/local/bin/hab"
|
231
|
+
elsif windows?
|
232
|
+
"C:/habitat/hab.exe"
|
233
|
+
else
|
234
|
+
"/bin/hab"
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
def hab_command
|
239
|
+
cmd = "bash #{Chef::Config[:file_cache_path]}/hab-install.sh"
|
240
|
+
cmd << " -v #{new_resource.hab_version} " if new_resource.hab_version
|
241
|
+
cmd << " -t x86_64-linux-kernel2" if node["kernel"]["release"].to_i < 3
|
242
|
+
cmd
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|