gpt4 book ai didi

ubuntu-12.04 - vagrant puppet 模块路径

转载 作者:行者123 更新时间:2023-12-04 01:49:30 26 4
gpt4 key购买 nike

Puppet 2.7.19
Vagrant version 1.0.6
VM OS Ubuntu 12.04

我正在尝试从 vagrant 设置 puppet 模块路径。这看起来应该很简单。

在我的 Vagrant 文件中,我有:
Vagrant::Config.run do |config|
config.vm.provision :puppet, :module_path => "my_modules"
config.vm.provision :puppet, :options => ["--modulepath", "my_modules"]
end

当我更改模块路径的值时,它似乎没有效果(在 vagrant reload 之后)

这是来自 vagrant up 的片段
[default] -- v-root: /vagrant
[default] -- manifests: /tmp/vagrant-puppet/manifests
[default] -- v-pp-m0: /tmp/vagrant-puppet/modules-0

注意 /tmp/vagrant-puppet/modules-0 ?这是关于什么的?

然后从 vagrant 内部:
vagrant@precise64:~$ puppet apply --configprint modulepath
/home/vagrant/.puppet/modules:/usr/share/puppet/modules

所以当我这样做时: puppet module install puppetlabs/mysql
我收到此错误:
Preparing to install into /home/vagrant/.puppet/modules ...
Error: Could not install module 'puppetlabs-mysql' (latest)
Directory /home/vagrant/.puppet/modules does not exist

所以我必须要:
vagrant@precise64:~/.puppet$ mkdir /home/vagrant/.puppet/modules
vagrant@precise64:~/.puppet$ puppet module install puppetlabs/mysql
Preparing to install into /home/vagrant/.puppet/modules ...
Downloading from http://forge.puppetlabs.com ...
Installing -- do not interrupt ...
/home/vagrant/.puppet/modules
└─┬ puppetlabs-mysql (v0.6.1)
└── puppetlabs-stdlib (v3.2.0)

然后我必须将模块移动到 vagrant 可以看到它们的位置......
mv /home/vagrant/.puppet/modules/mysql /tmp/vagrant-puppet/modules-0

似乎这可能是一个错误,或者我真的错过了一些东西。看起来很基本,所以我想听听其他人是如何解决这个问题的。

谢谢!

最佳答案

您有效地指定了 module_path 两次:

Vagrant::Config.run do |config|
config.vm.provision :puppet, :module_path => "my_modules"
config.vm.provision :puppet, :options => ["--modulepath", "my_modules"]
end

我不确定哪个最终会覆盖另一个,但是您不应该以两种方式指定模块路径。

我认为最好使用 vagrant 对 module_path 的支持而不是 :options数组,就像你的第一行一样。我更喜欢以下风格:
Vagrant::Config.run do |config|
...
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "manifests"
puppet.module_path = ["modules-contrib","modules-custom"]
puppet.manifest_file = "site.pp"
end # puppet
end # config

您询问了 /tmp/vagrant-puppet/modules-0 .这是 modulepath 数组中的第一项,其中 0是数组索引。即在我上面的例子中, modules-contribmodules-custom我的 vagrant 项目中的目录安装在 /tmp/vagrant-puppet/modules-0/tmp/vagrant-puppet/modules-1分别。

您不应该在 vagrant box 中安装 puppet 模块。相反,将它们安装在主机环境中 vagrant 项目的模块目录中。

我建议不要一一安装它们,而是使用图书管理员 puppet ( gem install librarian-puppet ),然后放置 Puppetfile在您的 vagrant 项目中,该项目列出了您想要的所有第三方模块,并告诉 librarian-puppet 将它们放在与您用于自定义 puppet 模块的目录不同的模块目录中。我使用 modules-contrib第三方模块的目录,把我自己的放在 modules-custom .

告诉图书馆员把它的模块放在哪里:
librarian-puppet config --local path modules-contrib

https://github.com/rodjek/librarian-puppet用于 Puppetfile 的布局。它非常简单,可以让你随意混合 puppet-forge 和 git 源。

您应该添加 modules-contrib文件夹到您的 .gitignore文件(假设您使用 git),并依赖 Puppetfile 的版本控制文件。

关于ubuntu-12.04 - vagrant puppet 模块路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507506/

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