Puppet 存储自定义模块脚本的最佳实践

Puppet 存储自定义模块脚本的最佳实践

我有 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

A模块可以附带自己的文件和模板

[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',
}

相关内容