我如何让 Test Kitchen 缓存 chef-client RPM?
How do I get Test Kitchen to cache the chef-client RPM?
我每次运行kitchen创建盒子后第一次验证,都需要下载chef-client。例如:
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
旁边的本地文件夹中。例如chef-pkgs
- Kitchen 将 chef 包下载到
/tmp
目录,因此在您的 .kitchen.yml
中设置一个与 chef-pkgs
文件夹同步的文件夹。示例:
示例.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
我从这个有用的博客中得到了想法和代码 post:http://erichelgeson.github.io/blog/2014/09/23/simple-chef-package-cache/
我将 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.
在 ChefRFC901 下了解更多信息。截至目前,我无法通过任何方式从共享到虚拟机的文件中安装 chef,但仍然可以选择覆盖元数据 url 并通过 "local" http 提供服务。
我每次运行kitchen创建盒子后第一次验证,都需要下载chef-client。例如:
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
旁边的本地文件夹中。例如chef-pkgs
- Kitchen 将 chef 包下载到
/tmp
目录,因此在您的.kitchen.yml
中设置一个与chef-pkgs
文件夹同步的文件夹。示例:
示例.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
我从这个有用的博客中得到了想法和代码 post:http://erichelgeson.github.io/blog/2014/09/23/simple-chef-package-cache/
我将 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.
在 ChefRFC901 下了解更多信息。截至目前,我无法通过任何方式从共享到虚拟机的文件中安装 chef,但仍然可以选择覆盖元数据 url 并通过 "local" http 提供服务。