到目前为止,我用我所体验过的傀儡进行编码,获得了很多乐趣,到目前为止,它看起来可以完成我需要它做的大部分事情。
我在文档中没有找到的一件事(经过一番搜索)是如何(如果可能的话)预先构建配置文件以在服务器上使用。例如:
我使用 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 %>
)
...