Friday, November 20, 2015

Pre-release Announcement : Native 64-bit Windows Chef Client [feedly]

Pre-release Announcement : Native 64-bit Windows Chef Client
https://www.chef.io/blog/2015/11/19/pre-release-announcement-native-64-bit-windows-chef-client/

-- via my feedly.com reader

Ohai Chefs!

I'm happy to share some exciting news for our Windows users – we now have a native 64-bit Chef Client available for you to download and try out here.

This version of Chef Client includes a 64-bit version of Ruby, and addresses one of the key pain points that Windows users can encounter when running a 32-bit process on a 64-bit version of Windows : namely, having to deal with the file and registry redirection that Windows does under the covers, that can sometimes cause unexpected results or script failures.

(See this link for more information on Windows redirection behavior).

To illustrate the pitfalls with redirection in a bit more detail, let's look at an example of a simple Chef recipe that creates a file in a directory under the Windows System32 folder. The code below uses an environment variable to construct the path of the folder (test_dir) to write to. Then it uses Chef's built-in directory and file resources to define the desired state.

process_type = ENV['PROCESSOR_ARCHITECTURE'] == 'AMD64' ? '64-bit' : '32-bit'  system32_dir = ::File.join(ENV['SYSTEMROOT'], 'system32')  test_dir = ::File.join(system32_dir, 'cheftest')  test_file = ::File.join(test_dir, 'chef_architecture_file.txt')    directory test_dir do      action :create  end    file test_file do      content "Chef made me, I come from a #{process_type} process."  end  

If the code above runs in a 32-bit process on a 64-bit platform, Windows redirection will kick in, and the file and directory will actually get created in the SysWOW64 folder instead, which is not the desired outcome. However, when this recipe is run with a native 64-bit client, redirection will not come into play, and things will work as expected.

One other advantage of having the 64-bit package is that now we can also mark the MSI as 64-bit. This adds more control and granularity with Windows technologies like Group Policy, WMI, etc that can check the MSI flag and take advantage of it as needed.

Finally, the installer has also been re-architected for performance, with a noticeably faster install experience.

Note that this is pre-release software, and while we are excited to get this out early to share with you, there are a couple of things to call out:

  • The MSI size is larger than the production chef-client – it weighs in at around 170MB. This is something we are working on and expect to resolve before a final release.
  • This is not intended for production deployment – please only use in a non-mission-critical environment.
  • Please report any issues to us on github

Thanks, and enjoy!