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

17

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

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'

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

    
задан Viktor Trón 27.08.2011 в 20:08
источник

5 ответов

20

Здесь есть несколько вещей.

Во-первых, в качестве заметок panna необходимо правильно настроить 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"

Что за меня работает.

    
ответ дан akumria 05.05.2012 в 18:24
источник
11

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

    
ответ дан knoopx 26.10.2012 в 01:32
источник
6

Я заметил, что Бродяга установил копию своего каталога на целевой виртуальной машине (я использую базу Ссылка ); сделайте «монтировку» и посмотрите, есть ли у вас это тоже.

Это позволяет мне создать каталог в моем 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.

    
ответ дан Shentonfreude 28.08.2011 в 22:52
источник
3

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

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

[modules]
    allow *

Посмотрите раздел «Поиск модуля» на странице Ссылка

    
ответ дан pwan 28.09.2011 в 23:49
источник
1

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

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

    
ответ дан zekus 13.02.2012 в 23:10
источник