Vagrant 如何组织Bento-Veewee流浪项目
我正在尝试使用Bento、Veewee和Vagrant来自动化配置VM的过程。这种方法在简化开发、开发测试和QA过程方面有很大的潜力 (对于那些没有遇到过这些问题的人——Vagrant使在Virtual Box、VMWare、EC2等中快速设置/拆除虚拟机变得容易;Veewee简化了为Veewee构建基本盒的过程;Bento简化了定义基本盒的过程,然后使Veewee的操作自动化) 问题是,Bento、Veewee和Vagrant之间的相互关系令人困惑。许多定义文件和一些操作是跨层复制的,不清楚哪个层应该获得特定于我的项目的更新。Ruby环境也使这一点变得非常复杂——似乎Bento命令都需要从Bento目录运行,所以Box和其他文件最终会出现在不合逻辑的地方Vagrant 如何组织Bento-Veewee流浪项目,vagrant,veewee,bento,Vagrant,Veewee,Bento,我正在尝试使用Bento、Veewee和Vagrant来自动化配置VM的过程。这种方法在简化开发、开发测试和QA过程方面有很大的潜力 (对于那些没有遇到过这些问题的人——Vagrant使在Virtual Box、VMWare、EC2等中快速设置/拆除虚拟机变得容易;Veewee简化了为Veewee构建基本盒的过程;Bento简化了定义基本盒的过程,然后使Veewee的操作自动化) 问题是,Bento、Veewee和Vagrant之间的相互关系令人困惑。许多定义文件和一些操作是跨层复制的,不清楚哪
有人能为使用这些工具组合提供一个文件布局和工作流程吗?我正在回答我自己的问题,以获取我的发现
有一种方法可以让Bento、Veewee、Vagrant和Ruby以一种半理性的方式一起工作,但这很复杂。最好使用最新版本的Bento,用封隔器工具代替Veewee Packer或多或少做了Veewee做的事情,但做了一些重大改进,包括:
以下是一个简单的工作流程:
mkdir定制
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框添加自定义路径/to/BOXFILE
。这将在~/.vagrant.d/box/CUSTOM/VirtualBox中创建一个新的子目录,其中包含vagrant根据此框定义创建VM所需的文件mkdir~/测试;cd~/test
Vagrant init CUSTOM
vagrant up
vagrant ssh
还有很多其他有趣的东西要看re:Vagrant,比如特别的Vagrant aws插件,以及如何与Chef、Puppet或Ansible一起使用它。。。但既然我原来的问题得到了回答,我就到此为止。听起来你想用便当、流浪汉和/或Veewee来供应和执行箱子的QA测试。多亏了背后的人们和社区,一个工具已经存在,可以精确地完成您想要做的事情 它叫。您可以将其与OpsCode/Chef维护并使用Packer构建的预构建一起使用。如果您只想进行资源调配/测试,则无需使用VeeWee或Packer从头开始构建Vagrant Box或VM映像 Test Kitchen是一种测试工具,用于在一个或多个平台上单独执行配置代码(在、或通过
bootstrap.sh
或bootstrap.ps1
)。它使用了一个驱动程序插件体系结构,可以将其插入各种云提供商和虚拟化技术中,如、、、、等
$(/opt/chefdk/bin/chef shell-init $(basename $SHELL))
sudo /opt/chefdk/embedded/bin/gem install $kitchen_plugin_gem_name_here