Назад | Перейти на главную страницу

Отправка более чем файла марионеточному клиенту

Как мне настроить файл "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",
    }