Как получить файл в манифесте кукол из модуля - PullRequest
17 голосов
/ 27 августа 2011

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

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' и явно в порядке, поскольку puppet загружает модули с импортом оттуда.)

Я тоже пробовал:

source => 'puppet:///site/crontab'
source => 'site/crontab'
source => 'config/puppet/modules/site/files/crontab'
source => '/modules/site/crontab'

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

Ответы [ 5 ]

20 голосов
/ 05 мая 2012

Здесь происходит несколько вещей.

Во-первых, как отмечает pwan, 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, только для Вагранта, я хотел, чтобы все было примерно так же, как обычно.

Итак, я тоже смонтировал /etc/puppet/files с

vm_config.vm.share_folder "files", "/etc/puppet/files", "files"

Что заставило меня работать.

11 голосов
/ 26 октября 2012

puppet:///modules/my_module/file должно соответствовать %vagrant_root%/modules/my_module/files/file

6 голосов
/ 29 августа 2011

Я заметил, что Vagrant смонтировал копию своего dir на целевой виртуальной машине (я использую базу http://dl.dropbox.com/u/15307300/vagrant-0.7-centos-64-base.box);, выполните "монтирование" и посмотрите, есть ли у вас это тоже.

Это позволяетмне создать каталог в моем Vagrant, параллельно с манифестами /, которые я называю "files /". Затем я помещаю туда свой исходный файл конфигурации, например, ... / myvagrantproject / files / slapd.conf. Это появляется на виртуальной машинеas /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.

3 голосов
/ 29 сентября 2011

Ваша оригинальная кукла: // modules / site / crontab должна работать.

Я подозреваю, что fileserver.conf на вашем puppetmaster может не иметь раздела модулей. Попробуйте добавить что-то вроде ниже, если это еще не сделано.

[modules]
    allow *

Ознакомьтесь с разделом «Поиск модуля» на http://docs.puppetlabs.com/guides/modules.html

1 голос
/ 14 февраля 2012

Из вашего описания не ясно, используете ли вы марионетку в автономном режиме или в режиме клиент-сервер. Предполагая, что вы используете автономный режим, дважды проверьте папку / tmp в вашем vm, чтобы увидеть, действительно ли там находится папка модуля, и vagrant смонтировал ее. Тот факт, что вы можете загрузить манифест, не означает, что модули также есть.

Ваша первоначальная конфигурация выглядит правильно.

...