## Improved Knife Performance We've optimized knife to provide a huge performance increase. Knife commands are now more than 3x faster on Windows and more than 4.5x faster on macOS. ## Chef Workstation App Improvements The Chef Workstation App now runs at boot and launches after installing Chef Workstation. We've also added a new preferences dialog on macOS that allows you to set Chef Workstation preferences without using the config file. ## Updated Components ### Chef Infra Client 15.8.23 Chef Infra Client has been updated to 15.8.23 with updated resources, a new notify_group feature, and dozens of new helpers to make writing cookbooks easier than ever. Check the complete release notes for details on [docs.chef.io](https://docs.chef.io/release_notes.html#what-s-new-in-15-8) ### Chef InSpec 4.18.85 Chef InSpec has been updated from 4.18.51 to 4.18.85. This release includes a large number of bug fixes in addition to some great resource enhancements: * The service resource features new support for yocto-based linux distributions. Thank you to [@michaellihs](https://github.com/michaellihs) for this addition! * The package resource now includes support for FreeBSD. Thank you to [@fzipi](https://github.com/fzipi) for this work! * We standardized the platform for the etc_hosts, virtualization, ini, and xml resources. * The oracledb_session resource works again due to a missing quote fix. * The groups resource on macOS no longer reports duplicates anymore. command.exist? now conforms to POSIX standards. Thanks to [@PiQuer](https://github.com/PiQuer)! * We changed the postfix_conf resource's supported platform to the broader unix. Thank you to [@fzipi](https://github.com/fzipi) for this fix! ### Cookstyle 5.21.9 We updated Cookstyle from 5.20.0 to 5.21.9. This release adds 4 new Chef Infra cops and improves many existing cops: ##### ChefStyle/UnnecessaryOSCheck The `ChefStyle/UnnecessaryOSCheck` cop checks cookbooks that use `node['os']` to check the operating system of a node, when they could instead use the `platform_family?()` helper. All values of `os` from Ohai match one-to-one with `platform_family` values, except for `linux` which has no single equivalent `plaform_family`. ##### ChefModernize/SimplifyAptPpaSetup The `ChefModernize/SimplifyAptPpaSetup` cop detects `apt_repository` resources that setup Ubuntu PPAs by using their full URL. For example, `http://ppa.launchpad.net/webupd8team/atom/ubuntu` can be simplified to just `ppa:webupd8team/atom`. ##### ChefRedundantCode/StringPropertyWithNilDefault The `ChefRedundantCode/StringPropertyWithNilDefault` cop detects String type resource properties that set their default value to `nil`. All String type properties default to `nil`, so this does not need to be set. ##### ChefRedundantCode/PropertySplatRegex The `ChefRedundantCode/PropertySplatRegex` cop detects String type resource properties that validate their input with a regex of `/.*/`. This regex will match on any String value and is not necessary. ##### Other Cookstyle fixes and changes - `ChefDeprecations/IncludingYumDNFCompatRecipe` will now remove any inline conditionals around the `include_recipe` statement during autocorrection so that it does not leave behind invalid Ruby. - `ChefDeprecations/WindowsTaskChangeAction` will no longer fail when the action value is not a String type value. - `ChefSharing/InvalidLicenseString` will not autocorrect `apache v2` to `Apache-2.0`. - `Layout/EndAlignment` and `Layout/DefEndAlignment` now have autocorrection enabled to eliminate the need for manually fixing indentation in cookbooks. - `ChefStyle/UsePlatformHelpers` now detects and autocorrects `node['platform'].eql?()` usage. - `Style/ModuleFunction` cop has been disabled because this caused library helpers to fail to load. - All metadata cops now properly autocorrect legacy metadata that included HEREDOCs. - The `TargetRubyVersion` is now set to 2.3 to match the version of Ruby that shipped in Chef Infra Client 12. This config value is used to enable/disable cops and autocorrection that may break Ruby code in these older Chef Infra Client releases. If you are on a later release of Chef Infra Client, you can set this value to Ruby 2.6 to enable additional cops and autocorrection. ### Fauxhai 7.6 Fauxhai has been updated to 7.6 with FreeBSD 12.1 data for use in ChefSpec. Thanks to [@nhuff](https://github.com/nhuff)! ### kitchen-vcenter 2.6.4 kitchen-vcenter has been updated to 2.6.2. This update fixes multiple bugs from spinning up nodes in Test Kitchen. Thanks [@leotaglia](https://github.com/leotaglia/) and [@cattywampus](https://github.com/cattywampus/) for these fixes. ### knife-ec2 1.0.31 knife-ec2 has been updated to 1.0.31 with a fix for SSH connection failures that occurred if the instance has no public DNS name. ### chef-apply 4.1.5 chef-apply has been updated to 4.1.5 to add the missing CHEFVAL001 error message. ### ChefSpec 9.1 ChefSpec has been updated to 9.1 with a new matcher `include_any_recipe` that allows you to write specs to ensure that cookbooks aren't including recipes. Thanks [@jasonwbarnett](https://github.com/jasonwbarnett/). This release also fixes a bug mocking out the `Chef::Provider` class when a cookbook uses Poise's `resource_provider_mixin`. Thanks [@Annih](https://github.com/Annih/) for this fix. ## Platform Support Chef Workstation packages are now validated on Debian 10.