Chef infra 如何让TestKitchen缓存chef客户端RPM?

Chef infra 如何让TestKitchen缓存chef客户端RPM?,chef-infra,test-kitchen,Chef Infra,Test Kitchen,每次我在创建一个盒子后第一次运行kitchen verify时,它都需要下载chef客户端。例如: downloaded metadata file looks valid... downloading https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.4.1-1.el6.x86_64.rpm to file /tmp/install.sh.2340/chef-12.4.1

每次我在创建一个盒子后第一次运行kitchen verify时,它都需要下载chef客户端。例如:

 downloaded metadata file looks valid...
       downloading https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.4.1-1.el6.x86_64.rpm
         to file /tmp/install.sh.2340/chef-12.4.1-1.el6.x86_64.rpm

我的互联网连接很差,所以这需要很长时间。有没有一种简单的方法来缓存RPM,这样我就不必每次都下载它了?

我无法通过Kitchen缓存RPM,但我通过自己下载文件并将其提供给Kitchen解决了这个问题

  • 下载RPM文件
  • 将它放在
    .kitchen.yml
    旁边的本地文件夹中。e、 g.
    chef包装
  • Kitchen将厨师包下载到
    /tmp
    目录中,因此在
    .Kitchen.yml
    厨师包
    文件夹中设置一个同步文件夹。例如:
示例
.kitchen.yml

driver:
  name: vagrant
  vagrantfiles:
    - Vagrantfile
  synced_folders:
    - ["./chef-pkgs", "/tmp/chef-pkgs"]

provisioner:
  name: chef_zero
  require_chef_omnibus: 12.4.1
  chef_omnibus_url: file:///tmp/chef-pkgs/install.sh
  • chef pkgs
    文件夹中创建一个
    install.sh
    文件,从缓存位置安装RPM
示例
install.sh

#! /bin/bash
sudo rpm -ivh /tmp/chef-pkgs/chef-12.4.1-1.el6.x86_64.rpm
我从这篇有用的博客文章中得到了想法和代码:


我将
chef pkgs
文件夹添加到我的
.gitignore
文件中。

可能需要注意的是,当前的厨房版本现在将此选项视为不推荐的选项,例如,运行较新的chef工作站将为您提供chefdk 3.7.*与1.24.*捆绑-因此您可能会面临类似的输出:

-----> Starting Kitchen (v1.24.0)
$$$$$$ Deprecated configuration detected:
chef_omnibus_url
Run 'kitchen doctor' for details.
在下面了解更多信息。到目前为止,我无法通过任何方式从共享到vm中的文件安装chef,但仍然可以选择覆盖元数据url并通过“本地”http提供服务