Creating your own providers
In the previous section, we created a new custom type called gitrepo
and told Puppet that it takes two parameters, source
and path
. However, so far, we haven't told Puppet how to actually check out the repo; in other words, how to create a specific instance of this type. That's where the provider comes in.
We saw that a type will often have several possible providers. In our example, there is only one sensible way to instantiate a Git repo, so we'll only supply one provider: git
. If you were to generalize this type—to just repo, say—it's not hard to imagine creating several different providers depending on the type of repo, for example, git
, svn
, cvs
, and so on.
How to do it...
We'll add the git
provider, and create an instance of a gitrepo
resource to check that it all works. You'll need Git installed for this to work, but if you're using the Git-based manifest management setup described in Chapter 2, Puppet Infrastructure...