仅在内容更改时如何应用资源

时间:2019-06-30 09:11:30

标签: puppet

我正在尝试使用puppet的hosts资源类型维护非标准宿主位置。由于它是非标准主机文件,因此其内容不会被by“预取”,因此无法执行清除条目之类的操作。 为了解决该问题,我想在puppet将任何更改应用到该文件之前删除该文件。但是,我不想在每次运行puppet时都删除该文件,而仅在需要更改某些内容时才删除。只有在要更改任何内容时,才有办法为资源应用配置吗?

现在,我通过hiera定义主机,并使用create_resources函数生​​成所需的主机资源。

create_resources(host,$host_entries)

为确保没有其他条目,我最简单的想法是在应用主机配置之前确保文件不存在:

file { '/nonstandard/hosts':
  ensure => absent,
}

这样一来,即使没有任何更改,主机也将始终被删除。在99%的情况下都会如此。 因此,只有在create_resources(host,$host_entries)的情况下,我必须删除哪些选项才能真正带来新的东西。 也许有另一种更简单的方法?

1 个答案:

答案 0 :(得分:1)

  

只有在要更改任何内容时,才有办法为资源应用配置吗?

不是一般意义上的。您可以做的是编写一个自定义事实,提供由您的自定义主机文件定义的主机的列表(仅需要主机名),然后根据该事实的值和您的层次结构数据生成Host资源以确保没有您没有定义的那些主机。但是,这确实假定您可以从Hiera数据中了解文件中应列出的所有主机。