从模块外部采购Puppet文件

我正在从一个模块(在这个特定情况下是Nginx )安装一个软件包,并希望从模块外部包含一个配置文件,即从顶级files目录并行到顶级manifests目录。 我没有看到任何方式来源文件,但没有将其包含在模块中,或者在我当前的指向绝对本地路径的Vagrant环境中。

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


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

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 /文件将使用位于“文件”Puppet共享中的文件来源。 (在上面的例子中,它在4个不同的位置搜索)。

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


如果您有多个Vagrant虚拟机,您可以将文件存储在Vagrant项目目录(包含您的VagrantFile)中。 在创建时,该目录通常可供所有虚拟机在虚拟机内使用。

如果您希望计算机上的其他目录可供您的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',
}

如果你只使用当地的木偶清单/模块,这可能只是明智的做法。


可能来不及帮助bennylope,但对于发生在这个问题上的其他人,就像我之前做过的那样,

在你的Vagrant文​​件中包含这样的东西...

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 / source / path中存在example-file.txt,以下内容将在您的清单中起作用:

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

看到:

  • fileserverconfig的Puppet配置参考条目
  • 从自定义安装点提供文件
  • 链接地址: http://www.djcxy.com/p/58003.html

    上一篇: Sourcing Puppet files from outside of modules

    下一篇: DateTime.Parse fails for today (01 mar 2012)! o