您好我正在尝试了解运行时究竟做了什么
vagrant up
我的理由是,在我的情况下,我们需要安装很多实用程序。 即版本控制工具,构建工具,ide等... 这花费了很多时间。
所以实际上我想要一个'框'使用所有这些工具。 在我拥有干净的环境并获得所有工具之后,我想为我们的产品制作CI。
如果我将重新安装所有实用程序,则需要花费大量时间。所以我真正需要的只是安装和测试我们的产品。 我该怎么处理呢? 创建我自己的盒子?当我们创建CI时,命令会重新安装所有实用程序吗?
我真正需要的是两个过程:
1.为我的虚拟机安装实用程序。 (每月一次)
2.测试我们的产品(每次提交\推送到版本控制)
我怎样才能实现这一目标?
答案 0 :(得分:1)
第一次,vagrant up
将为您创建一个新的VM,如果需要,可以提取框图像,并且它将为您配置您在Vagrantfile中配置的内容。在配置配置中,您可以告诉Chef或Puppet安装所需的所有实用程序和工具。
暂停或暂停虚拟机时,下次执行vagrant up
时,它只会重新启动虚拟机。它将不安装或尝试再次配置它。
您可以使用vagrant up --provision
或vagrant 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 www
或vagrant 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 www
或vagrant ssh db1
,您可以登录并开始工作。
您可以将包含moduels
,manifests
文件夹和Vagrantfile
的本地文件夹添加到版本控制(例如git)。因此开发人员可以轻松地将git存储库克隆到自己的计算机上。