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

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
  • Также это, вероятно, также можно пометить бродягой –  akumria 05.05.2012 в 18:27
  • Документы для vm.share_folder: vagrantup.com/v1/docs/config/vm/share_folder.html –  Henrik 11.06.2012 в 21:51
  • лучше поздно, чем никогда не принимать. я оставил этот, но хороший ответ. –  Viktor Trón 13.02.2013 в 16:59
  • Поскольку символические ссылки не всегда работают, я не смог установить символическую ссылку «файлы» в моей комбинации VagrantBox-OS-Virtualizer. Из-за этого я никогда не мог получить доступ к вещам из кукольного: /// пути –  Tushar Goswami 28.03.2016 в 13:22
11

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

    
ответ дан knoopx 26.10.2012 в 01:32
  • Этот комментарий помог мне исправить мою проблему. благодаря –  khustochka 03.07.2013 в 16:02
  • это очень важный момент. –  Suyash Jain 07.10.2014 в 16:00
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
  • да, спасибо, подумал об этом, но это обман. Я хочу передать его из модуля в fs, на который я звоню. –  Viktor Trón 29.08.2011 в 12:54
3

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

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

[modules]
    allow *

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

    
ответ дан pwan 28.09.2011 в 23:49
  • Также проверьте документы для fileserver.conf docs.puppetlabs.com/guides/file_serving.html –  Henrik 11.06.2012 в 21:56
1

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

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

    
ответ дан zekus 13.02.2012 в 23:10
  • автономный да. отредактировал мой пост. Даже если он находится в tmp или монтируется в другом месте, факт в том, что марионетка на vm не находит его. Я действительно удивляюсь, как это может случиться, я имею в виду, что это не самая основная особенность этого, чтобы поместить файлы сюда сюда .... grr –  Viktor Trón 14.02.2012 в 19:10