Как мне настроить файл "init.pp" для отправки более чем файла одного и того же класса? Я сделал вот что:
class nagios {
file { ['/usr/lib64/nagios/plugins/']:
path => '/usr/lib64/nagios/plugins/',
ensure => directory,
notify => Service['nrpe'],
source => ["puppet:///modules/mymodule/check_mem.sh",
'puppet:///modules/mymodule/check_mountpoint.sh'],
sourceselect => all,
}
service { 'nrpe':
ensure => 'running',
enable => true,
}
}
Я пытаюсь отправить два разных файла в одну и ту же удаленную папку, а затем перезапустить службу.
Однако, когда я запускаю марионетку на клиенте, я получаю следующие ошибки:
[...]
Error: Could not set 'file' on ensure: Is a directory - (/usr/lib64/nagios/plugins20170306-28992-j54k6x, /usr/lib64/nagios/plugins) at 153:/etc/puppet/modules/mymodule/manifests/init.pp
[...]
Error: /Stage[main]/Nagios/File[/usr/lib64/nagios/plugins/]/ensure: change from directory to file failed: Could not set 'file' on ensure: Is a directory - (/usr/lib64/nagios/plugins20170306-28992-j54k6x, /usr/lib64/nagios/plugins) at 153:/etc/puppet/modules/mymodule/manifests/init.pp
Где моя ошибка?
Спасибо.
В sourceselect
Параметр влияет только на рекурсивные копии каталогов. Для отдельных файлов вам нужно несколько file
ресурсов, так как в этом случае будет скопирован только первый файл.
С другой стороны, при рекурсивном обслуживании каталогов несколько источников можно объединить, установив для атрибута sourceselect значение all.
(Источник)
Вторая проблема заключается в том, что вы указываете Puppet, что целью является каталог. В этом случае предоставление исходного файла не имеет никакого смысла - вы не можете сохранить файл как каталог. Вам нужно будет установить его на file
или present
.
Повторите свой комментарий: что-то вроде этого должно работать:
file { ['/usr/lib64/nagios/plugins/check_mem.sh']:
ensure => "file",
notify => Service['nrpe'],
source => "puppet:///modules/mymodule/check_mem.sh",
}
file { ['/usr/lib64/nagios/plugins/check_mountpoint.sh']:
ensure => "file",
notify => Service['nrpe'],
source => "puppet:///modules/mymodule/check_mountpoint.sh",
}