流浪的工作流程

时间:2014-12-08 15:34:05

标签: vagrant chef puppet

您好我正在尝试了解运行时究竟做了什么

vagrant up

我的理由是,在我的情况下,我们需要安装很多实用程序。 即版本控制工具,构建工具,ide等... 这花费了很多时间。

所以实际上我想要一个'框'使用所有这些工具。 在我拥有干净的环境并获得所有工具之后,我想为我们的产品制作CI。

如果我将重新安装所有实用程序,则需要花费大量时间。所以我真正需要的只是安装和测试我们的产品。 我该怎么处理呢? 创建我自己的盒子?当我们创建CI时,命令会重新安装所有实用程序吗?

我真正需要的是两个过程:

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

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

我怎样才能实现这一目标?

2 个答案:

答案 0 :(得分:1)

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

暂停或暂停虚拟机时,下次执行vagrant up时,它只会重新启动虚拟机。它将安装或尝试再次配置它。

您可以使用vagrant up --provisionvagrant provision强制执行此操作。

这通常适用于开发环境。

在CI环境中,可能无法让VM已经配置,从而迫使您每次都运行配置步骤。使用已安装的工具,您可以实现所需的包装自己的盒子,基本上可以创建黄金或基本图像。

请特别小心,以便CI环境与您的生产环境没有区别。

答案 1 :(得分:0)

全部取决于Vagrantfile

中的设置

你有modules个文件夹将所有木偶模块,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文件夹,然后移交给木偶。如何配置服务器将依赖于site.pp(在每个节点上定义应用程序)和puppet模块。该命令与

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

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

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