summaryrefslogtreecommitdiff
path: root/RELEASE_NOTES.md
blob: aabecc13a25799eca0b5d02c5e8f085df5bb5a57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Chef Client Release Notes 12.6.0:


## New `chef_version` and `ohai_version` metadata keywords

Two new keywords have been introduced to the metadata of cookbooks for constraining the acceptable range
of chef-client versions that a cookbook runs on.  By default if these keywords are not present chef-client
will always run.  If either of these keywords are given and none of the given ranges match the running
Chef::VERSION or Ohai::VERSION then the chef-client will report an error that the cookbook does not support
the running client or ohai version.

There is currently little integration with this outside of the client, but work is underway to display this
information on the supermarket.  There are also plans to get depsolvers like Berkshelf able to automatically
prune invalid cookbooks out of their solution sets to avoid uploading a cookbook which will only throw
an exception.

## New --profile-ruby option to profile Ruby

The 'chef' gem now has a new optional development dependency on the 'ruby-prof' gem and when it is installed
it can be used via the --profile-ruby command line option.  This gem will also be shipped in all the omnibus
builds of `chef` and `chef-dk` going forwards so that while it will be 'optional' it will also be fairly
broadly installed (it is 'optional' mostly for people who are installing chef in their own bundles).

When invoked this option will dump a (large) profiling graph into `/var/chef/cache/graph_profile.out`.  For
users who are familiar with reading call stack graphs this will likely be very useful for profiling the
internal guts of a chef-client run.  The performance hit of this profiler will roughly double the length
of a chef-client run so it is something that can be used without causing errant timeouts and other
heisenbugs due to the profiler itself.  It is not suitable for daily use in production.  It is unlikely to
be suitable for users without a background in software development and debugging.

It was developed out of some particularly difficult profiling of performance issues in the Chef node
attributes code, which was then turned into a patch so that other people could experiment with it.  It was
not designed to be a general solution to performance issues inside of chef-client recipe code.

This debugging feature will mostly be useful to people who are already Ruby experts.

### New ksh resource

ksh is now available to use as a resource and is available as an interpreter in the script resource.

Please see the DOC_CHANGES for more details.

## Better handling of Windows service logging

Currently, the windows service manager passes in a default log_location to the Chef windows service at startup. Once the service is installed, this log_location overrides any log_location set in the client.rb. In 12.6.0, this behavior is changed to allow the Chef windows service to prefer the log_location in client.rb instead. Now, the windows service manager will not explicitly pass in a log_location, and therefore the Chef service will always use what is in the client.rb or the typical default path if none is configured. This enables scenarios such as logging to the Windows event log when running chef client as a Windows service.

## Dsc_resource changes and fixes

* A fix was made for the Nov 2015 update of Windows 10, where the dsc_resource did not properly show the command output when converging the resource.
* Dsc_resource could in some cases show the plaintext password when #inspected - this is now prevented from happening.
* Previously, Chef required the LCM Refreshmode to be set to Disabled when utilizing dsc_resource. Microsoft has relaxed this requirement in WFM 5 (PowerShell 5.0.10586.0 or later).  Now, we only require the RefreshMode to be disabled when running on earlier versions of PowerShell.
* Added a reboot_action attribute to dsc_resource. If the DSC resource indicates that it requires a reboot, reboot_action can use the reboot resource to either reboot immediately (:reboot_now) or queue a reboot (:request_reboot).  The default value of reboot_action is :nothing.

## Other items

There are a large number of other PRs in this release. Please eee the CHANGELOG for the full set of changes.