如何仅应用 Puppet Master 服务器中的一个文件或两个类?

Nat*_*ese 2 configuration-files puppet configuration-management

假设我有一种情况,我只需要在某些生产服务器上应用 Puppet 配置中的两个文件,而不需要触及配置的其余部分。

/opt/aservice/myfile/thekey.conf /opt/myfile/thekey.salt

我们还假设这些是由以下 Puppet 清单控制的:

#
# author: Nathan Basanese (nathan@basanese.com)
# date: 04/17/2048
#

class keyconfig ( $cluster ){
    notify {"Deploying key config. files to $fqdn":}


    file {'/opt/aservice/key/config/thekey.conf':
                ensure => present,
                mode => '0644',
                owner => 'aservice-serv',
                group => 'aservice-serv',
                source => "puppet:///modules/keyconfig/$cluster/thekey.conf",
        }
    file {'/opt/aservice/key/config/thekey.salt':
                ensure => present,
                mode => '0644',
                owner => 'aservice-serv',
                group => 'aservice-serv',
                source => "puppet:///modules/keyconfig/$cluster/thekey.salt",
        }
}
Run Code Online (Sandbox Code Playgroud)

我如何从 Puppet Master 仅将这两个文件应用到给定服务器?

也许,在puppet agent目标服务器上运行的命令中,我可以指定要使用的特定 Puppet 类吗?

我以前使用过该puppet resource命令,但我不确定在这里是否有效。

Joh*_*ger 5

每个资源都会自动标记为声明该资源的类或定义类型的完全限定名称,以及类或类型名称的每个命名空间段以及其他标记。您可以使用这些标签来过滤将在给定目录运行期间应用的资源。在您描述的特定示例中,您可以使用

puppet agent --no-daemonize --onetime --tags keyconfig
Run Code Online (Sandbox Code Playgroud)

仅应用类 keyconfig 中声明的资源(以及在 keyconfig 声明的任何其他类中递归地应用,但在本例中没有此类其他类)。

tag您还可以通过在资源声明中使用元参数来手动声明标签。这可以让您提供识别自定义资源集合的功能。说到集合,您也可以在资源收集器的选择谓词中使用标签。