如何从Puppet主服务器仅应用一个文件或两个类?

如何从Puppet主服务器仅应用一个文件或两个类?,puppet,configuration-files,configuration-management,Puppet,Configuration Files,Configuration Management,假设我有一个案例,我只需要在一些生产服务器上应用Puppet配置中的两个文件,而不涉及配置的其余部分 /opt/aservice/myfile/thekey.conf /opt/myfile/thekey.salt 我们还可以说这些由以下傀儡清单控制: # # author: Nathan Basanese (nathan@basanese.com) # date: 04/17/2048 # class keyconfig ( $cluster ){ notify {"Deployin

假设我有一个案例,我只需要在一些生产服务器上应用Puppet配置中的两个文件,而不涉及配置的其余部分

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

我们还可以说这些由以下傀儡清单控制:

#
# 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",
        }
}
如何从Puppet Master将这两个文件仅应用于给定的服务器

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


我以前使用过这个命令,但我不确定这是否有效

唯一的方法是让该节点只包含您想要应用的类。在您的site.pp中,您将有以下内容,其中“myhost.dns”是您的fqdn。$mycluster将被集群字符串替换

node 'myhost.dns' {
    class { 'keyconfig':
      cluster => $mycluster,
    }
}

唯一的方法是让该节点只包含您想要应用的类。在您的site.pp中,您将有以下内容,其中“myhost.dns”是您的fqdn。$mycluster将被集群字符串替换

node 'myhost.dns' {
    class { 'keyconfig':
      cluster => $mycluster,
    }
}

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

puppet agent --no-daemonize --onetime --tags keyconfig
仅应用keyconfig类中声明的资源(以及keyconfig递归声明的任何其他类,但在本例中没有此类其他类)


您还可以通过在资源声明中使用
标记
元参数手动声明标记。这可以允许您提供用于标识自定义资源集合的方法。说到集合,您也可以在资源收集器的选择谓词中使用标记。

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

puppet agent --no-daemonize --onetime --tags keyconfig
仅应用keyconfig类中声明的资源(以及keyconfig递归声明的任何其他类,但在本例中没有此类其他类)


您还可以通过在资源声明中使用
标记
元参数手动声明标记。这可以允许您提供用于标识自定义资源集合的方法。说到集合,您也可以在资源收集器的选择谓词中使用标记。

/,感谢您的快速回答,@Travis!比如说,如果我有两个类,那么我可以通过更改
puppet agent
命令来选择性地应用一个类,而不修改我的puppet Master上的任何内容吗?这是错误的。标签可以用来完成OP的目标。//,谢谢你的快速回答,@Travis!比如说,如果我有两个类,那么我可以通过更改
puppet agent
命令来选择性地应用一个类,而不修改我的puppet Master上的任何内容吗?这是错误的。标签可以用来实现OP的目标。//,哇,我不知道!我很快就要上木偶课了,原因很明显。我得看看他们是否在课程中包括这些特点。这个(老实说有点傻)问题的答案真的让我吃惊。是的,我完全是在标签上放了个屁,这对他们来说是一个完美的用例,这是一个更好的答案!//,哇,我不知道!我很快就要上木偶课了,原因很明显。我得看看他们是否在课程中包括这些特点。这个(老实说有点傻)问题的答案真的让我吃惊。是的,我完全是在标签上放了个屁,这对他们来说是一个完美的用例,这是一个更好的答案!