Tidy 不能使用带有 recurse 0、false 或 undef 的匹配项

Tidy can’t use matches with recurse 0, false, or undef

我有以下 Puppet 资源。

tidy {
    'beat_lock':
      age  => '8h',
      path    => '/var/lib/beat/',
      alias   => 'beat_lock',
      matches => 'run.lock',
      type => 'mtime'
  }

我收到一条错误消息:

Error: Failed to apply catalog: Parameter matches failed on Tidy[filebeat_lock]: Tidy can't use matches with recurse 0, false, or undef 

我要清理的实体是文件而不是目录。那么,为什么会出现错误?

The entity I want to cleanup is a file not a directory. So, why is the error showing up?

您告诉 Puppet 您要清理的实体是目录 /var/lib/beat。这就是 path 参数指定的内容(如果您指定它),或者如果您没有明确指定 path 参数则资源标题指定的内容。同时,您还没有为 recurse 参数提供值,因此资源默认为 non-recursive,就好像您指定了 recurse => false。在这种情况下使用 matches 没有任何意义,因为您已经准确指定了要管理的文件。

有多种拼写方式,但表达您实际想要的内容的最简单方式是:

tidy { '/var/lib/beat/run.lock':
  age  => '8h',
  type => 'mtime'
}

如果您希望能够在别处将此资源称为 Tidy['beat_lock'],那么您可以改为

tidy { 'beat_lock':
  path => '/var/lib/beat/run.lock',
  age  => '8h',
  type => 'mtime'
}

不过,我认为没有太多理由引入别名,而且您当然不需要与资源标题相同的别名。我没有在我自己的清单集中的任何地方声明任何别名,我不建议使用它们。