У меня есть агентские узлы 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
А модуль может поставляться с собственными файлами и шаблонами:
[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");
}
Модули - это автономные пакеты кода и данных. Вы можете загрузить готовые модули из 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
Что касается более общей передовой практики, я бы рекомендовал вам прочитать этот.
Единственное место, где вы должны хранить эти скрипты, - это модуль files
каталог.
Затем вы можете развернуть сценарий, используя source
параметр file
ресурс вроде так:
file {'myfile':
ensure => file,
source => 'puppet:///modules/mymodule/myfile',
}