我希望通过比较实际节点目录的差异来改善我们组织的Puppet工作生命周期。我们遇到this project,它编译节点的目录并为它们创建差异,但它似乎需要一个在线主数据。
我需要能够做这个工具所做的事情,虽然没有主人 - 我只是想编译一个确定性的JSON或YAML blob,它描述了Puppet为给定管理的所有资源节点并给出一组事实。
如果没有在线主人,我有办法做到这一点吗?
答案 0 :(得分:2)
我写了两篇博文,展示了两种编译JSON目录的方法,而不需要Puppet Master。
如果您已经设置了Rspec-puppet,那么第一个解决方案非常简单。只需在其中一个块中添加以下File.write
语句:
require 'spec_helper'
describe 'myclass' do
it {
File.write(
'myclass.json',
PSON.pretty_generate(catalogue)
)
#is_expected.to compile.with_all_deps
}
end
博文here。
第二种方法更复杂,您应该参考我的第二篇博文Compiling a puppet catalog – on a laptop。
最后,我还写了一篇关于Using the catalog-diff tool to diff two catalogs while refactoring的帖子,这也可能是有意义的。
答案 1 :(得分:0)
找了很久。 最后Vagrant结合Puppet给我带来了解决方案。
您唯一需要的是安装 puppet。 首先,您必须设置事实。之后,您可以编译您的目录。
FACTER_server_role='webstack' \
... \
FACTER_hostname='hostname' \
FACTER_fqdn='hostnamne.fqdn' \
puppet catalog compile hostnamne.fqdn \
--modulepath "./modules" \
--hiera_config "./hiera.yaml" \
--environmentpath ./environments/ \
--environment production
如果您想获得干净的 json 文件,请将输出通过管道传输到 sed
并将输出发送到文件。
| sed -n '1!p' > $file