puppet custom type and provider