Kitchen测试如何使用本地vm.box

mar*_*cks 5 chef-infra test-kitchen

每次我跑

kitchen test
Run Code Online (Sandbox Code Playgroud)

它下载了一个新的虚拟机框.有没有办法让它重复使用本地下载的盒子?

这是我的.kitchen.yml文件.

---
driver_plugin: vagrant
driver_config:
  require_chef_omnibus: true

platforms:
  - name: ubuntu-12.04

suites:
  - name: default
    run_list:
      - recipe[my-rails-server::default]
    attributes:
Run Code Online (Sandbox Code Playgroud)

终端输出:

Downloading Chef  for ubuntu...       
downloading https://www.opscode.com/chef/metadata?v=&prerelease=false&p=ubuntu&pv=12.04&m=x86_64       
to file /tmp/install.sh.1121/metadata.txt       
trying wget...       
url https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef_11.10.0-1.ubuntu.12.04_amd64.deb       
md5 21524287ed5631eb1c092ba7b589e968       
sha256  7a0a898b3682462620de80230c7a73730dde7131ca069e1d926f6faf07e4fa2f       
downloaded metadata file looks valid...       
downloading https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef_11.10.0-1.ubuntu.12.04_amd64.deb       
to file /tmp/install.sh.1121/chef_11.10.0-1.ubuntu.12.04_amd64.deb       
trying wget...       
Checksum compare with sha256sum succeeded.       
Installing Chef        
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 11

Test Kitchen基于.kitchen.yml配置创建自己的Vagrantfile.

因此,您必须vagrant box list在.kitchen.yml中指定您的框(应该已经可用于Vagrant,检查).在您的示例中,它将是:

platforms:
- name: ubuntu-12.04
  driver:
    box: centos-6.5-x86_64-minimal
Run Code Online (Sandbox Code Playgroud)

厨房将使用Vagrant可用的盒子,而无需下载.

您还可以指定其他Vagrant选项,例如

- name: centos-vagrant
  driver:
    provider: parallels
    box: centos-6.5-x86_64-minimal
    customize:
      memsize: 1024
      cpus: 2
Run Code Online (Sandbox Code Playgroud)

你可以看到更多例子.在我的Vagrant cookbook lemp-server或者Opscode的yum中.


set*_*rgo 2

如果“下载一个新的虚拟机盒”,您的意思是销毁并创建一个,是的,就是这样kitchen test。如果你想持久化实例,只需运行

kitchen converge
Run Code Online (Sandbox Code Playgroud)

如果您的意思是 Vagrant 正在从互联网下载一个新盒子,那么这可能是 Vagrant 中的一个错误。

  • 这是下载 Chef,而不是 Ubuntu 盒子 (2认同)