【问题标题】:Kitchen test how to use local vm.box厨房测试如何使用本地vm.box
【发布时间】:2018-11-14 07:32:50
【问题描述】:

每次跑步

kitchen test

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

这是我的 .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:

终端输出:

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        

【问题讨论】:

  • 平台:-名称:ubuntu-12.04 驱动程序:box:ubuntu-12.04 box_url:file:///home/user/doenloads/ubuntu-12.04.box

标签: chef-infra test-kitchen


【解决方案1】:

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

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

platforms:
- name: ubuntu-12.04
  driver:
    box: centos-6.5-x86_64-minimal

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

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

- name: centos-vagrant
  driver:
    provider: parallels
    box: centos-6.5-x86_64-minimal
    customize:
      memsize: 1024
      cpus: 2

您可以查看更多示例,例如。在我的 Vagrant 食谱 lemp-server 或 Opscode 的 yum 中。

【讨论】:

  • 感谢 marcin-r 这是我缺少的驱动程序/框线
  • OP 更新了原始问题,但这正是我想要的。谢谢!
【解决方案2】:

如果通过“下载一个新的 VM 盒”,您的意思是销毁并创建一个,是的,这就是 kitchen test 所做的。如果要持久化实例,只需运行

kitchen converge

如果你的意思是 Vagrant 正在从 Internet 下载一个新盒子,那么这很可能是 Vagrant 中的一个错误。

【讨论】:

  • 是的,Vagrant 每次运行厨房测试时都会下载一个新盒子。
  • 下载的是 Chef,而不是 Ubuntu 机器
【解决方案3】:

使用以下命令

exec kitchen converge ubuntu

converge 将对实例进行正则表达式

【讨论】:

    【解决方案4】:

    在你的 kitchen.yml 中使用以下定义来禁用盒子更新

    platforms:
      - name: centos-7
        driver:
          box: bento/centos-7
          box_check_update: false
    

    该框是您主机中本地可用的 vagrant 框。运行以下命令以获取可用框的列表:

    $ vagrant box list
    bento/centos-6.7           (virtualbox, 2.2.7)
    bento/centos-7             (virtualbox, 201808.24.0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 2021-04-21
      相关资源
      最近更新 更多