Add class to set noop on various puppet resources

This patch adds a new tripleo::noop class that can be
used to help switch all resources of a given type
to noop mode. The class does this via Puppet resource
collectors to enable the noop metaparam on all resources
of the specified type.

When a resource is in noop mode no action
will get taken (however puppet stdout will log information
about what would happen if noop were removed).

The motivation for this patch is to be able to do something
like this and run puppet to configure select resources
(like only config files):

 class {'tripleo::noop':
   file => false
 }

It is important to note that when tripleo::noop is used all common
resources default to noop mode.

This could be used alongside docker containers to provide
a mechanism to pre-configure all related config files for
a set of docker containers ahead of time.

Change-Id: I67f9dbbf33a2d6bcee5005ae0b6b1aa7091039ad
This commit is contained in:
Dan Prince 2015-07-03 17:01:07 -04:00
parent d8b609878f
commit e260543f90
1 changed files with 68 additions and 0 deletions

68
manifests/noop.pp Normal file
View File

@ -0,0 +1,68 @@
# Copyright 2015 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# == Class: tripleo::noop
#
# Enable noop mode for various Puppet resource types via collectors.
#
# === Parameters:
# [*package*]
# Whether Package resources should be noop.
# Defaults to true
#
# [*file*]
# Whether File resources should be noop.
# Defaults to true
#
# [*service*]
# Whether Service resources should be noop.
# Defaults to true
#
# [*exec*]
# Whether Exec resources should be noop.
# Defaults to true
#
# [*user*]
# Whether User resources should be noop.
# Defaults to true
#
# [*group*]
# Whether Group resources should be noop.
# Defaults to true
#
# [*cron*]
# Whether Cron resources should be noop.
# Defaults to true
#
#
class tripleo::noop (
$package = true,
$file = true,
$service = true,
$exec = true,
$user = true,
$group = true,
$cron = true,
) {
Package <| |> { noop => $package}
File <| |> { noop => $file}
Service <| |> { noop => $service}
Exec <| |> { noop => $exec}
User <| |> { noop => $user}
Group <| |> { noop => $group}
Cron <| |> { noop => $cron}
}