Puppet 如何仅在内容发生变化时应用资源

Puppet 如何仅在内容发生变化时应用资源,puppet,Puppet,我试图使用puppet的hosts资源类型维护一个非标准的hosts位置。由于它是非标准的主机文件,其内容不会被puppet“预取”,因此无法执行清除条目之类的操作。 为了解决这个问题,我想在puppet对该文件应用任何更改之前删除该文件。但是,我不希望每次运行puppet时都删除该文件,而是仅在需要更改某些内容时才删除。是否有一种方法仅在需要更改任何内容时应用资源的配置 现在,我通过hiera定义主机,并使用create_resources函数生成所需的主机资源 create_resource

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

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

create_resources(host,$host_entries)
为了确保没有任何其他条目,我最简单的想法是在应用主机配置之前确保文件不存在:

file { '/nonstandard/hosts':
  ensure => absent,
}
这样,即使没有什么可更改的,主机也将始终被删除。在99%的情况下都是这样。 因此,只有在
create\u resources(host,$host\u entries)
的情况下,我才能删除文件,这将带来一些新的东西。 也许有一种不同的更简单的方法

是否有一种方法仅在需要更改任何内容时应用资源的配置


不是一般意义上的。相反,您可以编写一个自定义事实,提供由自定义主机文件定义的主机列表(只需要主机名),并根据该事实的值和hiera数据生成
Host
资源,以确保不存在您没有定义的主机。但是,这确实假设您从Hiera数据中知道文件中应该列出的所有主机。

您基本上是在建议显式生成带有“Sure=>缺席”属性/值的
Host
资源吗?您能否给出一个小示例来说明如何读取自定义主机条目,以及如何使用
create\u resources
函数进行示例?