【问题标题】:Vagrant workflow流浪工作流
【发布时间】:2014-12-09 06:56:49
【问题描述】:

嗨,我想了解运行时到底做了什么

vagrant up

我这样做的原因是,在我的情况下,我们需要安装很多实用程序。 即版本控制工具、构建工具、IDE 等... 这需要很多时间。

所以实际上我想要一个包含所有这些工具的“盒子”。 在我拥有干净的环境并获得所有工具后,我想为我们的产品制作 CI。

如果我要重新安装所有实用程序,它应该会花费很多时间。所以我真正需要的只是安装和测试我们的产品。 我应该如何处理??
创建我自己的盒子?当我们制作 CI 时,该命令是否会重新安装所有实用程序??

我真正需要的是 2 个进程:

1.为我的虚拟机安装实用程序。 (每月一次)

2.测试我们的产品(每次提交\推送到版本控制)

我怎样才能做到这一点?

【问题讨论】:

  • 您基本上是在要求关于 Vagrant 的 主要用例之一的操作指南。因此,这个问题对于 Stack Overflow 来说太宽泛了,或者可以被解释为一个指向适当文档链接的问题,这也是无效的。你自己的研究结果是什么?您对通用指南有什么问题?
  • 没有很好地回答您的问题。无论如何,我的用例是针对具有很多依赖项的企业产品。所以每次安装这些依赖项都会花费很多时间,而我真正想要在 CI 上做的是测试我的产品。如果我将它带到数字可以说,安装dependencis可能需要3个小时。安装产品可能需要 1 小时。我真正想要的是一个带有我所有依赖项的虚拟机来测试我的产品。不仅如此,还可以为我的依赖项进行更改(主要是版本),每月发生一次。

标签: vagrant chef-infra puppet


【解决方案1】:

第一次,vagrant up 将为您创建一个新的 VM,如果需要,它会拉取 box 映像,并使用您在 Vagrantfile 中配置的内容进行配置。在配置配置中,您可以告诉 Chef 或 Puppet 安装您需要的所有实用程序和工具。

当您挂起或停止 VM 时,下次您执行 vagrant up 时,它只会使该 VM 恢复。它将不会重新安装或尝试配置它。

您可以使用 vagrant up --provision 或仅使用 vagrant provision 强制它。

这通常在开发环境中运行良好。

在 CI 环境中,可能无法配置 VM,这会迫使您每次都运行配置步骤。您可以使用已安装的工具来实现您需要的打包自己的盒子,本质上是创建一个黄金或基础图像。

请格外小心,以免 CI 环境因生产环境而异。

【讨论】:

  • 这意味着每个月,我们都需要制作新的VM ...那我为什么要使用vagrant?!?!我想减少安装时间...
【解决方案2】:

全部取决于Vagrantfile中的设置

您有 modules 文件夹来放置所有 puppet 模块,manifests 文件夹与 site.pp 和 Vagrantfile 如下相同的位置。

给你一个我最常用的Vagrantfile的样本。

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "precise64"
  config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box "

  config.vm.provision :puppet do |puppet|
    puppet.module_path = "modules"
    puppet.manifests_path = "manifests"
    puppet.manifest_file  = "site.pp"
  end

  config.vm.define :www do |config|
     config.vm.host_name = "www.example.com"
     config.vm.network :private_network, ip: "192.168.1.2"
  end

  config.vm.define :db1 do |config|
     config.vm.host_name = "db1.example.com"
     config.vm.network :private_network, ip: "192.168.1.4"
  end

end

所以在运行vagrant up wwwvagrant up db1 之后,它将直接以puppet apply 启动框。你可以这样理解为puppet masterless

Vagrant 只需将在config.vm.box_url 中定义的 linux 映像作为一个简单的全新 linux 盒子运行,并将本地文件夹安装到新盒子的 /vagrant 文件夹,然后交给 puppet。如何配置服务器将取决于 site.pp(在每个节点上定义应用程序)和 puppet 模块。命令类似

puppet apply --modulepath /vagrant/module /vagrant/manifests/site.pp

因此,如果您的 puppet 模块没问题,您的新盒子将自动安装所有实用程序和产品。然后运行vagrant ssh wwwvagrant ssh db1,就可以登录并开始工作了。

您可以将带有moduelsmanifests 文件夹和Vagrantfile 的本地文件夹放入版本控制(例如git)。因此开发人员可以轻松地将 git 存储库克隆到自己的计算机上。

【讨论】:

  • 我不明白最后一部分是关于“puppet apply”的,因为我根本不熟悉 puppet。为什么我需要制作 2 个盒子:db1,www。你能解释一下吗,因为我现在只是在研究技术来制造我想要的东西,而且我不熟悉它。
  • 我提供了创建两个盒子的示例,然后您可以了解如何创建更多盒子。
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 2014-10-27
  • 2015-08-25
相关资源
最近更新 更多