Как передать файл в кукольный манифест из модуля
Я пытаюсь загрузить исходные файлы из локальных модулей в манифест марионеток (используя марионетку в автономном режиме):
file {
'/home/repowt/.crontab':
ensure => present,
source => 'puppet:///modules/site/crontab';
}
но я получаю:
Could not evaluate: Could not retrieve information from source(s) ...
Файл находится в:
config/puppet/modules/site/files/crontab
(puppet вызывается через vagrant provision
, а Vagrantfile указывает module_path = 'config/puppet/modules' и, очевидно, хорошо, так как марионетка загружает модули с импортом.)
Я также пробовал:
source => 'puppet:///site/crontab'
source => 'site/crontab'
source => 'config/puppet/modules/site/files/crontab'
source => '/modules/site/crontab'
безрезультатно. Я ничего не обнаружил в Интернете, кажется, что-то очень простое.
ваша помощь приветствуется.
Ответы
Ответ 1
Здесь есть несколько вещей.
Во-первых, в качестве заметок в плане, fileserver.conf
необходимо правильно настроить.
Имея в виду, что /vagrant
содержит каталог, в котором Vagrantfile
(и, следовательно, все его содержимое), что означало для меня:
vm_config.vm.provision :puppet, :module_path => "modules", :options => ["--fileserverconfig=/vagrant/fileserver.conf", ]
My fileserver.conf
указывает, что будет использоваться /etc/puppet/files
.
Пока я мог указать другой fileserver.conf
, только для Vagrant, я хотел, чтобы все было так же, как и в обычном режиме.
Итак, я также установил /etc/puppet/files
, с
vm_config.vm.share_folder "files", "/etc/puppet/files", "files"
Что за меня работает.
Ответ 2
puppet:///modules/my_module/file
должен соответствовать %vagrant_root%/modules/my_module/files/file
Ответ 3
Я заметил, что Бродяга установил копию своего ребра на целевой виртуальной машине (я использую base http://dl.dropbox.com/u/15307300/vagrant-0.7-centos-64-base.box); сделайте "монтировку" и посмотрите, есть ли у вас это тоже.
Это позволяет мне создать каталог в моем Vagrant, параллельно с манифестами /, которые я называю "files/". Затем я помещаю там свой исходный файл конфигурации, например... /myvagrantproject/files/slapd.conf. Это отображается на виртуальной машине как /vagrant/files/slapd.conf
Затем в манифесте куклы для источника файла я перечисляю источник как абсолютный путь к файлу, а не путь марионеточного сервера, например:
file { 'slapd.conf':
name => '/etc/openldap/slapd.conf',
ensure => present,
source => '/vagrant/files/slapd.conf',
owner => root,
group => ldap,
mode => 0640,
require => Package["ldapservers"],
}
Он не обнаружил проблем с его собственной удаленной файловой системой, установленной на vbox.
Ответ 4
Ваша оригинальная марионетка://modules/site/crontab должна работать.
Я подозреваю, что у fileserver.conf у вашего кукловодителя может не быть раздела модулей. Попробуйте добавить что-то вроде ниже, если оно еще не присутствует.
[modules]
allow *
Посмотрите раздел "Поиск модуля" на http://docs.puppetlabs.com/guides/modules.html
Ответ 5
Из вашего описания не ясно, используете ли вы марионетку в автономном режиме или в режиме клиент-сервер.
Предполагая, что вы используете автономный режим, дважды проверьте свою папку /tmp в своем vm, чтобы убедиться, что папка модуля на самом деле там, и бродяга ее смонтировала.
Тот факт, что вы можете загрузить манифест, не означает, что модули также существуют.
Исходная конфигурация выглядит корректно.