如何使用 Puppet 为 DNS 区域生成好的序列?

Bit*_*nce 7 domain-name-system puppet timestamp

我的传统是在修改时将所有区域序列设置为时间戳。现在 Puppet 是我的新信仰,我想在从导出的资源构建区域文件时设置串行时间戳。一个有点琐碎的例子可能如下所示:

file { "/tmp/dafile": content = inline_template("<%= Time.now.to_i %>"), }
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于内容将一直不同,这将(最终)在每个 puppet 配置轮询中引发区域文件的重建。

有什么方法可以插入时间戳而不将其包含在与先前状态进行比较的数据中?

Ken*_*ber 3

不要使用模板,如果您尝试使用序列号,问题是您每次都会继续进行更改。

我有两个想法:

  1. 创建一个适当的类型,可以通过标准 API 使用 DNS 更新来管理 DNS。然后让 BIND 自行递增序列号。
  2. 对 DNS 区域内的每个元素使用文件片段模式,并使其仅在这些元素发生更改时才更新主区域文件。您可以通过“区域刷新”执行程序将您的部分连接到最终区域(包括标题)来完成此操作。大多数文件片段解决方案之间的区别在于,您从时间戳或类似的内容生成区域序列,只有在更改部分时才会触发该区域序列,从而避免从模板中获得持续的序列号更改。

文件片段模式的一些示例如下:

http://projects.puppetlabs.com/projects/puppet/wiki/Generate_a_config_file_from_fragments

https://github.com/ripienaar/puppet-concat