如何自动化Puppet的模块安装

时间:2014-01-16 10:10:12

标签: ubuntu deployment puppet continuous-delivery

我正在将系统一键部署到Ubuntu机器上。刚刚开始使用Puppet。看来,为了让我使用外部模块,我必须使用类似

之类的东西预先安装它们
puppet module install foo

问题:

  1. 我是否总是需要预先安装模块才能使用它们?
  2. 如何自动安装Puppet模块?
  3. 这是一个独立的木偶设置(所以不是主从的木偶)。我将不得不为不同的客户多次重复这一点。因此,有一个按钮可以为我完成所有工作。在后期阶段,有一个主从设置的地方。但它必须对每个客户都是独立的。

3 个答案:

答案 0 :(得分:7)

我正在设置一个主设备。

你应该看看librarian-puppet 你写Puppetfile描述你所有的模块:

  • 本地目录,
  • 远程git,
  • puppet forge

和librarian-puppet将为您计算模块目录。

librarian-puppet install

然后,您可以将其上传到目标计算机并启动puppet apply。 它也适用于流浪者。

config.vm.provision :puppet, :module_path => "modules"

答案 1 :(得分:3)

回答我自己的问题。

  

我是否总是需要预先安装模块才能使用它们?

不,我没有。在单个节点设置(无主)中,模块可以放入--modulepath=/my-module-root路径,木偶将拾取它们。我的问题是模块的文件夹名称与init.pp中的类不匹配。例如

| modules
| -- gini_cassandra   ++ HERE ++
| ---- manifests
| ------ init.pp

内部init.pp我有

class cassandra ...

gini_cassandra重命名为cassandra后,事情就开始了。

  

如何自动安装Puppet模块?

由于我不需要install无主设置中的模块,我不需要自动化它。但是,我发现librarian-puppet(感谢此answer)非常有用。我不需要版本控制外部模块。图书管理员会在我的机器,运行安装的目标机器和构建机器上为我提取它们。

答案 2 :(得分:1)

如果你正在使用木偶大师,那么你只需要在主人身上安装模块。客户端机器将不需要它们,因为主机将为它们编译它们的配置。

因此,如果您想使用某个模块,那么只需要在主设备上安装一次“木偶模块foo”即可。