我正在尝试使用Bento、Veewee和Vagrant来自动化提供VM的过程。这种方法对于简化开发、开发测试和QA过程有很大的希望。
(对于那些没有遇到这些问题的人-- Vagrant使在Virtual、VMWare、EC2等中快速建立/拆卸VM变得容易;Veewee简化了为Veewee构建基础框的过程;Bento简化了定义基框的过程,然后自动化了Veewee的操作)。
问题是,本托、维维和瓦格兰特之间的相互关系令人困惑。许多定义文件和一些操作都是跨层重复的,并且不清楚哪一层应该得到特定于我的项目的更新。Ruby环境也使这件事复杂化了很多--似乎所有的Bento命令都需要从Bento目录中运行,所以lot &其他文件最终会出现在不合逻辑的地方。
有人能建议使用这种工具组合的文件布局和工作流吗?
发布于 2013-10-23 19:49:32
我在回答我自己的问题来捕捉我的发现。
有一种方法可以让Bento、Veewee、Vagrant和Ruby以一种半理智的方式一起工作,但这很复杂。最好使用最新版本的Bento,用封隔器工具代替Veewee。
Packer或多或少地做了Veewee做的事情,但是做了一些很大的改进,包括:
下面是一个简单的工作流:
mkdir CUSTOM。cp centos-6.4-x86_64.json centos-6.4-x86_64-CUSTOM.json。{{timestamp}}以在文件名中添加Unix时间戳--帮助使文件名成为唯一。我使用的方法如下:
"provisioners": [
{
"execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E bash '{{.Path}}'",
"scripts": [
"scripts/common/sshd.sh",
"scripts/common/vagrant.sh",
"scripts/common/vmtools.sh",
"scripts/CUSTOM/reso_1024x768.sh",
"scripts/CUSTOM/prompt_cwd.sh",
"scripts/CUSTOM/standard_dirs.sh",
"scripts/CUSTOM/standard_utils.sh",
"scripts/CUSTOM/python27.sh",
"scripts/CUSTOM/supervisord.sh",
"scripts/CUSTOM/ruby.sh",
"scripts/centos/cleanup.sh",
"scripts/common/minimize.sh"
],
"type": "shell"
}注意,我的自定义脚本都出现在清理和最小化步骤之前--这很重要。
packer build -only=virtualbox centos-6.4-x86_64-CUSTOM.json。如果以前还没有下载过VirtualBox来宾插件和基本操作系统的磁盘映像(ISO),它们现在就会下载;这些文件很大,所以这一步可能需要一段时间。vagrant box add CUSTOM path/to/BOXFILE。这将在~/ .vagrant.d / box / CUSTOM / VirtualBox中创建一个新的子目录,其中Vagrant需要从这个框定义创建VM。mkdir ~/test; cd ~/test。vagrant init CUSTOM初始化一个Vagrant项目vagrant upvagrant ssh此时,您正在正常使用Vagrant,而Bento / Packer不再涉及--他们的联合工作只是创建一个基箱,一旦在Vagrant注册,Vagrant就会单独存在。
还有很多其他有趣的事情要看:流浪汉,像特殊的流浪者-aws插件,以及如何使用它与厨师,木偶或Ansible .不过,既然我原来的问题已获答覆,我便会在此停止发言。
发布于 2015-10-22 17:15:48
听起来你想要应用Bento,Vagrant和/或Veewee来提供和执行盒子上的QA测试。多亏了厨师背后的人们和社区,已经有了一个工具来完成您想要做的事情!
它叫test-kitchen。您可以将它与预构建的本托大厨盒一起使用,OpsCode/Chef维护它,并使用Packer构建它。如果您只想进行配置/测试,就不需要从头开始使用VeeWee或Packer构建Vagrant或VM映像。
Test是一种测试工具,用于在一个或多个平台上单独执行供应代码(在厨师、可抗、木偶、SaltStack或Bash / Powershell中通过bootstrap.sh或bootstrap.ps1)。它使用驱动程序插件架构,允许您将其插入各种云提供商和虚拟化技术中,如亚马逊EC2、蓝盒、CloudStack、数字海洋、Rackspace、OpenStack、流浪汉、Docker、LXC集装箱、VMWare VSphere、Google计算引擎、Azure等等。还有"busser“测试插件,允许对多个测试框架(包括蝙蝠、shUnit2、RSpec、Serverspec、Shpec、毒理、Nose2、MiniTest、黄瓜、AnsibleSpec )提供可插拔的支持,并创建其他测试框架。
对于Chef、Puppet和Ansible工作流,支持菜谱依赖解析器工具(如伯克托、图书馆员-主厨、图书馆员-木偶、不稳定星系、图书管理员 ),或者您只需拥有cookbooks/目录,Test就知道该做什么。如果您已经在使用Chef社区菜谱,那么Test集成测试已经包含在许多MySQL、nginx、Chef和runit菜谱中。
它非常灵活,对于您的用例,您可能可以通过选择正确的宝石插件集来让它做您想做的事情。因为它来自厨师社区,你可能会有最好的经验,使用它的厨师食谱,Vagrant,或者ServerSpec或蝙蝠测试插件。然而,作为一个CI & QA测试工具,它正以自己的方式在许多可用的社区插件中获得支持。
如果您有兴趣了解其中的内容,只需在RubyGems中搜索kitchen-或busser-以获得更多选项即可。
如果你对Ruby,Chef,或者这一切都很陌生.一种简单的入门方法是安装ChefDK,包括test-kitchen、knife、Berkshelf和basic /Chef.io支持的测试工具。
一旦您有了这些功能,并且如果您感到冒险,或者想尝试使用其他可插拔的供应程序、驱动程序和busser插件,您可以使用以下命令将这些插件安装到ChefDK环境中(例如Mac / Unix):
$(/opt/chefdk/bin/chef shell-init $(basename $SHELL))
sudo /opt/chefdk/embedded/bin/gem install $kitchen_plugin_gem_name_here如果您想使用我为测试Ansible剧本/角色而创建的演示存储库,请查看抗TDD
https://stackoverflow.com/questions/19545720
复制相似问题