我是puppet的新手,我想知道如何将参数传递给命令行。我会自己解释一下:
这是我正在运行的命令(木偶申请):
C:> puppet apply --environment test -l C:\ Puppet_logs \ log.log C:\ ProgramData \ PuppetLabs \ code \ environments \ test \ manifests \ site.pp
Site.pp:
File { backup => false }
node default {
include 'tn'
}
这意味着我正在跑步' tn'这是我的木偶项目中的一个模块。
例如, 我的木偶项目中有这些模块:
TN
PS
AV
因此,要运行每个模块,我需要转到此site.pp文件并将其更改为
包括' ps'
或
包括' av'
我的问题是 -
如何将这些模块作为参数传递给puppet apply命令?
我知道我可以创建3个.pp文件,每个文件包含一个模块(ps,av,tn)
然后我的命令将如下:
puppet apply --environment test -l C:\ Puppet_logs \ log.log C:\ ProgramData \ PuppetLabs \ code \ environments \ test \ manifests \ ps.pp
puppet apply --environment test -l C:\ Puppet_logs \ log.log C:\ ProgramData \ PuppetLabs \ code \ environments \ test \ manifests \ av.pp
puppet apply --environment test -l C:\ Puppet_logs \ log.log C:\ ProgramData \ PuppetLabs \ code \ environments \ test \ manifests \ tn.pp
但是,我认为这不是一个好的解决方案.. 还有另一种方法可以将这些模块作为参数传递给puppet吗? 如果我没有提到 - 每个模块都负责不同的行动。
谢谢!!!
答案 0 :(得分:0)
我知道我可以创建3个.pp文件,每个文件包含一个模块 (ps,av,tn)
[...]
但是,我认为这不是一个好的解决方案。
为什么不是一个好的解决方案?对我来说,如果你有三件不同的东西可以做,那么你可以用一个单独的文件来完成每件事。
尽管如此,如果您的模块彼此不使用,那么您可以通过依赖标记完成您描述的内容。让您的站点清单包含所有三个模块:
File { backup => false }
node default {
include 'tn'
include 'ps'
include 'av'
}
然后使用--tags
选项仅选择其中一个模块及其带来的所有其他类:
puppet apply --tags ps --environment test -l C:\Puppet_logs\log.log C:\ProgramData\PuppetLabs\code\environments\test\manifests\site.pp
答案 1 :(得分:0)
一个pp文件是一个类文件,而不是一个模块,一个模块包含这些类以及支持/测试这些类所需的其他任何东西,请查看https://puppet.com/docs/puppet/5.5/modules_fundamentals.html。
看看如何在https://forge.puppet.com/上布置模块
值得一看的是PDK https://puppet.com/docs/pdk/1.x/pdk.html,因为它将为您构建一个模块,您只需添加类。
在您的情况下,您可能想创建一个新模块(我们称其为mymodule),然后在该模块中将所有tn.pp ps.pp和av.pp类文件放在C:\ ProgramData \ PuppetLabs \ code \下environments \ test \ modules \ mymodule \ manifests目录。
然后使用示例模式进行本地测试,因此在您的模块中将有一个示例目录,其中可能有一个名为ps.pp的文件,其中将包含include mymodule::ps
来包含该ps.pp类文件。
示例目录的目的是为您提供一种传递参数以进行本地测试的方法。
返回您要应用的site.pp文件的位置:
Node default {
Include mymodule::ps
}
因此,现在您想对节点应用不同的类,并在这里达到了节点分类的世界,有许多方法可以做到这一点。就您的情况而言,我认为您可能正在小规模进行此操作,所以您应该这样做;
Node psserver.example.com {
Include mymodule::ps
}
Node tnserver.example.com {
Include mymodule::tn
}
看看一些在线培训https://puppet.com/learning-training/kits/puppet-language-basics