Puppet types and providers development part 1: creating the type