18

我正在尝试从 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

(通过调用 puppetvagrant 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'

无济于事。我在网上找不到任何启发性的东西,似乎很简单。感谢您的帮助。

4

5 回答 5

20

这里发生了几件事。

首先,正如 pwan 所说,fileserver.conf需要正确设置。

请记住,它/vagrant包含所在的目录Vagrantfile(以及所有内容),这对我来说意味着:

vm_config.vm.provision :puppet, :module_path => "modules", :options => ["--fileserverconfig=/vagrant/fileserver.conf", ]

fileserver.conf指定/etc/puppet/files要使用的。

虽然我可以fileserver.conf为 Vagrant 指定不同的 ,但我希望几乎所有内容都与正常情况相同。

所以,我也安装/etc/puppet/files

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

这让事情对我有用。

于 2012-05-05T16:24:43.250 回答
11

puppet:///modules/my_module/file应该匹配%vagrant_root%/modules/my_module/files/file

于 2012-10-25T23:32:14.947 回答
6

我注意到 Vagrant 在目标 VM 上安装了其目录的副本(我使用的是基础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 清单中,我将源列为绝对文件路径,而不是 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 安装的远程文件系统中发现它没有问题。

于 2011-08-28T20:52:16.133 回答
3

你原来的 puppet://modules/site/crontab 应该可以工作。

我怀疑你的 puppetmaster 上的 fileserver.conf 可能没有模块部分。如果它不存在,请尝试添加类似下面的内容。

[modules]
    allow *

查看http://docs.puppetlabs.com/guides/modules.html上的“模块查找”部分

于 2011-09-28T21:49:00.427 回答
1

从您的描述中不清楚您是在独立模式还是在客户端-服务器模式下使用 puppet。假设您使用的是独立模式,请仔细检查您的 vm 中的 /tmp 文件夹,以查看模块文件夹是否确实存在并且 vagrant 已安装它。您可以加载清单的事实并不意味着模块也在那里。

您的原始配置,看起来是正确的。

于 2012-02-13T22:10:13.960 回答