【问题标题】:Compile a node's catalog to JSON without a master?在没有主节点的情况下将节点的目录编译为 JSON?
【发布时间】:2016-06-01 20:58:28
【问题描述】:

我希望通过比较实际节点目录的差异来改进我组织的 Puppet 工作生命周期。我们遇到了this project,它为节点编译目录并为它们创建一个差异,但它似乎需要一个在线大师。

我需要能够做这个工具所做的事情,尽管没有主人 - 我只想编译一个确定的 JSON 或 YAML blob,它描述了 Puppet 为给定节点管理的所有资源和给定一组事实。

有没有办法让我在没有在线大师的情况下做到这一点?

【问题讨论】:

  • 您能接受我下面的回答吗?

标签: puppet puppet-3


【解决方案1】:

如果您设置了 Rspec-puppet,有一个简单的方法可以做到这一点。只需在其中一个 it 块中添加 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 的博客文章中有更多信息。

如果你不能使用 Rspec-puppet 来做(推荐),看看我写的另一篇博文,Compiling a puppet catalog – on a laptop

【讨论】:

  • 这在rspec-puppet 的文档中吗?这是我第一次看到这个技巧。还有catalog-diff:里皮纳尔就是那个人。当与puppet-catalog-test 和以上内容结合使用时,该工具具有有趣的含义。我想我可能需要沿着这些思路探索一些东西。
  • 我认为它没有记录在案,除了在代码和我的帖子中。我用pry弄明白了。
【解决方案2】:

我找了很久。 最后,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多