Подтвердить что ты не робот

Как передать файл в кукольный манифест из модуля

Я пытаюсь загрузить исходные файлы из локальных модулей в манифест марионеток (используя марионетку в автономном режиме):

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'

безрезультатно. Я ничего не обнаружил в Интернете, кажется, что-то очень простое. ваша помощь приветствуется.

4b9b3361

Ответ 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, чтобы убедиться, что папка модуля на самом деле там, и бродяга ее смонтировала. Тот факт, что вы можете загрузить манифест, не означает, что модули также существуют.

Исходная конфигурация выглядит корректно.