我正在将系统一键部署到 Ubuntu 机器上。刚开始为此使用 Puppet。看来,为了让我使用外部模块,我必须使用类似的东西预先安装它们
puppet module install foo
问题:
- 我是否总是必须预先安装模块才能使用它们?
- 如何自动安装 Puppet 模块?
这是一个独立的傀儡设置(所以不是主从傀儡)。我将不得不为不同的客户重复多次。因此,如果有一个按钮为我完成所有工作,那就太好了。后期有主从设置的地方。但它必须对每个客户都是独立的。
我正在将系统一键部署到 Ubuntu 机器上。刚开始为此使用 Puppet。看来,为了让我使用外部模块,我必须使用类似的东西预先安装它们
puppet module install foo
问题:
这是一个独立的傀儡设置(所以不是主从傀儡)。我将不得不为不同的客户重复多次。因此,如果有一个按钮为我完成所有工作,那就太好了。后期有主从设置的地方。但它必须对每个客户都是独立的。
我正在使用无主设置。
你可能应该看看librarian-puppet 你写的 Puppetfile 描述了你所有的模块:
librarian-puppet 将为您计算一个模块目录。
图书管理员木偶安装
然后,您可以将其上传到目标机器并启动 puppet 应用。它也适用于流浪汉。
config.vm.provision :puppet, :module_path => "modules"
回答我自己的问题。
我是否总是必须预先安装模块才能使用它们?
不,我没有。在单个节点设置(无主节点)中,可以将模块放入--modulepath=/my-module-root
路径中,并且 puppet 会拾取它们。我的问题是模块的文件夹名称与init.pp
. 例如
| 模块 | -- gini_cassandra ++ 这里 ++ | ---- 体现 | ------ 初始化.pp
里面init.pp
我有
class cassandra ...
一旦我重命名gini_cassandra
为cassandra
事情开始工作。
如何自动安装 Puppet 模块?
因为我不需要install
无主设置中的模块,所以我不需要自动化它。但是,我发现librarian-puppet
(感谢这个答案)非常有用。我不需要对外部模块进行版本控制。Librarian 将在我的机器、我运行安装的目标机器和构建机器上为我提取它们。
如果您使用的是 puppet master,那么您只需要在 master 上安装模块。客户端机器不需要它们,因为主机将为它们编译它们的配置。
因此,如果您想使用某个模块,只需在主服务器上执行 1 次“puppet module install foo”即可。