【问题标题】:How to get list of applied resources如何获取应用资源列表
【发布时间】:2021-10-15 06:19:56
【问题描述】:

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

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

自定义资源

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,但似乎我无法获得所有资源的数组:我仍然需要提供一些名称。

【问题讨论】:

    标签: puppet


    【解决方案1】:

    原来you can use purge + recursefile 资源定义中通过 puppet 文件清除 所有非托管。所以解决方案很简单:

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

    【讨论】:

      猜你喜欢
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-23
      相关资源
      最近更新 更多