Virtual Resources
Resources in Puppet can only be declared once per client
configuration. This can make managing resources that relate to multiple
configurations complicated. To alleviate this issue, we have the virtual
resource. When marked with a @
prefix,
a resource can be declared, but not yet applied to the client. When we
want to apply it to a particular client, it must be realized first.
I’ve declared three virtual users: bob
, alice
,
and eve
, each of which has a different
group membership. If I’d like to realize one of these users, I could use
the realize
User[
mechanism. It could be
tedious to realize each of your users in this fashion. In order to realize
virtual resources in groups, specified by their attributes, we can use
collections. The last two statements are collections; each is a collection
of users defined by their membership in a particular group. The first
collection will contain username
]alice
and
eve
and the second will contain all
three:
@user { bob: ensure => present, groups => [ "mail", "web" ], } @user { alice: ensure => present, groups => [ "db", "web" ], } @user { eve: ensure => present, groups => [ "db", "web", "mail", "admin" ], } User <| group == db |> User <| group == web |>
Get Managing Infrastructure with Puppet now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.