The release of Progress Chef 19 has brought a number of great changes to the DevOps landscape. While we've posted previously about some of the business impact, in this blog post we'll talk about the technical aspects of the changes between Chef Infra Client 18 and Chef Infra Client 19.
All downloads of Chef Infra Client 19 official distributions require authentication using a Chef License Key. This applies to mixlib-install, the download API, knife bootstrap, kitchen converge and the web portal. For details, see this blog post.
The software package name used in the download system for Chef Infra Client 19 is chef-ice (Infra Client Enterprise). For 18, it was chef.
The pm parameter was added to the download API, which indicates which package format your OS requires. See the download API docs.
Internally, the packages are now based on Chef Habitat rather than Chef Omnibus. You can still install packages native for your operating system (like RPMs, MSIs or DEBs) without having to install hab as a separate, prerequisite step or understand how to use hab.
Previously, our OmniBus setup required full build pipelines for every distribution, each version of distribution and each architecture. This resulted in a proliferation of packages and pipelines (a total of over 50), helping preventing us from keeping them up to date. Habitat allows us to have one build for Windows, one for Linux and one for Mac per architecture, reducing the Hab packages and pipelines to a maximum of 6. These Habitat packages are then repackaged into OS-native packages (RPM, DEB, MSI, DMG) without rebuilding, because the Habitat system is not reliant on distribution-specific features.
Chef Infra Client 18 uses the traditional Omnibus-based installer, which places all binaries, embedded Ruby, and dependencies under a single directory (/opt/chef on Linux, c:\opscode\chef on Windows). In contrast, Chef Infra Client 19 adopts Habitat-based packaging, resulting in a new, versioned installation layout under /hab/pkgs/chef/chef-infra-client.
Another important change between Chef Infra Client 18 and 19 is how executables are made available on the system. In Chef Infra Client 18, executables such as chef-client are installed directly into a fixed, well-known directory (/opt/chef/bin on Linux or C:\opscode\chef\bin on Windows) and are typically added to the system PATH by the installer.
Chef Infra Client 19, however, is distributed as a Chef Habitat package, where binaries reside inside the package directory under /hab/pkgs/chef/chef-infra-client/<version>/bin. To expose these executables system-wide, Habitat relies on binlinking, a mechanism that creates scripts in /hab/bin/. These scripts execute the version specific bins found in the /hab/pkgs/chef/chef-infra-client/bin directory with the appropriate habitat env vars. These scripts are then symlinked to the appropriate folder in your Linux or MacOS $PATH (usually /usr/bin) or on Windows c:\hab\bin is added to system PATH variable.
As a result, which executable is invoked can depend on which Habitat package version is binlinked, introducing a more flexible but explicitly managed execution model compared to earlier versions.
You can use this feature to select which version is used when you have side-by-side installs of recent (hab-based) versions of Chef software. Read about the hab pkg binlink command here to learn how.
Chef Infra Client now requires 600 MB of space on Linux and 2.1 GB on Windows.
To support side-by-side installations and upgrade-in-place, Chef recommends using the migrate-ice utility, introduced along with Chef Infra Client 19. For details, please see the migration tool documentation.
AIX and Solaris are now supported via Target mode, allowing remote configuration.
MacOS on the Intel platform is not supported on Chef Infra Client 19.
The ruby language platform was upgraded from 3.1.x to 3.4.8. Key things to look for in your cookbooks include:
Updated Cookstyle and Rubocop support. Look for “linting” errors that guide users to modernize their syntax.
Some gems moved from the standard library to stand-alone. This means you’ll get warnings about what to expect in upcoming versions or that you’ll now need to tweak your code to explicitly add/require a gem that was previously already available. Users should NOT get a failure here, just warnings.
We dropped support for appbundler.
Agentless Mode lets you execute Chef Infra Client runs on nodes that don’t have the Infra Client installed on them and can work against nodes that only have SSH access. Over 90 resources support Agentless mode. For more details, see our recent blog post about how to get started with Agentless.
oci? helper now available, which allows cookbooks to detect when running on Oracle Cloud.
Including manifest caching, cookbook dependency resolution, cookbook file access and more. See release notes.
The custom gem path is now dependent on the Chef version installed.
hab pkg exec chef/chef-infra-client ruby -e "puts ENV['GEM_PATH']"
/hab/pkgs/chef/chef-infra-client/19.1.164/20260204222654/vendor
This is planned to be addressed in a future version, to be installed to version-stable location.
You may run ruby scripts with this path using:
hab pkg exec chef/chef-infra-client ruby script.rb chef_gem resource unchanged
The chef_gem resource continues to work as expected, though its paths have changed.
Custom Gem Installation Method Changed
The Chef 19.1 method for installing custom gems is to run the following command:
hab pkg exec chef/chef-infra-client gem install <gem_name>
For example:
hab pkg exec chef/chef-infra-client gem install rot13
Fetching rot13-0.1.3.gem Successfully installed rot13-0.1.3 1 gem installed
hab pkg exec chef/chef-infra-client gem info rot13
*** LOCAL GEMS ***
Installed at: /hab/pkgs/core/ruby3_4/3.4.8/20260127203922/lib/ruby/gems/3.4.0
hab pkg exec chef/chef-infra-client ruby -r rot13 -e "puts Rot13.rotate('hello')"
uryyb
Workstation 25 will not support any version of Chef Infra Client later than 18.x. Moving forward, Workstation 26+ will support future versions of Chef Infra Client, including the needed changes to Test Kitchen and Knife to support Infra Client’s new download and installation processes.
Chef Infra Client 19 will detect if Workstation < 26 is present and will refuse to install. Support for CIC19/WS25 co-installs is pending.
As part of the modifications to support Chef Infra Client 19, Chef has created Chef Test Kitchen Enterprise, based on the community Test Kitchen project. CTKE adds support for hab-based installs and authenticated downloads. Any core Kitchen bugfixes or features will be contributed back upstream.
Because knife bootstrap performs an authenticated download of Chef Infra Client 19, a license key will be required to obtain the official distribution. You may also use your own distribution point without authentication.
Because kitchen converge performs an authenticated download of Chef Infra Client 19, a license key will be required to obtain the official distribution. You may also use your own distribution point without authentication. Details are pending the release of Chef Workstation 26.
These are limitations the Progress Chef team intends to address in upcoming releases. All schedules subject to change.
Linux ARM Support
ARM support for Linux is currently scheduled for Chef Infra Client 19.2.
MacOS ARM Support
ARM support is currently scheduled for Infra Client 19.3. MacOS Intel Support has been discontinued.
SELinux Support
Currently scheduled for 19.2.
Support for Co-Installs with Workstation 25 and Chef Infra Client 19
Not committed but in planning.
Support for Co-Installs with Workstation 26 and Chef Infra Client 17 or 18
Supported today using hab pkg exec, smoother support planned.
FIPS Support
Currently scheduled for 19.2 (NOW AVAILABLE)
Easier Custom Gem Installs
Tentatively scheduled for 19.4
Call to Action
Install Chef Infra Client 19 today! Get started at https://docs.chef.io/client/19.1/install/