从模块外部获取Puppet文件

时间:2012-03-01 15:26:49

标签: puppet vagrant

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

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

3 个答案:

答案 0 :(得分: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 将使用位于“files”Puppet共享中的文件获取。 (在上面的示例中,它在4个不同的位置搜索)。

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

答案 1 :(得分:1)

如果您有许多Vagrant VM,您只需将文件存储在Vagrant项目目录中(包含您的VagrantFile)。 在创建VM时,此目录通常可供所有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',
}

如果您只使用本地木偶清单/模块,这可能是明智之举。

答案 2 :(得分: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. Puppet configuration reference entry for fileserverconfig
  2. Serving Files From Custom Mount Points