Puppet——有没有办法从 Puppet Master(主机)复制客户端上软件的预定义自定义配置文件?

Puppet——有没有办法从 Puppet Master(主机)复制客户端上软件的预定义自定义配置文件?

到目前为止,我用我所体验过的傀儡进行编码,获得了很多乐趣,到目前为止,它看起来可以完成我需要它做的大部分事情。

我在文档中没有找到的一件事(经过一番搜索)是如何(如果可能的话)预先构建配置文件以在服务器上使用。例如:

我使用 puppet 安装 httpd。现在客户端上有 apache。现在 httpd.conf 需要一些自定义和特定设置。我有需要在 puppet master 上使用的 httpd.conf。如何将其从 puppet master 传输到客户端?

答案1

我进入了 puppet 的 IRC 频道,发现可以使用源属性来完成此操作。

file { "/etc/firewall.sh":
    owner => root,
    group => root,
    mode => 550,
    source => "puppet:///files/iptables.sh"
}

文件的位置在 /etc/puppet/fileserver.conf 中设置 - 那里的配置很简单。

可以使用内容标签(而不是源)将文字字符串放入文件中。

答案2

如果我是你,我会使用格式puppet:///modules/<module name>/iptables.sh。这样一切都会局限于模块,并且你不需要 fileserver.conf。这puppet:///modules/*是免费的。

答案3

使用静态文件是一个好的开始。使用模板甚至更好,从长远来看也更灵活。

您可以阅读Puppet 模板文档

例子:

$hostname = 'your.host.com'
$portnum  = 8080

file { '/etc/lighttpd/lighttpd.conf':
   ensure => present,
  content => template('lighttpd/lighttpd.conf.erb'),
    owner => 'root',
    group => 'root',
     mode => 0644,
}

这与 .erb 模板相结合,使用变量 $hostname 和 $portnum 创建所需的配置文件。

$HTTP["host"] =~ "^<%= hostname %>" {
    proxy.server = (
        "" => (
            (
                "host" => "127.0.0.1",
                "port" => <%= portnum %>
            )
    ...

相关内容