如何将3个不同的文件从puppet master复制并安装到3个不同的代理位置
我创建了一个模块,将一个文件从主机复制并安装到代理,它与下面的代码配合得很好:但现在我尝试在不同的目录中复制3个不同的文件,并将每个文件安装在不同的节点集上。 (类似于一系列称为系统的IP或dns名称…) 例如:文件A需要安装在系统节点中的所有代理上。 文件B需要安装在B系统节点中的所有代理上 文件C需要安装在C系统节点中的所有代理上 [或者您可以认为:file1需要安装在所有silver系统上。]对于file2和file3,依此类推如何将3个不同的文件从puppet master复制并安装到3个不同的代理位置,puppet,puppet-enterprise,Puppet,Puppet Enterprise,我创建了一个模块,将一个文件从主机复制并安装到代理,它与下面的代码配合得很好:但现在我尝试在不同的目录中复制3个不同的文件,并将每个文件安装在不同的节点集上。 (类似于一系列称为系统的IP或dns名称…) 例如:文件A需要安装在系统节点中的所有代理上。 文件B需要安装在B系统节点中的所有代理上 文件C需要安装在C系统节点中的所有代理上 [或者您可以认为:file1需要安装在所有silver系统上。]对于file2和file3,依此类推 class profile::ma { file {
class profile::ma {
file { '/tmp/filename.sh':
ensure => 'present',
replace => 'no',
source => 'puppet:///module/files/filename.sh',
mode => '0755',
notify => Exec['install'],
}
exec { 'install':
command => '/tmp/filename.sh -i',
onlyif => '/usr/bin/test ! -e /etc/filetocheck',
}
}
假设您指的是Puppet环境,请测试“A”、“B”和“C”的
$::environment
变量,然后根据其所在的环境为源文件设置一个新变量,为目标路径设置一个新变量
使用:
您还可以使用仅测试一个变量:
case $::environment {
'A': {
$source_file = 'filename_A.sh'
$target_file = '/tmp/filename_A.sh'
}
'B': {
$source_file = 'filename_B.sh'
$target_file = '/tmp/filename_B.sh'
}
}
然后使用这些变量而不是硬编码值:
file { $target_file:
ensure => 'present',
replace => 'no',
source => "puppet:///module/files/${source_file}",
mode => '0755',
notify => Exec['install'],
}
谢谢你的回复-但我应该说的不是环境,而是节点集。。。就像我需要在所有silver系统/节点上安装file1一样。可能我可以使用dns查找,但什么是正确的代码什么是“银色系统”?如果没有关于如何对节点进行分类的更多信息,则无法给出有用的答案。在任何情况下,无论如何对系统进行分类,此答案都应该适用-只需将
$environment
变量名称更改为您使用的任何名称,例如$color
。
file { $target_file:
ensure => 'present',
replace => 'no',
source => "puppet:///module/files/${source_file}",
mode => '0755',
notify => Exec['install'],
}