来自.pp文件的Puppet自定义事实?

时间:2018-01-11 22:41:50

标签: puppet

我知道如何使用.rb文件正常创建自定义事实。

但我对时间表有疑问:

> Puppet agent checks-in
> Custom facts are created
> .pp files start to run
> in .pp file I update settings
> TODO based on these new settings update custom fact

我们希望在.pp文件运行后,木偶事实代表系统。

根据我的经验,我可以从.pp访问节点的事实,这使我认为在.pp应用之前收集了事实。

在结束登记过程之前,facter是否会更新事实?

是否可以从.pp文件设置事实?

注意:我将从puppet agent而不是puppet服务器访问这些事实值。

3 个答案:

答案 0 :(得分:2)

  

我们希望puppet事实代表.pp文件之后的系统   运行

他们将 - 在您的目录应用后下次运行Facter。

  

根据我的经验,我可以从.pp中获取节点的事实   我认为事实是在应用.pp之前收集的。

在明确评估开始之前收集事实。这样它们在目录构建过程中就可以使用。

  

在结束签到过程之前,facter会更新事实吗?   好?

  • 首先在目标节点上更新事实实现。
  • 然后运行Facter以收集事实值,并将结果作为目录请求的一部分提交给目录构建器。
  • 目录构建器 - 通常在完全不同的计算机上运行 - 然后根据清单(.pp文件),提交的事实值和记录的站点数据构建目标机器资源的目录。事实可在目录制作过程中使用。
  • 生成的目录描述了机器的目标状态;它是运行的最后阶段的输入,其中目标机器根据需要进行更新以匹配目录。目录可能包含从事实中提取的数据,但它不会按名称引用事实。
  

是否可以从.pp文件设置事实?

您可以在清单文件中设置变量,包括在顶级范围内。然后可以访问这些内容以通知和指导目录构建过程,并且可以将它们合并到资源中,例如形成文件的名称或内容的一部分。它们不能作为变量作为变量在目录构建之外访问。

您还可以通过提供外部事实实现的清单文件来声明资源。通过这种方式,您可以提供将由 future Facter运行报告的事实的自定义,但您无法添加或更改通知当前目录运行的事实。

  

注意:我将从木偶代理而不是木偶中访问这些事实值   服务器

您可以在安装了Puppet的任何计算机上直接运行Facter,以获取部分或全部该计算机的当前事实,但这超出了目录构建的范围。通知目录构建过程的事实都是在目录请求之前收集的。

答案 1 :(得分:0)

我找到了一个似乎是从puppet文件手动执行facter的解决方案:

exec { 'update puppet facts':
  path    => ['/bin','/usr/bin'],
  command => 'facter',
}

基于Learning Puppet 4: A Guide to Configuration Management and Automation的摘录。

答案 2 :(得分:0)

由于 Puppet 5.5.18,您可以在 resubmit_facts=true 中设置 puppet.conf,这将使代理在运行后也更新 PuppetDB 中的事实。

您可以在 PUP-5934 中阅读更多相关信息。