chef 16.4.35 → 16.6.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Rakefile +2 -2
- data/bin/knife +1 -1
- data/chef.gemspec +2 -1
- data/lib/chef/api_client/registration.rb +6 -6
- data/lib/chef/application.rb +19 -22
- data/lib/chef/application/apply.rb +12 -7
- data/lib/chef/application/base.rb +26 -25
- data/lib/chef/application/client.rb +16 -8
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +14 -14
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +12 -42
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/data_collector.rb +7 -6
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +2 -2
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +4 -4
- data/lib/chef/file_access_control/windows.rb +5 -1
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/http.rb +6 -4
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +1 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +16 -14
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +4 -2
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
- data/lib/chef/knife/exec.rb +2 -2
- data/lib/chef/knife/node_policy_set.rb +2 -2
- data/lib/chef/knife/node_run_list_add.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/role_env_run_list_add.rb +1 -1
- data/lib/chef/knife/role_env_run_list_set.rb +1 -1
- data/lib/chef/knife/role_run_list_add.rb +1 -1
- data/lib/chef/knife/role_run_list_set.rb +1 -1
- data/lib/chef/knife/search.rb +0 -1
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +18 -3
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/tag_create.rb +1 -1
- data/lib/chef/knife/tag_delete.rb +1 -1
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/deep_merge.rb +0 -12
- data/lib/chef/mixin/openssl_helper.rb +1 -4
- data/lib/chef/mixin/powershell_exec.rb +22 -10
- data/lib/chef/mixin/powershell_out.rb +12 -5
- data/lib/chef/mixin/template.rb +3 -3
- data/lib/chef/mixin/uris.rb +4 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/monkey_patches/net_http.rb +4 -4
- data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
- data/lib/chef/node_map.rb +4 -4
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/powershell.rb +3 -2
- data/lib/chef/provider.rb +1 -5
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/ifconfig/debian.rb +33 -15
- data/lib/chef/provider/ifconfig/redhat.rb +51 -17
- data/lib/chef/provider/launchd.rb +2 -2
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount/linux.rb +63 -0
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +21 -18
- data/lib/chef/provider/package/snap.rb +0 -1
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +12 -1
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +2 -6
- data/lib/chef/provider/service/macosx.rb +2 -2
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/dscl.rb +5 -5
- data/lib/chef/provider/user/mac.rb +3 -3
- data/lib/chef/provider/windows_task.rb +1 -2
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/pwsh.rb +64 -0
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -5
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +57 -2
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_config.rb +313 -0
- data/lib/chef/resource/chef_client_cron.rb +35 -28
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +24 -21
- data/lib/chef/resource/chef_client_systemd_timer.rb +27 -20
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +149 -4
- data/lib/chef/resource/chef_sleep.rb +3 -3
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/_cron_shared.rb +1 -0
- data/lib/chef/resource/cron/cron_d.rb +2 -3
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +2 -2
- data/lib/chef/resource/execute.rb +6 -6
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +5 -5
- data/lib/chef/resource/hostname.rb +2 -2
- data/lib/chef/resource/kernel_module.rb +1 -1
- data/lib/chef/resource/launchd.rb +17 -16
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +27 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
- data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
- data/lib/chef/resource/openssl_x509_crl.rb +19 -10
- data/lib/chef/resource/openssl_x509_request.rb +14 -16
- data/lib/chef/resource/osx_profile.rb +77 -13
- data/lib/chef/resource/plist.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +5 -5
- data/lib/chef/resource/powershell_script.rb +7 -1
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/support/client.erb +65 -0
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +1 -5
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/windows_ad_join.rb +10 -3
- data/lib/chef/resource/windows_audit_policy.rb +26 -24
- data/lib/chef/resource/windows_certificate.rb +6 -4
- data/lib/chef/resource/windows_firewall_profile.rb +22 -20
- data/lib/chef/resource/windows_package.rb +28 -5
- data/lib/chef/resource/windows_printer.rb +5 -3
- data/lib/chef/resource/windows_printer_port.rb +6 -4
- data/lib/chef/resource/windows_user_privilege.rb +53 -54
- data/lib/chef/resource/windows_workgroup.rb +3 -3
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource_reporter.rb +0 -2
- data/lib/chef/resources.rb +4 -1
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/search/query.rb +6 -5
- data/lib/chef/shell.rb +31 -26
- data/lib/chef/shell/ext.rb +11 -11
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.rb +3 -1
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/registry.rb +1 -2
- data/lib/chef/win32/unicode.rb +1 -1
- data/spec/data/shef-config.rb +1 -1
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/mixin/powershell_out_spec.rb +9 -1
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +1 -1
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/powershell_script_spec.rb +57 -14
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_task_spec.rb +13 -13
- data/spec/functional/version_spec.rb +3 -3
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
- data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
- data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +8 -6
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/platform_helpers.rb +22 -35
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/config_spec.rb +1 -1
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +6 -117
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/knife/bootstrap_spec.rb +6 -6
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +39 -2
- data/spec/unit/mixin/powershell_out_spec.rb +14 -0
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/node/immutable_collections_spec.rb +2 -2
- data/spec/unit/provider/mount/linux_spec.rb +97 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/powershell_script_spec.rb +11 -0
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/chef_client_config_spec.rb +137 -0
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/osx_profile_spec.rb +67 -1
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +16 -19
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +0 -2
- metadata +46 -18
- data/lib/chef/dist.rb +0 -68
- data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -16,8 +16,8 @@
|
|
16
16
|
#
|
17
17
|
|
18
18
|
require_relative "../resource"
|
19
|
-
|
20
|
-
|
19
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
20
|
+
autoload :Plist, "plist"
|
21
21
|
|
22
22
|
class Chef
|
23
23
|
class Resource
|
@@ -97,7 +97,7 @@ class Chef
|
|
97
97
|
desired_state: false
|
98
98
|
|
99
99
|
property :sudo, [TrueClass, FalseClass],
|
100
|
-
description: "Set to true if the setting you wish to modify requires privileged access. This requires passwordless sudo for the '/usr/bin/defaults' command to be setup for the user running #{
|
100
|
+
description: "Set to true if the setting you wish to modify requires privileged access. This requires passwordless sudo for the '/usr/bin/defaults' command to be setup for the user running #{ChefUtils::Dist::Infra::PRODUCT}.",
|
101
101
|
default: false,
|
102
102
|
desired_state: false
|
103
103
|
|
data/lib/chef/resource/mount.rb
CHANGED
@@ -84,7 +84,7 @@ class Chef
|
|
84
84
|
description: "Windows only: Use to specify the user name."
|
85
85
|
|
86
86
|
property :domain, String,
|
87
|
-
description: "Windows only: Use to specify the domain in which the username and password are located."
|
87
|
+
description: "Windows only: Use to specify the domain in which the `username` and `password` are located."
|
88
88
|
|
89
89
|
private
|
90
90
|
|
data/lib/chef/resource/ohai.rb
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
require_relative "../resource"
|
22
|
-
|
22
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
23
23
|
require "ohai" unless defined?(Ohai::System)
|
24
24
|
|
25
25
|
class Chef
|
@@ -29,10 +29,53 @@ class Chef
|
|
29
29
|
|
30
30
|
provides :ohai
|
31
31
|
|
32
|
-
description "Use the **ohai** resource to reload the Ohai configuration on a node. This allows recipes that change system attributes (like a recipe that adds a user) to refer to those attributes later on during the #{
|
32
|
+
description "Use the **ohai** resource to reload the Ohai configuration on a node. This allows recipes that change system attributes (like a recipe that adds a user) to refer to those attributes later on during the #{ChefUtils::Dist::Infra::PRODUCT} run."
|
33
|
+
|
34
|
+
examples <<~DOC
|
35
|
+
Reload All Ohai Plugins
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
ohai 'reload' do
|
39
|
+
action :reload
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
Reload A Single Ohai Plugin
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
ohai 'reload' do
|
47
|
+
plugin 'ipaddress'
|
48
|
+
action :reload
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
52
|
+
Reload Ohai after a new user is created
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
ohai 'reload_passwd' do
|
56
|
+
action :nothing
|
57
|
+
plugin 'etc'
|
58
|
+
end
|
59
|
+
|
60
|
+
user 'daemon_user' do
|
61
|
+
home '/dev/null'
|
62
|
+
shell '/sbin/nologin'
|
63
|
+
system true
|
64
|
+
notifies :reload, 'ohai[reload_passwd]', :immediately
|
65
|
+
end
|
66
|
+
|
67
|
+
ruby_block 'just an example' do
|
68
|
+
block do
|
69
|
+
# These variables will now have the new values
|
70
|
+
puts node['etc']['passwd']['daemon_user']['uid']
|
71
|
+
puts node['etc']['passwd']['daemon_user']['gid']
|
72
|
+
end
|
73
|
+
end
|
74
|
+
```
|
75
|
+
DOC
|
33
76
|
|
34
77
|
property :plugin, String,
|
35
|
-
description: "
|
78
|
+
description: "Specific Ohai attribute data to reload. This property behaves similar to specifying attributes when running Ohai on the command line and takes the attribute that you wish to reload instead of the actual plugin name. For instance, you can pass `ipaddress` to reload `node['ipaddress']` even though that data comes from the `Network` plugin. If this property is not specified, #{ChefUtils::Dist::Infra::PRODUCT} will reload all plugins."
|
36
79
|
|
37
80
|
def load_current_resource
|
38
81
|
true
|
@@ -26,6 +26,39 @@ class Chef
|
|
26
26
|
|
27
27
|
description "Use the **ohai_hint** resource to aid in configuration detection by passing hint data to Ohai."
|
28
28
|
introduced "14.0"
|
29
|
+
examples <<~DOC
|
30
|
+
**Create a hint file**
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
ohai_hint 'example' do
|
34
|
+
content a: 'test_content'
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
**Create a hint file with a name that does not match the resource name**
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
ohai_hint 'example' do
|
42
|
+
hint_name 'custom'
|
43
|
+
end
|
44
|
+
```
|
45
|
+
|
46
|
+
**Create a hint file that is not loaded at compile time**
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
ohai_hint 'example' do
|
50
|
+
compile_time false
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
**Delete a hint file**
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
ohai_hint 'example' do
|
58
|
+
action :delete
|
59
|
+
end
|
60
|
+
```
|
61
|
+
DOC
|
29
62
|
|
30
63
|
property :hint_name, String,
|
31
64
|
description: "An optional property to set the hint name if it differs from the resource block's name.",
|
@@ -27,15 +27,37 @@ class Chef
|
|
27
27
|
|
28
28
|
provides(:openssl_dhparam) { true }
|
29
29
|
|
30
|
-
description "Use the **openssl_dhparam** resource to generate dhparam.pem files. If a valid dhparam.pem file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid dhparam file, it will be overwritten."
|
30
|
+
description "Use the **openssl_dhparam** resource to generate `dhparam.pem` files. If a valid `dhparam.pem` file is found at the specified location, no new file will be created. If a file is found at the specified location but it is not a valid `dhparam.pem` file, it will be overwritten."
|
31
31
|
introduced "14.0"
|
32
32
|
examples <<~DOC
|
33
|
-
Create a
|
33
|
+
**Create a dhparam file**
|
34
34
|
|
35
35
|
```ruby
|
36
|
-
openssl_dhparam '/etc/
|
37
|
-
|
38
|
-
|
36
|
+
openssl_dhparam '/etc/httpd/ssl/dhparam.pem'
|
37
|
+
```
|
38
|
+
|
39
|
+
**Create a dhparam file with a specific key length**
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
openssl_dhparam '/etc/httpd/ssl/dhparam.pem' do
|
43
|
+
key_length 4096
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
**Create a dhparam file with specific user/group ownership**
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
openssl_dhparam '/etc/httpd/ssl/dhparam.pem' do
|
51
|
+
owner 'www-data'
|
52
|
+
group 'www-data'
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
**Manually specify the dhparam file path**
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
openssl_dhparam 'httpd_dhparam' do
|
60
|
+
path '/etc/httpd/ssl/dhparam.pem'
|
39
61
|
end
|
40
62
|
```
|
41
63
|
DOC
|
@@ -66,10 +66,13 @@ class Chef
|
|
66
66
|
description: "The desired passphrase for the key."
|
67
67
|
|
68
68
|
property :key_cipher, String,
|
69
|
-
equal_to: OpenSSL::Cipher.ciphers,
|
70
|
-
validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
|
71
69
|
description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
|
72
|
-
default: "des3"
|
70
|
+
default: lazy { "des3" },
|
71
|
+
default_description: "des3",
|
72
|
+
callbacks: {
|
73
|
+
"key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
|
74
|
+
proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
|
75
|
+
}
|
73
76
|
|
74
77
|
property :owner, [String, Integer],
|
75
78
|
description: "The owner applied to all files created by the resource."
|
@@ -31,7 +31,7 @@ class Chef
|
|
31
31
|
description "Use the **openssl_ec_public_key** resource to generate elliptic curve (EC) public key files from a given EC private key."
|
32
32
|
introduced "14.4"
|
33
33
|
examples <<~DOC
|
34
|
-
Generate new
|
34
|
+
**Generate new EC public key from a private key on disk**
|
35
35
|
|
36
36
|
```ruby
|
37
37
|
openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3.pub' do
|
@@ -41,7 +41,7 @@ class Chef
|
|
41
41
|
end
|
42
42
|
```
|
43
43
|
|
44
|
-
Generate new
|
44
|
+
**Generate new EC public key by passing in a private key**
|
45
45
|
|
46
46
|
```ruby
|
47
47
|
openssl_ec_public_key '/etc/ssl_files/eckey_prime256v1_des3_2.pub' do
|
@@ -65,10 +65,13 @@ class Chef
|
|
65
65
|
description: "The desired passphrase for the key."
|
66
66
|
|
67
67
|
property :key_cipher, String,
|
68
|
-
equal_to: OpenSSL::Cipher.ciphers,
|
69
|
-
validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
|
70
68
|
description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
|
71
|
-
default: "des3"
|
69
|
+
default: lazy { "des3" },
|
70
|
+
default_description: "des3",
|
71
|
+
callbacks: {
|
72
|
+
"key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
|
73
|
+
proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
|
74
|
+
}
|
72
75
|
|
73
76
|
property :owner, [String, Integer],
|
74
77
|
description: "The owner applied to all files created by the resource."
|
@@ -86,32 +86,32 @@ class Chef
|
|
86
86
|
description: "The permission mode applied to all files created by the resource."
|
87
87
|
|
88
88
|
property :country, String,
|
89
|
-
description: "Value for the C certificate field."
|
89
|
+
description: "Value for the `C` certificate field."
|
90
90
|
|
91
91
|
property :state, String,
|
92
|
-
description: "Value for the ST certificate field."
|
92
|
+
description: "Value for the `ST` certificate field."
|
93
93
|
|
94
94
|
property :city, String,
|
95
|
-
description: "Value for the L certificate field."
|
95
|
+
description: "Value for the `L` certificate field."
|
96
96
|
|
97
97
|
property :org, String,
|
98
|
-
description: "Value for the O certificate field."
|
98
|
+
description: "Value for the `O` certificate field."
|
99
99
|
|
100
100
|
property :org_unit, String,
|
101
|
-
description: "Value for the OU certificate field."
|
101
|
+
description: "Value for the `OU` certificate field."
|
102
102
|
|
103
103
|
property :common_name, String,
|
104
|
-
description: "Value for the CN certificate field."
|
104
|
+
description: "Value for the `CN` certificate field."
|
105
105
|
|
106
106
|
property :email, String,
|
107
|
-
description: "Value for the email certificate field."
|
107
|
+
description: "Value for the `email` certificate field."
|
108
108
|
|
109
109
|
property :extensions, Hash,
|
110
|
-
description: "Hash of X509 Extensions entries, in format { 'keyUsage' => { 'values' => %w( keyEncipherment digitalSignature), 'critical' => true } }
|
110
|
+
description: "Hash of X509 Extensions entries, in format `{ 'keyUsage' => { 'values' => %w( keyEncipherment digitalSignature), 'critical' => true } }`.",
|
111
111
|
default: lazy { {} }
|
112
112
|
|
113
113
|
property :subject_alt_name, Array,
|
114
|
-
description: "Array of Subject Alternative Name entries, in format DNS:example.com or IP:1.2.3.4
|
114
|
+
description: "Array of Subject Alternative Name entries, in format `DNS:example.com` or `IP:1.2.3.4`.",
|
115
115
|
default: lazy { [] }
|
116
116
|
|
117
117
|
property :key_file, String,
|
@@ -122,7 +122,7 @@ class Chef
|
|
122
122
|
|
123
123
|
property :key_type, String,
|
124
124
|
equal_to: %w{rsa ec},
|
125
|
-
description: "The desired type of the generated key
|
125
|
+
description: "The desired type of the generated key.",
|
126
126
|
default: "rsa"
|
127
127
|
|
128
128
|
property :key_length, Integer,
|
@@ -131,18 +131,18 @@ class Chef
|
|
131
131
|
default: 2048
|
132
132
|
|
133
133
|
property :key_curve, String,
|
134
|
-
description: "The desired curve of the generated key (if key_type is equal to 'ec'). Run openssl ecparam -list_curves to see available options.",
|
134
|
+
description: "The desired curve of the generated key (if key_type is equal to 'ec'). Run `openssl ecparam -list_curves` to see available options.",
|
135
135
|
equal_to: %w{secp384r1 secp521r1 prime256v1},
|
136
136
|
default: "prime256v1"
|
137
137
|
|
138
138
|
property :csr_file, String,
|
139
|
-
description: "The path to a X509 Certificate Request (CSR) on the filesystem. If the csr_file property is specified, the resource will attempt to source a CSR from this location. If no CSR file is found, the resource will generate a Self-Signed Certificate and the certificate fields must be specified (common_name at last)."
|
139
|
+
description: "The path to a X509 Certificate Request (CSR) on the filesystem. If the `csr_file` property is specified, the resource will attempt to source a CSR from this location. If no CSR file is found, the resource will generate a Self-Signed Certificate and the certificate fields must be specified (common_name at last)."
|
140
140
|
|
141
141
|
property :ca_cert_file, String,
|
142
|
-
description: "The path to the CA X509 Certificate on the filesystem. If the ca_cert_file property is specified, the ca_key_file property must also be specified, the certificate will be signed with them."
|
142
|
+
description: "The path to the CA X509 Certificate on the filesystem. If the `ca_cert_file` property is specified, the `ca_key_file` property must also be specified, the certificate will be signed with them."
|
143
143
|
|
144
144
|
property :ca_key_file, String,
|
145
|
-
description: "The path to the CA private key on the filesystem. If the ca_key_file property is specified, the
|
145
|
+
description: "The path to the CA private key on the filesystem. If the `ca_key_file` property is specified, the `ca_cert_file` property must also be specified, the certificate will be signed with them."
|
146
146
|
|
147
147
|
property :ca_key_pass, String,
|
148
148
|
description: "The passphrase for CA private key's passphrase."
|
@@ -31,15 +31,24 @@ class Chef
|
|
31
31
|
description "Use the **openssl_x509_crl** resource to generate PEM-formatted x509 certificate revocation list (CRL) files."
|
32
32
|
introduced "14.4"
|
33
33
|
examples <<~DOC
|
34
|
-
|
34
|
+
**Create a certificate revocation file**
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
36
|
+
```ruby
|
37
|
+
openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
|
38
|
+
ca_cert_file '/etc/ssl_test/my_ca.crt'
|
39
|
+
ca_key_file '/etc/ssl_test/my_ca.key'
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
**Create a certificate revocation file for a particular serial**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
openssl_x509_crl '/etc/ssl_test/my_ca.crl' do
|
47
|
+
ca_cert_file '/etc/ssl_test/my_ca.crt'
|
48
|
+
ca_key_file '/etc/ssl_test/my_ca.key'
|
49
|
+
serial_to_revoke C7BCB6602A2E4251EF4E2827A228CB52BC0CEA2F
|
50
|
+
end
|
51
|
+
```
|
43
52
|
DOC
|
44
53
|
|
45
54
|
property :path, String,
|
@@ -62,11 +71,11 @@ class Chef
|
|
62
71
|
default: 1
|
63
72
|
|
64
73
|
property :ca_cert_file, String,
|
65
|
-
description: "The path to the CA X509 Certificate on the filesystem. If the ca_cert_file property is specified, the ca_key_file property must also be specified, the CRL will be signed with them.",
|
74
|
+
description: "The path to the CA X509 Certificate on the filesystem. If the `ca_cert_file` property is specified, the `ca_key_file` property must also be specified, the CRL will be signed with them.",
|
66
75
|
required: true
|
67
76
|
|
68
77
|
property :ca_key_file, String,
|
69
|
-
description: "The path to the CA private key on the filesystem. If the ca_key_file property is specified, the ca_cert_file property must also be specified, the CRL will be signed with them.",
|
78
|
+
description: "The path to the CA private key on the filesystem. If the `ca_key_file` property is specified, the `ca_cert_file` property must also be specified, the CRL will be signed with them.",
|
70
79
|
required: true
|
71
80
|
|
72
81
|
property :ca_key_pass, String,
|
@@ -31,7 +31,7 @@ class Chef
|
|
31
31
|
description "Use the **openssl_x509_request** resource to generate PEM-formatted x509 certificates requests. If no existing key is specified, the resource will automatically generate a passwordless key with the certificate."
|
32
32
|
introduced "14.4"
|
33
33
|
examples <<~DOC
|
34
|
-
Generate new
|
34
|
+
**Generate new EC key and CSR file**
|
35
35
|
|
36
36
|
```ruby
|
37
37
|
openssl_x509_request '/etc/ssl_files/my_ec_request.csr' do
|
@@ -42,7 +42,7 @@ class Chef
|
|
42
42
|
end
|
43
43
|
```
|
44
44
|
|
45
|
-
Generate a new
|
45
|
+
**Generate a new CSR file from an existing EC key**
|
46
46
|
|
47
47
|
```ruby
|
48
48
|
openssl_x509_request '/etc/ssl_files/my_ec_request2.csr' do
|
@@ -54,7 +54,7 @@ class Chef
|
|
54
54
|
end
|
55
55
|
```
|
56
56
|
|
57
|
-
Generate new
|
57
|
+
**Generate new RSA key and CSR file**
|
58
58
|
|
59
59
|
```ruby
|
60
60
|
openssl_x509_request '/etc/ssl_files/my_rsa_request.csr' do
|
@@ -80,46 +80,44 @@ class Chef
|
|
80
80
|
description: "The permission mode applied to all files created by the resource."
|
81
81
|
|
82
82
|
property :country, String,
|
83
|
-
description: "Value for the C certificate field."
|
83
|
+
description: "Value for the `C` certificate field."
|
84
84
|
|
85
85
|
property :state, String,
|
86
|
-
description: "Value for the ST certificate field."
|
86
|
+
description: "Value for the `ST` certificate field."
|
87
87
|
|
88
88
|
property :city, String,
|
89
|
-
description: "Value for the L certificate field."
|
89
|
+
description: "Value for the `L` certificate field."
|
90
90
|
|
91
91
|
property :org, String,
|
92
|
-
description: "Value for the O certificate field."
|
92
|
+
description: "Value for the `O` certificate field."
|
93
93
|
|
94
94
|
property :org_unit, String,
|
95
|
-
description: "Value for the OU certificate field."
|
95
|
+
description: "Value for the `OU` certificate field."
|
96
96
|
|
97
97
|
property :common_name, String,
|
98
98
|
required: true,
|
99
|
-
description: "Value for the CN certificate field."
|
99
|
+
description: "Value for the `CN` certificate field."
|
100
100
|
|
101
101
|
property :email, String,
|
102
|
-
description: "Value for the email certificate field."
|
102
|
+
description: "Value for the `email` certificate field."
|
103
103
|
|
104
104
|
property :key_file, String,
|
105
|
-
description: "The path to a certificate key file on the filesystem. If the key_file property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the key_file property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
|
105
|
+
description: "The path to a certificate key file on the filesystem. If the `key_file` property is specified, the resource will attempt to source a key from this location. If no key file is found, the resource will generate a new key file at this location. If the `key_file` property is not specified, the resource will generate a key file in the same directory as the generated certificate, with the same name as the generated certificate."
|
106
106
|
|
107
107
|
property :key_pass, String,
|
108
108
|
description: "The passphrase for an existing key's passphrase."
|
109
109
|
|
110
110
|
property :key_type, String,
|
111
111
|
equal_to: %w{rsa ec}, default: "ec",
|
112
|
-
description: "The desired type of the generated key
|
112
|
+
description: "The desired type of the generated key."
|
113
113
|
|
114
114
|
property :key_length, Integer,
|
115
115
|
equal_to: [1024, 2048, 4096, 8192], default: 2048,
|
116
|
-
description: "The desired bit length of the generated key (if key_type is equal to
|
116
|
+
description: "The desired bit length of the generated key (if key_type is equal to `rsa`)."
|
117
117
|
|
118
118
|
property :key_curve, String,
|
119
119
|
equal_to: %w{secp384r1 secp521r1 prime256v1}, default: "prime256v1",
|
120
|
-
description: "The desired curve of the generated key (if key_type is equal to
|
121
|
-
|
122
|
-
default_action :create
|
120
|
+
description: "The desired curve of the generated key (if key_type is equal to `ec`). Run `openssl ecparam -list_curves` to see available options."
|
123
121
|
|
124
122
|
action :create do
|
125
123
|
description "Generate a certificate request."
|
@@ -19,8 +19,8 @@
|
|
19
19
|
require_relative "../resource"
|
20
20
|
require_relative "../log"
|
21
21
|
require_relative "../resource/file"
|
22
|
-
|
23
|
-
|
22
|
+
autoload :UUIDTools, "uuidtools"
|
23
|
+
autoload :Plist, "plist"
|
24
24
|
|
25
25
|
class Chef
|
26
26
|
class Resource
|
@@ -30,8 +30,72 @@ class Chef
|
|
30
30
|
provides :osx_profile
|
31
31
|
provides :osx_config_profile
|
32
32
|
|
33
|
-
description "Use the **osx_profile** resource to manage configuration profiles (
|
33
|
+
description "Use the **osx_profile** resource to manage configuration profiles (`.mobileconfig` files) on the macOS platform. The **osx_profile** resource installs profiles by using the uuidgen library to generate a unique `ProfileUUID`, and then using the `profiles` command to install the profile on the system."
|
34
34
|
introduced "12.7"
|
35
|
+
examples <<~DOC
|
36
|
+
**Install a profile from a cookbook file**
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
osx_profile 'com.company.screensaver.mobileconfig'
|
40
|
+
```
|
41
|
+
|
42
|
+
**Install profile from a hash**
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
profile_hash = {
|
46
|
+
'PayloadIdentifier' => 'com.company.screensaver',
|
47
|
+
'PayloadRemovalDisallowed' => false,
|
48
|
+
'PayloadScope' => 'System',
|
49
|
+
'PayloadType' => 'Configuration',
|
50
|
+
'PayloadUUID' => '1781fbec-3325-565f-9022-8aa28135c3cc',
|
51
|
+
'PayloadOrganization' => 'Chef',
|
52
|
+
'PayloadVersion' => 1,
|
53
|
+
'PayloadDisplayName' => 'Screensaver Settings',
|
54
|
+
'PayloadContent'=> [
|
55
|
+
{
|
56
|
+
'PayloadType' => 'com.apple.ManagedClient.preferences',
|
57
|
+
'PayloadVersion' => 1,
|
58
|
+
'PayloadIdentifier' => 'com.company.screensaver',
|
59
|
+
'PayloadUUID' => '73fc30e0-1e57-0131-c32d-000c2944c108',
|
60
|
+
'PayloadEnabled' => true,
|
61
|
+
'PayloadDisplayName' => 'com.apple.screensaver',
|
62
|
+
'PayloadContent' => {
|
63
|
+
'com.apple.screensaver' => {
|
64
|
+
'Forced' => [
|
65
|
+
{
|
66
|
+
'mcx_preference_settings' => {
|
67
|
+
'idleTime' => 0,
|
68
|
+
}
|
69
|
+
}
|
70
|
+
]
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
]
|
75
|
+
}
|
76
|
+
|
77
|
+
osx_profile 'Install screensaver profile' do
|
78
|
+
profile profile_hash
|
79
|
+
end
|
80
|
+
```
|
81
|
+
|
82
|
+
**Remove profile using identifier in resource name**
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
osx_profile 'com.company.screensaver' do
|
86
|
+
action :remove
|
87
|
+
end
|
88
|
+
```
|
89
|
+
|
90
|
+
**Remove profile by identifier and user friendly resource name**
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
osx_profile 'Remove screensaver profile' do
|
94
|
+
identifier 'com.company.screensaver'
|
95
|
+
action :remove
|
96
|
+
end
|
97
|
+
```
|
98
|
+
DOC
|
35
99
|
|
36
100
|
property :profile_name, String,
|
37
101
|
description: "Use to specify the name of the profile, if different from the name of the resource block.",
|
@@ -41,7 +105,7 @@ class Chef
|
|
41
105
|
description: "Use to specify a profile. This may be the name of a profile contained in a cookbook or a Hash that contains the contents of the profile."
|
42
106
|
|
43
107
|
property :identifier, String,
|
44
|
-
description: "Use to specify the identifier for the profile, such as com.company.screensaver
|
108
|
+
description: "Use to specify the identifier for the profile, such as `com.company.screensaver`."
|
45
109
|
|
46
110
|
# this is not a property it is necessary for the tempfile this resource uses to work (FIXME: this is terrible)
|
47
111
|
#
|
@@ -80,10 +144,6 @@ class Chef
|
|
80
144
|
end
|
81
145
|
|
82
146
|
def check_resource_semantics!
|
83
|
-
if mac? && node["platform_version"] =~ "> 10.15"
|
84
|
-
raise "The osx_profile resource is not available on macOS Bug Sur or above due to the removal of apple support for CLI installation of profiles"
|
85
|
-
end
|
86
|
-
|
87
147
|
if action == :remove
|
88
148
|
if new_profile_identifier
|
89
149
|
if invalid_profile_name?(new_profile_identifier)
|
@@ -97,6 +157,11 @@ class Chef
|
|
97
157
|
end
|
98
158
|
|
99
159
|
if action == :install
|
160
|
+
# we only do this check for the install action so that profiles can still be removed on macOS 11+
|
161
|
+
if mac? && node["platform_version"] =~ ">= 11.0"
|
162
|
+
raise "The osx_profile resource is not available on macOS Big Sur or above due to Apple's removal of support for CLI profile installation"
|
163
|
+
end
|
164
|
+
|
100
165
|
if new_profile_hash.is_a?(Hash) && !new_profile_hash.include?("PayloadIdentifier")
|
101
166
|
raise "The specified profile does not seem to be valid"
|
102
167
|
end
|
@@ -243,19 +308,18 @@ class Chef
|
|
243
308
|
#
|
244
309
|
|
245
310
|
def get_installed_profiles(update = nil)
|
311
|
+
logger.trace("Saving profile data to node.run_state")
|
246
312
|
if update
|
247
313
|
node.run_state[:config_profiles] = query_installed_profiles
|
248
314
|
else
|
249
315
|
node.run_state[:config_profiles] ||= query_installed_profiles
|
250
316
|
end
|
251
|
-
logger.trace("Saved profiles to run_state")
|
252
317
|
end
|
253
318
|
|
254
319
|
def query_installed_profiles
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
end
|
320
|
+
logger.trace("Running /usr/bin/profiles -P -o stdout-xml to determine profile state")
|
321
|
+
so = shell_out( "/usr/bin/profiles", "-P", "-o", "stdout-xml" )
|
322
|
+
::Plist.parse_xml(so.stdout)
|
259
323
|
end
|
260
324
|
|
261
325
|
def profile_installed?
|