Puppet custom types and providers