The Puppet Labs Issue Tracker has Moved:

This issue tracker is now in read-only archive mode and automatic ticket export has been disabled. Redmine users will need to create a new JIRA account to file tickets using See the following page for information on filing tickets with JIRA:

Porting Puppet and Facter to MSWin

This page is used as a whiteboard / shared note space by the developers working on porting Puppet and Facter to MS Windows.

Things You Should Not Do

  1. Use system calls
  2. Attempt to parse the output of system calls

Providers written.

Providers that need to be written.

  • Registry provider

Parts of the Standard Library You Can Rely On For MS Windows

  • win32ole
  • win32/registry
  • win32/resolv
  • Win32API

Parts of the Standard Library You Cannot Rely On For MS Windows

  • Just about everything else

Specific Problems

  • etc – Only 1 method works on MS Windows
  • pathname – Doesn’t handle UNC paths properly
  • resolv – Not to be trusted; use win32-resolv instead
  • open3 – Does not work with Ruby 1.8.x on MS Windows

How To Obtain System Information On MS Windows

  • Virtually everything you could ever want to know about the system can be most easily obtained using the WMI interface.
  • You can obtain information from WMI using the win32ole library.

How To Check For Windows

require 'rbconfig'
Config::CONFIG['host_os'] =~ /mswin|win32|msdos|cygwin|mingw/i