【问题标题】:Process for switching a puppet module installed from the forge切换从 Forge 安装的 puppet 模块的过程
【发布时间】:2013-12-09 02:46:49
【问题描述】:

我已经安装了:

puppet module uninstall branan/minecraft

并使用:

class { 'minecraft': }

来自锻造的模块。这个模块特别是安装和配置我的世界服务器,但我遇到的问题确实与所有模块有关。

因此,在配置之后,服务器现在运行了一个新服务以及存储在 /opt/minecraft 中的所有 minecraft 文件。

我想尝试一个新的 Minecraft 模块的日子已经到来,因为它可以进行更多的自定义,更易于使用等等。

我将如何切换模块?在我看来,我需要做类似的事情:

  1. 以某种方式恢复当前模块所做的所有更改,例如class {'minecraft': ensure => purged }?
  2. 运行 puppet apply 以应用更改...
  3. 运行puppet module uninstall branan/minecraft --modulepath puppet/forge-modules
  4. 安装新模块
  5. 添加具有高级配置选项的新类,例如class {'minecraft': heap_size => '1024M' }
  6. 再次运行 puppet apply...

这似乎是一个相当长的手动过程,涉及两个 puppet 应用程序和一个直到最后一步都停机的 minecraft 服务器。

我认为class {'minecraft': ensure => purged } 甚至都行不通,据我所知,该模块没有用于删除文件或创建它的服务的代码。

如您所见,我很困惑,我可能遗漏了一些明显的东西。谢谢!

【问题讨论】:

标签: puppet


【解决方案1】:

你的步骤大多是正确的。

不过,ensure 参数很大程度上取决于类如何使用它。据我所知,ensure 参数是硬编码的。

与接受ensure 参数的新模块相比,作者没有以允许卸载的方式编写他的模块。

最好的办法是手动停止服务 - 通过命令行或使用 puppet(未经测试)。

命令行:改编自linux script to kill java process

ps -ef | grep minecraft

记下id

kill 1234

其中 1234 是 minecraft 正在运行的实例的 id。

Puppet:理论上,这应该可以工作,因为您也可以访问模块提供的类。我没有亲自尝试过。

service { 'minecraft':
    ensure => stopped
}

最后,您可能想也可能不想删除配置文件。它们似乎都位于 minecraft 主目录下,默认情况下位于 /opt/minecraft 下。这些不会影响新模块,因为新模块会覆盖它们或为其配置使用单独的目录。

然后你可以卸载旧模块,安装新模块

一般来说,应用 puppet 脚本不会花费太长时间,每个不超过一分钟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 2017-11-11
    • 2020-05-18
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多