如何获取申请的资源列表

How to get list of applied resources

我正在尝试获取特定类型的应用资源列表以使用它们的属性值。

我有一个在特定目录中创建文件的自定义资源(定义)。我在代码的完全不同的地方使用它。我正在尝试从该目录中清除所有未在我的人偶代码中定义的内容。换句话说,我正在尝试完全管理该目录的内容。但是我无法获取该类型的所有已定义资源的列表来获取我正在管理的文件。下面是一些经过编辑的代码来澄清

自定义资源

define scheduler::job (
...
) {
  $job_name = $title
  $jobs_dir = $scheduler::jobs_dir

  file { "${jobs_dir}/${job_name}.yaml":
    ensure  => file,
    mode    => '0640',
    content => template('scheduler/job.yaml.erb'),
    notify  => Exec[$scheduler::reload_exec],
  }
}

如何应用

scheduler::job { 'job-1': }
scheduler::job { 'job-2': }

我想做什么

file { $scheduler::jobs_dir:
  ensure  => directory,
  group   => $group,
  mode    => '0640',
  owner   => $user,
  path    => $scheduler::jobs_dir,
  purge   => true,
  recurse => true,
  force   => true,
  ignore  => <<LIST OF CREATED FILES AKA JOB_NAME>>,
}

我试过使用 resource collectors,但正如文档中所述,它们只能用于修改资源属性或用作链接语句的操作数。

我也尝试过使用resource references,但似乎无法获得所有资源的数组:我仍然需要提供一些名称。

事实证明 you can use purge + recursefile 资源定义中清除 所有非托管木偶文件。所以解决方案非常简单:

file { $scheduler::jobs_dir:
  ensure  => directory,
  purge   => true,
  recurse => true,
}