summaryrefslogtreecommitdiff
path: root/RELEASE_NOTES.md
blob: 5e04bff069270867d345eda7ebdd942cb93aa020 (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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
*This file holds "in progress" release notes for the current release under development and is intended for consumption by the Chef Documentation team.
Please see [https://docs.chef.io/release_notes.html](https://docs.chef.io/release_notes.html) for the official Chef release notes.*

# Chef Client Release Notes 12.16:

## Highlighted enhancements for this release:

### `attribute_changed` event hook

* Added `attribute_changed` event hook:

In a cookbook library file, you can add this in order to print out all attribute changes in cookbooks:

```ruby
Chef.event_handler do
  on :attribute_changed do |precedence, key, value|
    puts "setting attribute #{precedence}#{key.map {|n| "[\"#{n}\"]" }.join} = #{value}"
  end
end
```

If you want to setup a policy that override attributes should never be used:

```ruby
Chef.event_handler do
  on :attribute_changed do |precedence, key, value|
    raise "override policy violation" if precedence == :override
  end
end
```

There will likely be some missed attribute changes and some bugs that need fixing (hint: PRs accepted), there could be
added command line options to print out all attribute changes or filter them (hint: PRs accepted), or to add source
file and line numbers to the event (hint: PRs accepted).

### Automatic connection to Chef Automate's Data Collector with supported Chef Server

Chef Client will automatically attempt to connect to the Chef Server
authenticated data collector proxy. If you have a supported version of
Chef Server and have enabled this feature on the Chef Server, Chef
Client run data will automatically be forwarded to Automate without
additional Chef Client configuration. If you do not have Automate or the
feature is disabled on the Chef Server, Chef Client will detect this and
disable data collection.

Note that Chef Server 12.11.0+ (not yet released as of the time this was
written) is required for this feature.

### RFC018 Partially Implemented: Specify `--field-separator` for attribute filtering

If you have periods (`.`) in your Chef Node attribute keys, you can now pass
the `--field-separator` (or `-S`) flag along with your `--attribute` (or `-a`)
flag to specify a custom nesting character other than `.`.

In a situation where the *webapp* node has the following node data:
```json
{
  "foo.bar": "baz",
  "alpha": {
    "beta": "omega"
  }
}
```

Running `knife node show` with the default field separator (`.`) won't show
us the data we're expecting for some attributes:

```shell
$ knife node show webapp -a foo.bar
webapp:
  foo.bar:

$ knife node show webapp -a alpha.beta
webapp:
  alpha.beta: omega
```

However, by specifying a field separator other than `.` we're now able to show
the data.

```shell
$ knife node show webapp -S: -a foo.bar
webapp:
  foo.bar: baz

$ knife node show webapp -S: -a alpha:beta
webapp:
  alpha:beta: omega
```

### Package locking for Apt, Yum, and Zypper

To allow for more fine grained control of package installation the `apt_package`,
`yum_package`, and `zypper_package` resources now support the `:lock` and `:unlock` actions.

```ruby
package "httpd" do
  action :lock
end

package "httpd" do
  action :unlock
end
```

### `powershell_package` resource

* Added powershell_package resource and provider which supports installation of packages through Powershell Package Manager

  ```ruby
  powershell_package 'xCertificate' do
    action :install
    version "1.1.0.0"
  end

  powershell_package 'Install Multiple Packages' do
    action :install
    package_name ['xCertificate','xNetworking']
    version ["2.0.0.0","2.12.0.0"]
  end

  powershell_package 'Install Multiple Packages' do
    action :install
    package_name ['xCertificate','xNetworking']
    version [nil,"2.12.0.0"]
  end

  powershell_package 'Install Multiple Packages' do
    action :install
    package_name ['xCertificate','xNetworking']
  end

  powershell_package ['xCertificate','xNetworking'] do
    action :remove
    version ["2.0.0.0","2.12.0.0"]
  end

  powershell_package 'xCertificate' do
    action :remove
  end
  ```

For using powershell_package resource, Administrative access is required and source needs to be already added in Powershell Package Manager using `Register-PackageSource` command

## Highlighted bug fixes for this release: