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 1, Puppet Infrastructure, we can safely assume that Git is available...