Use cinc-client instead?

You can use the community build package version of Cinc-Client on remote nodes if you find it difficult to accept the license when you run Chef Infra Client for the first time or every time you upgrade.

This information is as of October 2019, and the Cinc package project has just begun. The distribution method may be different from the current situation.

Cinc-Client is a package that just changed the entry point and configuration directory from chef-client to cinc-client and from /etc/chef to /etc/cinc.
Therefore, if you connect the following two places with symlinks, you can handle them exactly from knife-zero.

When using cinc-client from bootstrap

Bootstrap has a convenient option by itself, so you can install cinc just by using them.

The packages are distributed at

There is no installer that automatically detects the distribution like the original Chef Infra Client, so you can specify the package yourself.

The following is a sample to bootstrap an Ubuntu 16.04 node.

$ knife zero bootstrap ${YOUR_NODE_IP} \
  --sudo \
  -N my-ubuntu16 \
  --bootstrap-preinstall-command "sudo ln -sf /usr/bin/cinc-client /usr/bin/chef-client && sudo mkdir -p /etc/cinc && sudo ln -sf /etc/cinc /etc/chef" \
  --bootstrap-install-command "wget && sudo dpkg -i cinc_15.3.14-1_amd64.deb && rm -f cinc_15.3.14-1_amd64.deb"

We will able to apply without problems.

$ knife node show my-ubuntu16
Node Name:   my-ubuntu16
Environment: _default
FQDN:        ubuntu-xenial
IP:          xx.xx.xx.xx
Run List:    
Platform:    ubuntu 16.04

To make this bootstrap configuration permanent in the configuration file (knife.rb or config.rb), you can write as follows.

knife[:bootstrap_preinstall_command] = 'sudo ln -sf /usr/bin/cinc-client /usr/bin/chef-client && sudo mkdir -p /etc/cinc && sudo ln -sf /etc/cinc /etc/chef'
CINC_VERSON = ENV['CINC_VERSON'] || '15.3.14-1'
knife[:bootstrap_install_command] = "wget{CINC_VERSON}_amd64.deb && sudo dpkg -i cinc_#{CINC_VERSON}_amd64.deb"

Change the version of cinc-client

You can install any package version with knife ssh.

$ knife ssh "name:my-ubuntu16" "wget && sudo dpkg -i cinc_15.3.14-1_amd64.deb && rm -f cinc_15.3.14-1_amd64.deb"

Replace the node where Chef Infra Client is already running with Cinc

First, remove Chef Infra Client with knife ssh.

$ knife ssh "name:my-ubuntu16" "sudo dpkg -r chef"
(Reading database ... 72883 files and directories currently installed.) Removing chef (15.3.14-1) ...

/etc/chef remains, so let’s reuse it. The direction to create Symlink is slightly different from bootstrap.

$ knife ssh "name:my-ubuntu16" "sudo ln -sf /usr/bin/cinc-client /usr/bin/chef-client && sudo ln -sf /etc/chef /etc/cinc"

Finally, install an arbitrary package.

$ knife ssh "name:my-ubuntu16" "wget && sudo dpkg -i cinc_15.3.14-1_amd64.deb && rm -f cinc_15.3.14-1_amd64.deb"

... Thank you for installing cinc, the community build based on Chef!

Run knife zero converge to check the operation.

$ knife zero converge "name:my-ubuntu16" Starting Cinc Client, version 15.3.14

...  Cinc Client finished, x/xxx resources updated in xx seconds
Fork me on GitHub