gpt4 book ai didi

class - 我如何在 Puppet 中执行类

转载 作者:行者123 更新时间:2023-12-01 12:28:31 24 4
gpt4 key购买 nike

我刚开始使用 puppet 。我不知道如何在 puppet 中执行类(class)。我有我的文件“config.pp init.pp install.pp service.pp”。例如安装.pp:

class sshd::install{ ... }

接下来,我在 init.pp 中使用“include sshd::install”声明我的类。

我也试过运行类:

class{'sshd::install':} -> class{'sshd::config':} ~> class{'sshd::service':}

之后,我启动了“puppet apply init.pp”,但什么也没有。

我的脚本独立运行,但对于类我不知道如何执行所有类。

谢谢

最佳答案

我不确定您对 Puppet 进行了多少研究及其代码的结构,但这些可能会有所帮助:

看来您是从一个基本的模块结构开始的(基于您对 init/install/service 的使用),这很好,但是您的执行方法是直接 list (而不是模块本身),这赢得了由于 autoloading,无法在您正在测试的模块中工作除非您的文件位于有效的模块路径内。

基本上:您想将您的类/模块结构化代码放在 Puppet 的模块路径中 (puppet config print modulepath),然后您想使用另一个 list 文件 (.pp) 来包含您的类。

示例文件结构:

/etc/puppetlabs/code/modules/sshd/manifests/init.pp
install.pp
service.pp
/tmp/my_manifest.pp

您的 class sshd(){ ... } 代码进入 init.pp,class sshd::install(){ ... } 进入install.pp 等...

然后“my_manifest.pp”看起来像这样:

include ::sshd

您可以通过以下方式申请:puppet apply/tmp/my_manifest.pp。一旦成功,您就可以了解将 list 应用到您的节点的各种方法(直接,像这样,使用 ENC,使用 site.pp 等...欢迎进一步阅读)。

或者,只要模块在您的模块路径中(如上所述),您就可以简单地执行 puppet apply -e 'include::sshd'

为了获得您必须按预期方式运行的代码,它需要看起来像这样:

# Note: This is BAD code, do not reproduce/use
class sshd() {
class{'sshd::install':} ->
class{'sshd::config':} ~>
class{'sshd::service':}
}
include sshd

或类似的东西,它完全打破了模块结构的工作方式。 (事实上​​ ,如果模块不在正确的路径中,该代码将无法运行,如果直接执行,该代码将显示一些非常奇怪的行为。不要编写那样的代码。)

关于class - 我如何在 Puppet 中执行类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com