让 Puppet 安装模块

让 Puppet 安装模块

在我当前的设置中,我有一个主机启动脚本,该脚本将新配置的虚拟机放在某个 DC 中,发出我需要运行的几个命令puppet apply(确保设置了主机名、安装了 puppet,并且可以看到它的 puppet 配置)。然后puppet apply处理其余的事情(加上部署我们软件的结构)。

一切都很好,但是目前在我的主机启动脚本中安装所需的 puppet 模块。这工作得很好,直到我想安装新模块,然后我必须在现有主机上手动对其进行排序。似乎 puppet 应该能够做到这一点,但我还没有找到正确的指令。

# If only this worked...
module { 'maestrodev-rvm':
    ensure => present
}

我见过傀儡图书管理员,但它似乎增加了更多的复杂性,而不是解决了我们安装的少量模块的问题。这似乎是以后我们需要更复杂的东西时的解决方案。

我是否遗漏了什么?

答案1

librarian-puppet是这个问题最简单的答案。我个人总是建议提前做好准备工作,并首先实施一个可扩展的解决方案,而不是不断修改你的方法。

它的工作原理与bundlerRuby gems 相同 - 你只需创建一个Puppetfile列出模块的想要(即没有依赖关系)。

librarian-puppet install当您首次在 Puppet 开发机器(通常是本地工作站)上运行时,它将查询所有模块并自动构建依赖项列表(如果相关模块使用该metadata.json文件来详细说明依赖项)。它还将创建Puppetfile.lock以记录为每个模块及其依赖项选择的确切版本。

对于后续更改,您可以运行librarian-puppet update <module>以将特定模块更新为最新版本。这将重新计算依赖项并更新Puppetfile.lock

重要提示 -librarian-puppet将采取满的目录的控制modules,因此您编写的任何自定义模块都需要被拉出并在您的Puppetfile.

部署就像librarian-puppet install在您的节点上运行一样简单 - 这将查看Puppetfile.lock(不是Puppetfile)并安装您的所有模块。

相关内容