我正在尝试获取特定类型的应用资源列表,以使用它们的属性值。
我有一个自定义资源(定义),它在特定目录中创建一个文件。我在代码的完全不同的地方使用它。我正试图从该目录中清除所有未在我的木偶代码中定义的东西。换句话说,我试图完全管理该目录的内容。但是,我无法获得这种类型的所有已定义资源的列表来获取我正在管理的文件。下面是一些编辑过的代码来澄清
自定义资源
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>>,
}
我尝试过使用资源收集器,但正如文档中提到的,它们只能用于修改资源属性或作为链接语句的操作数。
我也尝试使用资源引用,但似乎我无法获得所有资源的数组:我仍然需要提供一些名称。
您可以在file
资源定义中使用purge
+recurse
来清除所有非管理的通过puppet文件。所以解决方案很简单:
file { $scheduler::jobs_dir:
ensure => directory,
purge => true,
recurse => true,
}