7

我正在从一个模块(Nginx在这种特定情况下)安装一个包,并希望包含一个来自模块外部的配置文件,即来自与顶级files目录平行的顶级manifests目录。尽管没有将其包含在模块中或在我当前的 Vagrant 环境中引用绝对本地路径,但我看不到任何获取文件的方法。

Puppet 是否允许从文档中描述的模块外部获取文件?

4

3 回答 3

3

如果我正确理解你的问题,你可以。在您的模块中,像这样的简单代码

file { '/path/to/file':
    ensure => present,
    source => [
               "puppet:///files/${fqdn}/path/to/file",
               "puppet:///files/${hostgroup}/path/to/file",
               "puppet:///files/${domain}/path/to/file",
               "puppet:///files/global/path/to/file",
    ],
}

将完成这项工作。/path/to/file将使用位于“文件”Puppet 共享中的文件获取源。(在上面的示例中,它在 4 个不同的位置进行搜索)。

更新也许你正在谈论一个目录来存储 Puppet 文件服务器不共享的文件(查看http://docs.puppetlabs.com/guides/file_serving.html),在这种情况下你不能我认为, Vagrant 与否,但您可以将其添加到您的 Puppet 文件服务器中来执行此操作。我认为这是最好的(也许是唯一的)方法。

于 2012-03-21T13:59:29.780 回答
1

如果你有许多 Vagrant VM,你可以简单地将文件存储在你的 Vagrant 项目目录中(包含你的 VagrantFile)。该目录通常在创建时作为 VM 中的 /vagrant 可供所有 VM 使用。

如果您希望计算机上的其他目录可供您的虚拟机使用,只需将以下内容添加到您的 VagrantFile

# see http://docs.vagrantup.com/v1/docs/config/vm/share_folder.html
config.vm.share_folder "v-packages", "/vagrant_packages", "../../dpkg"

然后要使用 puppet 中的文件,您可以简单地将它们视为 VM 的本地文件

# bad example, bub basically use 'source => 'file:///vagrant/foo/bar'
file { '/opt/cassandra':
    ensure  => directory,
    replace => true,
    purge   => true,
    recurse => true,
    source  => 'file:///vagrant/conf/dist/apache-cassandra-1.2.0',
}

如果您只使用本地 puppet 清单/模块,这可能是唯一明智的做法。

于 2013-03-01T09:34:12.897 回答
0

可能为时已晚,无法帮助bennylope,但对于遇到这个问题的其他人来说,就像我在为自己弄清楚之前所做的那样......

在你的 Vagrantfile 中包含这样的东西......

GUEST_PROVISIONER_CONFDIR = "/example/destination/path"
HOST_PROVISIONER_CONFDIR  = "/example/source/path"
config.vm.synced_folder HOST_PROVISIONER_CONFIDIR, GUEST_PROVISIONER_CONFDIR
puppet.options = "--fileserverconfig='#{GUEST_PROVISIONER_CONFDIR}/fileserver.conf'"

然后确保 /example/source/path 包含引用的 fileserver.conf 文件。它应该看起来像......

[foo]
  path /example/destination/path
  allow *

现在,假设 example-file.txt 存在于 /example/source/path 中,以下内容将在您的清单中起作用:

source  => "puppet:///foo/example-file.txt",

看:

  1. fileserverconfig 的 Puppet 配置参考条目
  2. 从自定义挂载点提供文件
于 2013-09-06T22:27:32.403 回答