Puppet资源应该放在哪里?

Where should Puppet Resources be Placed?

我有以下 flyway.pp Puppet class,它将 Flyway 安装到 Windows 机器上。它将两个文件复制到安装文件夹中。

class rehan::flyway {
    package { 'flyway':
        ensure      => latest,
        provider    => chocolatey
    }

    file { 'C:/Program Files/flyway/ntlmauth.dll':
      ensure => 'file',
      source => 'puppet:///modules/rehan/manifests/ntlmauth.dll',
    }

    file { 'C:/Program Files/flyway/drivers/sqljdbc4.jar':
      ensure => 'file',
      source => 'puppet:///modules/rehan/manifests/sqljdbc4.jar',
    }
}

以上模块位于 modules/rehan/manifests/flyway.pp。我把 ntlmauth.dllsqljdbc4.jar 这两个文件放在旁边,但看起来有点乱。是否有通常放置这些文件的标准目录或位置?另外,我如何使用相对路径引用这些文件,我使用 puppet:///modules/rehan/manifests/ntlmauth.dll 因为我在某处看到过它但它不起作用。

这可能有点令人困惑。

在您的模块目录中,您应该有一个名为 'files' 的子目录,所有您想要 copied/installed 的文件都需要放在那里。

令人困惑的一点是,当寻址其中存储的对象之一时,您不要在路径中提及'files'!

所以,

source => 'puppet:///modules/rehan/sqljdbc4.jar'

从以下路径获取 jar 文件:

/etc/puppet/modules/rehan/files/sqljdbc4.jar

puppet:///modules/rehan/manifests/ntlmauth.dll 不起作用的原因是它将路径映射到 /etc/puppet/modules/rehan/files/manifests/ntlmauth.dll 不存在。

您不能使用 puppet:/// 引用位于清单目录中的对象