#puppet
Вопрос:
Я пытаюсь получить список прикладных ресурсов определенного типа, чтобы использовать их значения атрибутов.
У меня есть пользовательский ресурс (define), который создает файл в определенном каталоге. Я использую его в совершенно разных местах моего кода. Я пытаюсь удалить из этого каталога все, что не было определено в моем кукольном коде. Другими словами, я пытаюсь полностью управлять содержимым этого каталога. Но я не могу получить список всех определенных ресурсов этого типа для получения файлов, которыми я управляю. Ниже приведен отредактированный код для уточнения
Пользовательский ресурс
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>>,
}
Я пытался использовать сборщики ресурсов, но, как указано в документации, их можно использовать только для изменения атрибутов ресурсов или в качестве операнда оператора цепочки.
Я также пытался использовать ссылки на ресурсы, но, похоже, я не могу получить массив всех ресурсов: мне все еще нужно указать некоторые имена.
Ответ №1:
Оказывается, вы можете использовать purge
recurse
в определении file
ресурса для очистки всех файлов, не управляемых puppet. Так что решение довольно простое:
file { $scheduler::jobs_dir:
ensure => directory,
purge => true,
recurse => true,
}