![Puppet 存储自定义模块脚本的最佳实践](https://linux22.com/image/699109/Puppet%20%E5%AD%98%E5%82%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A8%A1%E5%9D%97%E8%84%9A%E6%9C%AC%E7%9A%84%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.png)
我有 Windows 代理节点。我正在创建自己的模块,其中包含一些自定义 powershell 脚本。我想知道我应该将这些 powershell 脚本保存在哪里。在我的模块本身中的某个文件夹中(例如,scripts
dir)中还是在我的模块目录之外的某个地方?在这种情况下,推荐/最佳做法是什么?
git/
- client
- hieradata
- manifests
- modules
- my_module
- scripts/ # 1) Should it be within this dir?
- my_script.ps1
- scripts/ # 2) Should it be within this dir or elsewhere?
- my_script.ps1
- templates
答案1
[modules_root]
my_module
files
my_script
manifests
init.pp
templates
other_script.erb
由于 OP 的帖子建议安装模块范围之外的模板,...我觉得还需要注意我们将使用以下命令安装这些模板:
file {
"/etc/toto":
source => "puppet:///modules/my_module/my_script";
"/etc/tata":
content => template("my_module/other_script.erb");
}
答案2
模块是自包含的代码和数据包。您可以从 Puppet Forge 下载预构建的模块,也可以编写自己的模块。
根据官方文档,没有任何“良好”的做法来将您的个人脚本放在自定义模块中。
但是,文件夹files
可以包含静态文件,托管节点可以下载这些文件这是放置一些个人脚本最近的地方。
您还可以创建一个脚本文件夹,如果您认为它足够清晰,以便其他人可以阅读并理解您的模块。
On disk, a module is simply a directory tree with a specific, predictable structure:
- manifests
- files
- templates
- lib
- facts.d
- examples
- spec
- functions
- types
就更普遍的最佳实践而言,我建议你阅读这。
答案3
存储这些脚本的唯一位置是模块的files
目录。
source
然后,您可以使用资源参数部署脚本,file
如下所示:
file {'myfile':
ensure => file,
source => 'puppet:///modules/mymodule/myfile',
}