chef 16.4.41 → 16.5.64

Sign up to get free protection for your applications and to get access to all the features.
Files changed (268) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Rakefile +2 -2
  4. data/bin/knife +1 -1
  5. data/chef.gemspec +2 -1
  6. data/lib/chef/application.rb +18 -16
  7. data/lib/chef/application/apply.rb +12 -7
  8. data/lib/chef/application/base.rb +26 -23
  9. data/lib/chef/application/client.rb +10 -4
  10. data/lib/chef/application/exit_code.rb +13 -4
  11. data/lib/chef/application/knife.rb +22 -11
  12. data/lib/chef/application/solo.rb +2 -1
  13. data/lib/chef/application/windows_service.rb +14 -14
  14. data/lib/chef/application/windows_service_manager.rb +6 -6
  15. data/lib/chef/chef_fs/knife.rb +2 -2
  16. data/lib/chef/chef_fs/parallelizer.rb +0 -1
  17. data/lib/chef/client.rb +10 -11
  18. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  19. data/lib/chef/cookbook/synchronizer.rb +2 -2
  20. data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
  21. data/lib/chef/cookbook_uploader.rb +1 -1
  22. data/lib/chef/data_collector.rb +6 -5
  23. data/lib/chef/data_collector/config_validation.rb +22 -13
  24. data/lib/chef/data_collector/run_end_message.rb +2 -2
  25. data/lib/chef/data_collector/run_start_message.rb +1 -1
  26. data/lib/chef/deprecated.rb +1 -1
  27. data/lib/chef/deprecation/warnings.rb +2 -2
  28. data/lib/chef/digester.rb +2 -2
  29. data/lib/chef/dsl/chef_vault.rb +1 -1
  30. data/lib/chef/dsl/data_query.rb +2 -2
  31. data/lib/chef/dsl/platform_introspection.rb +1 -1
  32. data/lib/chef/encrypted_data_bag_item.rb +3 -4
  33. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  34. data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
  35. data/lib/chef/environment.rb +2 -2
  36. data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
  37. data/lib/chef/exceptions.rb +4 -4
  38. data/lib/chef/file_access_control/windows.rb +5 -1
  39. data/lib/chef/formatters/doc.rb +7 -6
  40. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
  41. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
  42. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
  43. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  44. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
  45. data/lib/chef/formatters/minimal.rb +5 -4
  46. data/lib/chef/http.rb +6 -4
  47. data/lib/chef/http/auth_credentials.rb +5 -1
  48. data/lib/chef/http/authenticator.rb +1 -1
  49. data/lib/chef/http/basic_client.rb +4 -2
  50. data/lib/chef/http/decompressor.rb +1 -1
  51. data/lib/chef/http/http_request.rb +7 -5
  52. data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
  53. data/lib/chef/http/ssl_policies.rb +1 -1
  54. data/lib/chef/json_compat.rb +1 -1
  55. data/lib/chef/knife.rb +4 -4
  56. data/lib/chef/knife/bootstrap.rb +16 -14
  57. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  58. data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
  59. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
  60. data/lib/chef/knife/client_create.rb +3 -3
  61. data/lib/chef/knife/config_get.rb +8 -97
  62. data/lib/chef/knife/config_get_profile.rb +9 -9
  63. data/lib/chef/knife/config_list.rb +139 -0
  64. data/lib/chef/knife/config_list_profiles.rb +8 -98
  65. data/lib/chef/knife/config_show.rb +127 -0
  66. data/lib/chef/knife/config_use.rb +61 -0
  67. data/lib/chef/knife/config_use_profile.rb +9 -24
  68. data/lib/chef/knife/configure.rb +2 -2
  69. data/lib/chef/knife/core/bootstrap_context.rb +2 -2
  70. data/lib/chef/knife/core/object_loader.rb +1 -1
  71. data/lib/chef/knife/core/windows_bootstrap_context.rb +11 -11
  72. data/lib/chef/knife/exec.rb +2 -2
  73. data/lib/chef/knife/node_show.rb +2 -2
  74. data/lib/chef/knife/serve.rb +3 -3
  75. data/lib/chef/knife/ssh.rb +16 -1
  76. data/lib/chef/knife/ssl_check.rb +3 -3
  77. data/lib/chef/knife/status.rb +2 -2
  78. data/lib/chef/knife/user_create.rb +2 -2
  79. data/lib/chef/knife/yaml_convert.rb +1 -1
  80. data/lib/chef/local_mode.rb +2 -2
  81. data/lib/chef/log/syslog.rb +2 -2
  82. data/lib/chef/log/winevt.rb +2 -2
  83. data/lib/chef/mixin/deep_merge.rb +0 -12
  84. data/lib/chef/mixin/openssl_helper.rb +1 -4
  85. data/lib/chef/mixin/template.rb +2 -2
  86. data/lib/chef/mixin/uris.rb +2 -2
  87. data/lib/chef/mixin/versioned_api.rb +1 -2
  88. data/lib/chef/monkey_patches/net_http.rb +4 -4
  89. data/lib/chef/node_map.rb +2 -2
  90. data/lib/chef/policy_builder/policyfile.rb +2 -2
  91. data/lib/chef/provider.rb +0 -4
  92. data/lib/chef/provider/file.rb +2 -2
  93. data/lib/chef/provider/ifconfig.rb +1 -1
  94. data/lib/chef/provider/launchd.rb +2 -2
  95. data/lib/chef/provider/mount/linux.rb +63 -0
  96. data/lib/chef/provider/package/rubygems.rb +21 -18
  97. data/lib/chef/provider/package/snap.rb +0 -1
  98. data/lib/chef/provider/package/windows.rb +2 -2
  99. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +3 -1
  100. data/lib/chef/provider/package/zypper.rb +1 -1
  101. data/lib/chef/provider/remote_file/content.rb +3 -0
  102. data/lib/chef/provider/remote_file/ftp.rb +6 -4
  103. data/lib/chef/provider/remote_file/sftp.rb +6 -4
  104. data/lib/chef/provider/route.rb +2 -6
  105. data/lib/chef/provider/service/macosx.rb +2 -2
  106. data/lib/chef/provider/template_finder.rb +2 -10
  107. data/lib/chef/provider/user/dscl.rb +3 -3
  108. data/lib/chef/provider/user/mac.rb +1 -1
  109. data/lib/chef/provider/windows_task.rb +1 -2
  110. data/lib/chef/provider/zypper_repository.rb +2 -2
  111. data/lib/chef/provider_resolver.rb +1 -1
  112. data/lib/chef/providers.rb +1 -0
  113. data/lib/chef/recipe.rb +2 -2
  114. data/lib/chef/resource.rb +1 -1
  115. data/lib/chef/resource/apt_repository.rb +1 -1
  116. data/lib/chef/resource/bff_package.rb +22 -0
  117. data/lib/chef/resource/breakpoint.rb +57 -2
  118. data/lib/chef/resource/build_essential.rb +1 -1
  119. data/lib/chef/resource/cab_package.rb +29 -0
  120. data/lib/chef/resource/chef_client_cron.rb +32 -25
  121. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  122. data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
  123. data/lib/chef/resource/chef_client_systemd_timer.rb +24 -17
  124. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  125. data/lib/chef/resource/chef_gem.rb +10 -10
  126. data/lib/chef/resource/chef_handler.rb +148 -4
  127. data/lib/chef/resource/chef_sleep.rb +2 -2
  128. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  129. data/lib/chef/resource/cookbook_file.rb +2 -2
  130. data/lib/chef/resource/cron/cron_d.rb +0 -1
  131. data/lib/chef/resource/dnf_package.rb +2 -2
  132. data/lib/chef/resource/dsc_resource.rb +0 -1
  133. data/lib/chef/resource/dsc_script.rb +2 -2
  134. data/lib/chef/resource/execute.rb +6 -6
  135. data/lib/chef/resource/file.rb +4 -4
  136. data/lib/chef/resource/gem_package.rb +5 -5
  137. data/lib/chef/resource/homebrew_package.rb +3 -3
  138. data/lib/chef/resource/homebrew_update.rb +5 -5
  139. data/lib/chef/resource/hostname.rb +2 -2
  140. data/lib/chef/resource/launchd.rb +2 -1
  141. data/lib/chef/resource/locale.rb +2 -2
  142. data/lib/chef/resource/macos_userdefaults.rb +3 -3
  143. data/lib/chef/resource/notify_group.rb +0 -1
  144. data/lib/chef/resource/ohai.rb +46 -3
  145. data/lib/chef/resource/ohai_hint.rb +33 -0
  146. data/lib/chef/resource/openssl_dhparam.rb +27 -5
  147. data/lib/chef/resource/openssl_ec_private_key.rb +6 -3
  148. data/lib/chef/resource/openssl_ec_public_key.rb +2 -2
  149. data/lib/chef/resource/openssl_rsa_private_key.rb +6 -3
  150. data/lib/chef/resource/openssl_x509_certificate.rb +14 -14
  151. data/lib/chef/resource/openssl_x509_crl.rb +19 -10
  152. data/lib/chef/resource/openssl_x509_request.rb +14 -16
  153. data/lib/chef/resource/osx_profile.rb +77 -13
  154. data/lib/chef/resource/plist.rb +1 -1
  155. data/lib/chef/resource/powershell_package_source.rb +5 -5
  156. data/lib/chef/resource/reboot.rb +2 -2
  157. data/lib/chef/resource/remote_file.rb +3 -3
  158. data/lib/chef/resource/rhsm_register.rb +22 -10
  159. data/lib/chef/resource/ruby_block.rb +2 -2
  160. data/lib/chef/resource/scm/subversion.rb +2 -2
  161. data/lib/chef/resource/service.rb +3 -3
  162. data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
  163. data/lib/chef/resource/support/cron.d.erb +1 -1
  164. data/lib/chef/resource/support/cron_access.erb +1 -1
  165. data/lib/chef/resource/support/sudoer.erb +1 -1
  166. data/lib/chef/resource/support/ulimit.erb +1 -1
  167. data/lib/chef/resource/sysctl.rb +1 -5
  168. data/lib/chef/resource/systemd_unit.rb +2 -2
  169. data/lib/chef/resource/template.rb +2 -2
  170. data/lib/chef/resource/windows_ad_join.rb +10 -3
  171. data/lib/chef/resource/windows_certificate.rb +6 -4
  172. data/lib/chef/resource/windows_firewall_profile.rb +22 -20
  173. data/lib/chef/resource/windows_package.rb +28 -5
  174. data/lib/chef/resource/windows_printer.rb +5 -3
  175. data/lib/chef/resource/windows_printer_port.rb +6 -4
  176. data/lib/chef/resource/windows_user_privilege.rb +53 -54
  177. data/lib/chef/resource/windows_workgroup.rb +3 -3
  178. data/lib/chef/resource/yum_package.rb +2 -2
  179. data/lib/chef/resources.rb +3 -1
  180. data/lib/chef/run_context.rb +2 -2
  181. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  182. data/lib/chef/run_lock.rb +2 -2
  183. data/lib/chef/search/query.rb +4 -5
  184. data/lib/chef/shell.rb +31 -26
  185. data/lib/chef/shell/ext.rb +11 -11
  186. data/lib/chef/shell/shell_session.rb +2 -2
  187. data/lib/chef/train_transport.rb +5 -104
  188. data/lib/chef/util/diff.rb +3 -3
  189. data/lib/chef/util/powershell/cmdlet.rb +3 -1
  190. data/lib/chef/util/powershell/ps_credential.rb +18 -14
  191. data/lib/chef/util/threaded_job_queue.rb +0 -2
  192. data/lib/chef/version.rb +1 -1
  193. data/lib/chef/win32/crypto.rb +1 -1
  194. data/lib/chef/win32/registry.rb +1 -2
  195. data/spec/data/shef-config.rb +1 -1
  196. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
  197. data/spec/functional/resource/aix_service_spec.rb +2 -2
  198. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  199. data/spec/functional/resource/insserv_spec.rb +1 -1
  200. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  201. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  202. data/spec/functional/resource/windows_task_spec.rb +13 -13
  203. data/spec/functional/version_spec.rb +3 -3
  204. data/spec/integration/client/client_spec.rb +4 -4
  205. data/spec/integration/client/exit_code_spec.rb +3 -2
  206. data/spec/integration/client/ipv6_spec.rb +1 -1
  207. data/spec/integration/knife/{config_list_profiles_spec.rb → config_list_spec.rb} +30 -29
  208. data/spec/integration/knife/{config_get_spec.rb → config_show_spec.rb} +3 -3
  209. data/spec/integration/knife/{config_use_profile_spec.rb → config_use_spec.rb} +53 -10
  210. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  211. data/spec/integration/ohai/ohai_spec.rb +61 -0
  212. data/spec/integration/recipes/remote_directory.rb +1 -1
  213. data/spec/integration/solo/solo_spec.rb +5 -5
  214. data/spec/spec_helper.rb +6 -3
  215. data/spec/stress/win32/file_spec.rb +1 -1
  216. data/spec/support/chef_helpers.rb +2 -2
  217. data/spec/support/matchers/leak.rb +2 -2
  218. data/spec/support/platform_helpers.rb +16 -34
  219. data/spec/support/shared/functional/securable_resource.rb +108 -27
  220. data/spec/support/shared/functional/win32_service.rb +1 -1
  221. data/spec/support/shared/unit/application_dot_d.rb +5 -3
  222. data/spec/tiny_server.rb +0 -1
  223. data/spec/unit/application/client_spec.rb +2 -2
  224. data/spec/unit/application/exit_code_spec.rb +10 -0
  225. data/spec/unit/application_spec.rb +4 -6
  226. data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
  227. data/spec/unit/chef_fs/path_util_spec.rb +1 -1
  228. data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
  229. data/spec/unit/cookbook_spec.rb +2 -2
  230. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  231. data/spec/unit/data_collector_spec.rb +0 -113
  232. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  233. data/spec/unit/file_access_control_spec.rb +1 -1
  234. data/spec/unit/knife/bootstrap_spec.rb +6 -6
  235. data/spec/unit/knife/core/ui_spec.rb +1 -0
  236. data/spec/unit/knife/ssh_spec.rb +2 -2
  237. data/spec/unit/lwrp_spec.rb +3 -3
  238. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  239. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  240. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  241. data/spec/unit/mixin/securable_spec.rb +2 -2
  242. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  243. data/spec/unit/provider/mount/linux_spec.rb +97 -0
  244. data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
  245. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  246. data/spec/unit/provider/package/rubygems_spec.rb +4 -1
  247. data/spec/unit/provider/route_spec.rb +0 -2
  248. data/spec/unit/recipe_spec.rb +1 -1
  249. data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
  250. data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
  251. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
  252. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
  253. data/spec/unit/resource/launchd_spec.rb +8 -0
  254. data/spec/unit/resource/osx_profile_spec.rb +67 -1
  255. data/spec/unit/resource/rhsm_register_spec.rb +56 -18
  256. data/spec/unit/resource/windows_uac_spec.rb +1 -1
  257. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  258. data/spec/unit/run_lock_spec.rb +5 -1
  259. data/spec/unit/runner_spec.rb +1 -2
  260. data/spec/unit/shell/shell_ext_spec.rb +46 -3
  261. data/spec/unit/shell/shell_session_spec.rb +35 -64
  262. data/spec/unit/shell_spec.rb +16 -19
  263. data/spec/unit/train_transport_spec.rb +14 -13
  264. data/spec/unit/util/selinux_spec.rb +2 -0
  265. data/tasks/rspec.rb +0 -2
  266. metadata +41 -17
  267. data/lib/chef/dist.rb +0 -68
  268. data/spec/integration/knife/config_get_profile_spec.rb +0 -114
@@ -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 ec key and csr file
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 csr file from an existing ec key
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 rsa key and csr file
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 (rsa or ec)."
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 'rsa')."
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 'ec'). Run openssl ecparam -list_curves to see available options."
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
- require "uuidtools"
23
- require "plist"
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 (.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."
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"] =~ ">= 11.0"
84
- 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"
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
- Tempfile.open("allprofiles.plist") do |tempfile|
256
- shell_out( "/usr/bin/profiles", "-P", "-o", tempfile.path )
257
- ::Plist.parse_xml(tempfile)
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?
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
  require_relative "../resource"
19
- require "plist"
19
+ autoload :Plist, "plist"
20
20
 
21
21
  class Chef
22
22
  class Resource
@@ -33,7 +33,7 @@ class Chef
33
33
  name_property: true
34
34
 
35
35
  property :url, String,
36
- description: "The url to the package source.",
36
+ description: "The URL to the package source.",
37
37
  required: [:register]
38
38
 
39
39
  property :trusted, [TrueClass, FalseClass],
@@ -43,17 +43,17 @@ class Chef
43
43
  property :provider_name, String,
44
44
  equal_to: %w{ Programs msi NuGet msu PowerShellGet psl chocolatey },
45
45
  validation_message: "The following providers are supported: 'Programs', 'msi', 'NuGet', 'msu', 'PowerShellGet', 'psl' or 'chocolatey'",
46
- description: "The package management provider for the source. It supports the following providers: 'Programs', 'msi', 'NuGet', 'msu', 'PowerShellGet', 'psl' and 'chocolatey'.",
46
+ description: "The package management provider for the source.",
47
47
  default: "NuGet"
48
48
 
49
49
  property :publish_location, String,
50
- description: "The url where modules will be published to for this source. Only valid if the provider is 'PowerShellGet'."
50
+ description: "The URL where modules will be published to for this source. Only valid if the provider is `PowerShellGet`."
51
51
 
52
52
  property :script_source_location, String,
53
- description: "The url where scripts are located for this source. Only valid if the provider is 'PowerShellGet'."
53
+ description: "The URL where scripts are located for this source. Only valid if the provider is `PowerShellGet`."
54
54
 
55
55
  property :script_publish_location, String,
56
- description: "The location where scripts will be published to for this source. Only valid if the provider is 'PowerShellGet'."
56
+ description: "The location where scripts will be published to for this source. Only valid if the provider is `PowerShellGet`."
57
57
 
58
58
  load_current_value do
59
59
  cmd = load_resource_state_script(source_name)
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "../resource"
20
- require_relative "../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Resource
@@ -36,7 +36,7 @@ class Chef
36
36
 
37
37
  property :reason, String,
38
38
  description: "A string that describes the reboot action.",
39
- default: "Reboot by #{Chef::Dist::PRODUCT}"
39
+ default: "Reboot by #{ChefUtils::Dist::Infra::PRODUCT}"
40
40
 
41
41
  property :delay_mins, Integer,
42
42
  description: "The amount of time (in minutes) to delay a reboot request.",
@@ -22,7 +22,7 @@ require_relative "file"
22
22
  require_relative "../provider/remote_file"
23
23
  require_relative "../mixin/securable"
24
24
  require_relative "../mixin/uris"
25
- require_relative "../dist"
25
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
26
26
 
27
27
  class Chef
28
28
  class Resource
@@ -74,7 +74,7 @@ class Chef
74
74
  end
75
75
 
76
76
  property :checksum, String,
77
- description: "Optional, see `use_conditional_get`. The SHA-256 checksum of the file. Use to prevent a file from being re-downloaded. When the local file matches the checksum, #{Chef::Dist::PRODUCT} does not download it."
77
+ description: "Optional, see `use_conditional_get`. The SHA-256 checksum of the file. Use to prevent a file from being re-downloaded. When the local file matches the checksum, #{ChefUtils::Dist::Infra::PRODUCT} does not download it."
78
78
 
79
79
  # Disable or enable ETag and Last Modified conditional GET. Equivalent to
80
80
  # use_etag(true_or_false)
@@ -93,7 +93,7 @@ class Chef
93
93
  description: "Enable `If-Modified-Since` headers. Set to `false` to disable `If-Modified-Since` headers. To use this setting, `use_conditional_get` must also be set to `true`."
94
94
 
95
95
  property :ftp_active_mode, [ TrueClass, FalseClass ], default: false,
96
- description: "Whether #{Chef::Dist::PRODUCT} uses active or passive FTP. Set to `true` to use active FTP."
96
+ description: "Whether #{ChefUtils::Dist::Infra::PRODUCT} uses active or passive FTP. Set to `true` to use active FTP."
97
97
 
98
98
  property :headers, Hash, default: lazy { {} },
99
99
  description: "A Hash of custom HTTP headers."
@@ -16,7 +16,7 @@
16
16
  #
17
17
 
18
18
  require_relative "../resource"
19
- require_relative "../dist"
19
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
20
20
  require "shellwords" unless defined?(Shellwords)
21
21
 
22
22
  class Chef
@@ -47,6 +47,10 @@ class Chef
47
47
  property :password, String,
48
48
  description: "The password to use when registering. This property is not applicable if using an activation key. If specified, username and environment are also required."
49
49
 
50
+ property :system_name, String,
51
+ description: "The name of the system to register, defaults to the hostname.",
52
+ introduced: "16.5"
53
+
50
54
  property :auto_attach,
51
55
  [TrueClass, FalseClass],
52
56
  description: "If true, RHSM will attempt to automatically attach the host to applicable subscriptions. It is generally better to use an activation key with the subscriptions pre-defined.",
@@ -61,7 +65,7 @@ class Chef
61
65
  default: false, desired_state: false
62
66
 
63
67
  property :https_for_ca_consumer, [TrueClass, FalseClass],
64
- description: "If true, #{Chef::Dist::PRODUCT} will fetch the katello-ca-consumer-latest.noarch.rpm from the satellite_host using HTTPS.",
68
+ description: "If true, #{ChefUtils::Dist::Infra::PRODUCT} will fetch the katello-ca-consumer-latest.noarch.rpm from the satellite_host using HTTPS.",
65
69
  default: false, desired_state: false,
66
70
  introduced: "15.9"
67
71
 
@@ -121,24 +125,30 @@ class Chef
121
125
  end
122
126
 
123
127
  action_class do
128
+ #
129
+ # @return [Symbol] dnf_package or yum_package depending on OS release
130
+ #
124
131
  def package_resource
125
132
  node["platform_version"].to_i >= 8 ? :dnf_package : :yum_package
126
133
  end
127
134
 
135
+ #
136
+ # @return [Boolean] is the node registered with RHSM
137
+ #
128
138
  def registered_with_rhsm?
129
- # FIXME: use shell_out
130
- cmd = Mixlib::ShellOut.new("subscription-manager status", env: { LANG: "en_US" })
131
- cmd.run_command
132
- !cmd.stdout.match(/Overall Status: Unknown/)
139
+ @registered ||= !shell_out("subscription-manager status").stdout.include?("Overall Status: Unknown")
133
140
  end
134
141
 
142
+ #
143
+ # @return [Boolean] is katello-ca-consumer installed
144
+ #
135
145
  def katello_cert_rpm_installed?
136
- # FIXME: use shell_out
137
- cmd = Mixlib::ShellOut.new("rpm -qa | grep katello-ca-consumer")
138
- cmd.run_command
139
- !cmd.stdout.match(/katello-ca-consumer/).nil?
146
+ shell_out("rpm -qa").stdout.include?("katello-ca-consumer")
140
147
  end
141
148
 
149
+ #
150
+ # @return [String] The URI to fetch katello-ca-consumer-latest.noarch.rpm from
151
+ #
142
152
  def ca_consumer_package_source
143
153
  protocol = new_resource.https_for_ca_consumer ? "https" : "http"
144
154
  "#{protocol}://#{new_resource.satellite_host}/pub/katello-ca-consumer-latest.noarch.rpm"
@@ -153,6 +163,7 @@ class Chef
153
163
 
154
164
  command << new_resource.activation_key.map { |key| "--activationkey=#{Shellwords.shellescape(key)}" }
155
165
  command << "--org=#{Shellwords.shellescape(new_resource.organization)}"
166
+ command << "--name=#{Shellwords.shellescape(new_resource.system_name)}" if new_resource.system_name
156
167
  command << "--force" if new_resource.force
157
168
 
158
169
  return command.join(" ")
@@ -165,6 +176,7 @@ class Chef
165
176
  command << "--username=#{Shellwords.shellescape(new_resource.username)}"
166
177
  command << "--password=#{Shellwords.shellescape(new_resource.password)}"
167
178
  command << "--environment=#{Shellwords.shellescape(new_resource.environment)}" if using_satellite_host?
179
+ command << "--name=#{Shellwords.shellescape(new_resource.system_name)}" if new_resource.system_name
168
180
  command << "--auto-attach" if new_resource.auto_attach
169
181
  command << "--force" if new_resource.force
170
182
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  require_relative "../resource"
21
21
  require_relative "../provider/ruby_block"
22
- require_relative "../dist"
22
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
23
23
 
24
24
  class Chef
25
25
  class Resource
@@ -28,7 +28,7 @@ class Chef
28
28
 
29
29
  provides :ruby_block, target_mode: true
30
30
 
31
- description "Use the **ruby_block** resource to execute Ruby code during a #{Chef::Dist::PRODUCT} run. Ruby code in the ruby_block resource is evaluated with other resources during convergence, whereas Ruby code outside of a ruby_block resource is evaluated before other resources, as the recipe is compiled."
31
+ description "Use the **ruby_block** resource to execute Ruby code during a #{ChefUtils::Dist::Infra::PRODUCT} run. Ruby code in the ruby_block resource is evaluated with other resources during convergence, whereas Ruby code outside of a ruby_block resource is evaluated before other resources, as the recipe is compiled."
32
32
 
33
33
  default_action :run
34
34
  allowed_actions :create, :run
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require_relative "../../dist"
20
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
21
21
 
22
22
  class Chef
23
23
  class Resource
@@ -38,7 +38,7 @@ class Chef
38
38
  default: "--no-auth-cache"
39
39
 
40
40
  property :svn_info_args, [String, nil, FalseClass],
41
- description: "Use when the `svn info` command is used by #{Chef::Dist::PRODUCT} and arguments need to be passed. The `svn_arguments` command does not work when the `svn info` command is used.",
41
+ description: "Use when the `svn info` command is used by #{ChefUtils::Dist::Infra::PRODUCT} and arguments need to be passed. The `svn_arguments` command does not work when the `svn info` command is used.",
42
42
  coerce: proc { |v| v == false ? nil : v }, # coerce false to nil
43
43
  default: "--no-auth-cache"
44
44
 
@@ -20,7 +20,7 @@
20
20
  require "chef-utils/dsl/service" unless defined?(ChefUtils::DSL::Service)
21
21
  require_relative "../resource"
22
22
  require "shellwords" unless defined?(Shellwords)
23
- require_relative "../dist"
23
+ require "chef-utils/dist" unless defined?(ChefUtils::Dist)
24
24
 
25
25
  class Chef
26
26
  class Resource
@@ -39,7 +39,7 @@ class Chef
39
39
 
40
40
  # this is a poor API please do not re-use this pattern
41
41
  property :supports, Hash, default: { restart: nil, reload: nil, status: nil },
42
- description: "A list of properties that controls how #{Chef::Dist::PRODUCT} is to attempt to manage a service: :restart, :reload, :status. For :restart, the init script or other service provider can use a restart command; if :restart is not specified, the #{Chef::Dist::CLIENT} attempts to stop and then start a service. For :reload, the init script or other service provider can use a reload command. For :status, the init script or other service provider can use a status command to determine if the service is running; if :status is not specified, the #{Chef::Dist::CLIENT} attempts to match the service_name against the process table as a regular expression, unless a pattern is specified as a parameter property. Default value: { restart: false, reload: false, status: false } for all platforms (except for the Red Hat platform family, which defaults to { restart: false, reload: false, status: true }.)",
42
+ description: "A list of properties that controls how #{ChefUtils::Dist::Infra::PRODUCT} is to attempt to manage a service: :restart, :reload, :status. For :restart, the init script or other service provider can use a restart command; if :restart is not specified, the #{ChefUtils::Dist::Infra::CLIENT} attempts to stop and then start a service. For :reload, the init script or other service provider can use a reload command. For :status, the init script or other service provider can use a status command to determine if the service is running; if :status is not specified, the #{ChefUtils::Dist::Infra::CLIENT} attempts to match the service_name against the process table as a regular expression, unless a pattern is specified as a parameter property. Default value: { restart: false, reload: false, status: false } for all platforms (except for the Red Hat platform family, which defaults to { restart: false, reload: false, status: true }.)",
43
43
  coerce: proc { |x| x.is_a?(Array) ? x.each_with_object({}) { |i, m| m[i] = true } : x }
44
44
 
45
45
  property :service_name, String,
@@ -82,7 +82,7 @@ class Chef
82
82
  # specify overrides for the start_command, stop_command and
83
83
  # restart_command properties.
84
84
  property :init_command, String,
85
- description: "The path to the init script that is associated with the service. Use init_command to prevent the need to specify overrides for the start_command, stop_command, and restart_command properties. When this property is not specified, the #{Chef::Dist::PRODUCT} will use the default init command for the service provider being used.",
85
+ description: "The path to the init script that is associated with the service. Use init_command to prevent the need to specify overrides for the start_command, stop_command, and restart_command properties. When this property is not specified, the #{ChefUtils::Dist::Infra::PRODUCT} will use the default init command for the service provider being used.",
86
86
  desired_state: false
87
87
 
88
88
  # if the service is enabled or not