我正在尝试从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
(通过vagrant provision
调用puppet,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'
无济于事。我发现网上没有什么亮点,看起来很简单。 感谢您的帮助。
答案 0 :(得分:20)
这里有几件事情。
首先,正如pwan所说,fileserver.conf
需要正确设置。
请记住,/vagrant
包含Vagrantfile
所在的目录(因此包含所有内容),这对我来说意味着:
vm_config.vm.provision :puppet, :module_path => "modules", :options => ["--fileserverconfig=/vagrant/fileserver.conf", ]
我的fileserver.conf
指定要使用/etc/puppet/files
。
虽然我可以为Vagrant指定一个不同的fileserver.conf
,但我想要的一切都和平时一样。
所以,我也用
加载了/etc/puppet/files
vm_config.vm.share_folder "files", "/etc/puppet/files", "files"
哪些事情对我有用。
答案 1 :(得分:11)
puppet:///modules/my_module/file
应与%vagrant_root%/modules/my_module/files/file
答案 2 :(得分:6)
我注意到Vagrant在目标VM上安装了它的dir副本(我正在使用base http://dl.dropbox.com/u/15307300/vagrant-0.7-centos-64-base.box);做一个“装载”,看看你是否也有这个。
这允许我在我的Vagrant中创建一个目录,与manifests /我称之为“files /”并行。然后我将配置源文件放在那里,例如,... / myvagrantproject / files / slapd.conf。它在VM上显示为/vagrant/files/slapd.conf
然后在文件源的puppet清单中,我将源列为绝对文件路径,而不是木偶服务器路径,如:
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 :(得分:3)
您的原始puppet:// modules / site / crontab应该可以正常工作。
我怀疑你的puppetmaster上的fileserver.conf可能没有模块部分。如果它不存在,请尝试添加类似下面的内容。
[modules]
allow *
上的“模块查找”部分
答案 4 :(得分:1)
如果您在独立模式或客户端 - 服务器模式下使用puppet,则从您的描述中不清楚。 假设您使用的是独立模式,请仔细检查vm中的/ tmp文件夹,查看模块文件夹是否确实存在,并且vagrant已经安装了它。 您可以加载清单的事实并不意味着模块也在那里。
您的原始配置看起来是正确的。