You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Puppet如何获取指定类型已应用的自定义资源列表

解决方法

方案1:使用官方stdlib模块的get_resources函数(推荐)

该方案无需修改现有scheduler::job的调用逻辑,适配代码多处分散调用的场景,依赖puppetlabs官方标准库stdlib(大部分Puppet环境默认预装,版本要求≥6.0.0)。
实现代码如下:

# 提取当前编译目录中所有scheduler::job类型的资源实例
$all_scheduler_jobs = get_resources('scheduler::job')
# 转换为对应yaml文件名数组
$ignore_file_list = $all_scheduler_jobs.keys.map |$job_title| {
  "${job_title}.yaml"
}

file { $scheduler::jobs_dir:
  ensure  => directory,
  group   => $group,
  mode    => '0640',
  owner   => $user,
  path    => $scheduler::jobs_dir,
  purge   => true,
  recurse => true,
  force   => true,
  ignore  => $ignore_file_list,
}

方案2:无第三方依赖的收敛管理方案

如果环境无法安装stdlib模块,可以将所有作业名称统一收敛到数组中管理,批量创建资源的同时直接生成忽略列表:

# 统一维护所有作业名称,新增作业只需在此处添加
$job_name_list = [
  'job-1',
  'job-2',
  # 其他作业名称
]

# 批量创建所有scheduler::job资源
scheduler::job { $job_name_list: }

# 直接生成忽略的文件名列表
$ignore_file_list = $job_name_list.map |$name| { "${name}.yaml" }

# 目录资源配置
file { $scheduler::jobs_dir:
  ensure  => directory,
  group   => $group,
  mode    => '0640',
  owner   => $user,
  path    => $scheduler::jobs_dir,
  purge   => true,
  recurse => true,
  force   => true,
  ignore  => $ignore_file_list,
}

内容的提问来源于stack exchange,提问作者user13375075

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:45:06