Я хочу скопировать несколько файлов из кукольный:// URL-адреса в каталог на агенте. Не уверен, что я здесь делаю что-то не так, но похоже, что марионетке это не нравится
file { '/etc/nginx/conf.d':
path => '/etc/nginx/conf.d',
ensure => directory,
require => File['/etc/nginx/nginx.conf'],
source => ['puppet:///modules/nginx/app1.conf',
'puppet:///modules/nginx/app2.conf'],
sourceselect => all,
}
Вот что я получаю при попытке запустить агент
Ошибка: не удалось переименовать временный файл /etc/nginx/conf.d.puppettmp_9046 в /etc/nginx/conf.d: это каталог
Если я немного изменил ситуацию, создав каталоги в модуле и указав на них ресурс, он работает.
mkdir module/files/app1 module/files/app2
mv module/files/app1.conf module/files/app1
mv module/files/app2.conf module/files/app2
новый ресурс
file { '/etc/nginx/conf.d':
path => '/etc/nginx/conf.d',
ensure => directory,
require => File['/etc/nginx/nginx.conf'],
source => ['puppet:///modules/nginx/app1',
'puppet:///modules/nginx/app2'],
sourceselect => all,
recurse => true,
}
Просто кажется немного глупым создавать каталоги для копирования списка отдельных файлов.
редактировать
Я попытался добавить косую черту в конце дорожка, но бросил все, думая, что это решение. Причина в том, что у меня был nginx объявление класса закомментировано в определении узла. Пытаясь это сделать, я получаю ту же ошибку сверху.
file { '/etc/nginx/conf.d/':
path => '/etc/nginx/conf.d/',
ensure => directory,
require => File['/etc/nginx/nginx.conf'],
source => ['puppet:///modules/nginx/app1.conf',
'puppet:///modules/nginx/app2.conf'],
sourceselect => all,
}
отсутствует конечный / в пункте назначения.
Прежде всего, о нескольких вещах:
Почему вы обеспечиваете каталог и имеете контент (исходный параметр)? Сделайте два ресурса: один для каталога, а другой - для двух файлов в каталоге.
Это дает вам ошибку, потому что вы отправляете файл в каталог, а не в каталог. Каталог может иметь только каталог в качестве источника.
Таким образом, вы можете создавать отдельные определения, поскольку вы определяете только два файла, которые хотите поместить в каталог. Другой - создать каталог в модуле / files и поместить туда файлы. Затем, когда вы делаете определение источника, вы указываете каталог, а не файлы.
Надеюсь это поможет. Казнь вы уже делаете сами.
что не так с
file { '/etc/nginx/conf.d':
path => '/etc/nginx/conf.d',
ensure => directory,
require => File['/etc/nginx/nginx.conf'],
source => 'puppet:///modules/nginx',
recurse => true,
}
? это решение поддерживает синхронизацию целых каталогов