【问题标题】:Is it possible to provision vagrant boxes from puppet modules located outside of the vagrant folder?是否可以从位于 vagrant 文件夹之外的 puppet 模块提供 vagrant 框?
【发布时间】:2016-05-10 16:11:06
【问题描述】:

我有一个非常复杂的生产服务器架构,它涉及多种类型和层级的服务器,包括:Web、Varnish、HAProxy、ELK、数据库、Sensu 等。生产架构配备了 puppet master 和 puppet 代码通过许多子模块为 master 提供 Git。

我想将这些 Git 存储库连接到本地 VM,以进一步开发 puppet 架构的各个部分。然而,每个 Vagrant VM 都需要所有 Git 存储库的完整自包含副本,以便仅支持一个 VM。在可能有十几种不同类型的服务器上进行本地开发时,这似乎是对驱动器空间的非常低效的使用。

有没有办法将所有 Vagrant VM 的 VagrantFiles 指向 vagrant 目录之外的一个公共本地文件夹,这样每个 Vagrant 实例仍然可以读取该文件夹并配置服务器?

已编辑--

根据@Treminio 的评论,这是我的 VagrantFile 的一部分,显示了尝试从主机根目录声明绝对路径:

config.vm.provision "puppet" do |puppet|
  puppet.manifest_file = "init.pp"
  puppet.manifests_path = "/Users/jdugger/vm/puppet/manifests"
  puppet.module_path = "/Users/jdugger/vm/puppet/modules"
  puppet.hiera_config_path = "/Users/jdugger/vm/puppet/hieradata"
end

...以及 Vagrant 的错误响应:

==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /Users/jdugger/vm/pupt/vagrant
    default: /vagrant_data/scripts => /Users/jdugger/scripts
    default: /tmp/vagrant-puppet/modules-169f1d27ef31a534405e2e9fcde2eedf => /Users/jdugger/vm/puppet/modules
    default: /tmp/vagrant-puppet/manifests-be5a69bfb646cf9329b8921f221ffab8 => /Users/jdugger/vm/puppet/manifests
==> default: Running provisioner: puppet...
The `puppet` binary appears not to be in the PATH of the guest. This
could be because the PATH is not properly setup or perhaps Puppet is not
installed on this guest. Puppet provisioning can not continue without
Puppet properly installed.

此响应可能不是因为 puppet 路径 - 不确定 - puppet 似乎不在来宾盒子上(它不应该从 Vagrant 运行吗?)。出现以下情况时没有版本:

[vagrant@localhost ~]$ puppet --version

回复是:

-bash: puppet: command not found

更新---

@Treminio 是正确的。我已经能够在 vagrant/ 目录之外提供 puppet 清单和模块。路径问题似乎是因为 Puppet 未安装在来宾 VM 上。为了解决这个问题,我在此处添加了一个 shell 脚本:

http://garylarizza.com/blog/2013/02/01/repeatable-puppet-development-with-vagrant/

这是在 puppet 供应声明之前添加的。就像注释一样,似乎没有很多高级示例可以演示外部文件功能,或者您需要在 puppet 配置程序之外安装 puppet。

【问题讨论】:

  • 好的,感谢您纠正我的理解。我能够找到路径来定位 vagrant/ 目录之外的目录。我遇到的路径问题与来宾 VM 上没有安装 Puppet 相关。在声明 puppet 配置之前,我使用 shell 脚本在 VM 上安装了 puppet。这在 Vagrant 和 Puppet 各自网站上的文档中都不清楚。

标签: vagrant puppet directory-structure


【解决方案1】:

但是,每个 Vagrant 虚拟机都需要所有 Git 存储库的完整自包含副本才能仅支持一个虚拟机。

这是不正确的。

您要更改的是puppet.module_path 值。

它可以是你主机磁盘上的任何位置,Vagrant 会自动将它挂载到你的虚拟机中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 2023-04-02
    • 2014-07-25
    相关资源
    最近更新 更多