2016-11-01 6 views
1

У меня есть каталог, полный .data файлов и .config/.config.example файлов. Мне нужно переместить все файлы .data в другой существующий каталог в моей системе, используя марионетку. Коричневый код, который я сейчас имею, неверен. Я верю, что я делаю неправильно?Puppet - Как переместить содержимое каталога в другой существующий каталог?

file { 'Owasp .data files': 
    ensure => directory, 
    path => '/etc/nginx/', 
    source => '/usr/src/SpiderLabs-owasp-modsecurity-crs-0475e92/', 
    recurse => true, 
    ignore => ['*.conf', '*.conf.example'], 
} 

Я надеялся, что это будет копировать все для .conf и .conf.example файлов за исключением /etc/nginx. Тем не менее, я получаю следующее сообщение об ошибке:

box: Error: Cannot alias File[Owasp .data files] to ["/etc/nginx"] at /vagrant/modules/nginx_test/manifests/test.pp:112; resource ["File", "/etc/nginx"] already declared at /usr/share/puppet/modules/nginx/manifests/config.pp:193

ответ

1

Так что ваша проблема на самом деле, что у вас есть file { '/etc/nginx': } объявлены где-то в вашем каталоге. Вы должны только объявлять этот ресурс один раз в каталоге. Это исправит вашу ошибку. Вы также не можете объявить два файловых ресурса с разными заголовками, которые имеют одинаковый параметр path, поскольку Puppet проверяет этот параметр для уникальности ресурсов.

Что касается вашего конкретного вопроса, хотя, вы будете использовать файл URI в параметре source: https://docs.puppet.com/puppet/latest/reference/type.html#file-attribute-source

Так что для вашей ситуации, вы могли бы сделать:

file { 'Owasp .data files': 
    ensure => directory, 
    path => '/etc/nginx/', 
    source => 'file:///usr/src/SpiderLabs-owasp-modsecurity-crs-0475e92/', 
    recurse => true, 
    ignore => ['*.conf', '*.conf.example'], 
} 
+0

Спасибо. К сожалению, этот файловый ресурс находится в кукольном модуле кузницы, который я загружаю и использую - я не могу удалить/отредактировать это, к сожалению. – Xenidious

Смежные вопросы