我正在运行 Debian 7.0 (Wheezy) 服务器,并且有一个动态 DNS 设置,其中我的客户端发出 DHCP 请求,并且 DHCP 服务器使用分配给每个客户端的任何 IP 更新 DNS 区域文件。我想用 Puppet 来管理这个设置。不过,只有一个问题:我不希望每次推送清单时 Puppet 都会破坏我的 DNS 记录。无论如何,区域文件首先由 Puppet 管理并没有多大意义,因为它们通常会不断更新。然而,我想做的是在bind9
首次安装 DNS 服务 ( ) 时让 Puppet 将“骨架”区域文件推送到正确的位置。我想要这样做的原因是因为我想将所有服务器配置封装在一个地方,这样只需几个清单,我就可以克隆服务器的整个配置。
起初我想让file
区域文件的资源订阅 DNS 服务器包并设置refreshonly
为true
.唯一的问题是file
类型没有refreshonly parameter
.显然,这种方法是死胡同。
有没有“正确”的方法来做到这一点?也许和奥吉亚斯一起?
更新
我试过
augtool ls /files/etc/bind
这返回了没有什么!由于某种原因,Augeas 似乎无法解析我的区域文件。那么看来奥吉亚斯并不是答案!
答案1
解决了!在里面人偶类型参考file
,名为的资源的一个属性replace
正是我所需要的。我引用上面的链接:
代替
source
是否替换本地系统上已存在但其内容与或属性指定的内容不匹配的文件或符号链接content
。将其设置为false
允许文件资源初始化文件而不覆盖将来的更改。请注意,这仅影响内容; Puppet 仍将管理所有权和权限。默认为true
.有效值为true
(也称为yes
)、false
(也称为no
)。
我只是添加了
replace => false
到我的区域文件资源,这就成功了。
编辑
我实际上使用了false
代替,no
因为我不太确定后者是否受支持(尽管文档说是);当我尝试分配另一个类似的布尔标志时,它给了我一个语法错误yes
。所以使用时false
要注意安全。