【问题标题】:How do I get Test Kitchen to cache the chef-client RPM?如何让测试厨房缓存厨师客户端 RPM?
【发布时间】:2019-03-29 18:33:04
【问题描述】:

每次创建盒子后第一次运行厨房验证时,都需要下载厨师客户端。例如:

 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,这样我就不必每次都下载它了?

【问题讨论】:

    标签: chef-infra test-kitchen


    【解决方案1】:

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

    • 下载 RPM 文件
    • 将其放在您的.kitchen.yml 旁边的本地文件夹中。例如chef-pkgs
    • Kitchen 将厨师包下载到/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
    

    我从这篇有用的博客文章中得到了这个想法和代码:http://erichelgeson.github.io/blog/2014/09/23/simple-chef-package-cache/

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

    【讨论】:

      【解决方案2】:

      请务必注意,当前的厨房版本现在将此选项视为已弃用,例如运行一个相当新的厨师工作站会为您提供与 1.24.* 捆绑在一起的 chefdk 3.7.* - 所以您可能会遇到类似的输出:

      -----> Starting Kitchen (v1.24.0)
      $$$$$$ Deprecated configuration detected:
      chef_omnibus_url
      Run 'kitchen doctor' for details.
      

      ChefRFC901 下了解更多信息。到目前为止,我无法通过任何方式从共享到 vm 的文件中安装 chef,但仍然可以选择覆盖元数据 url 并通过“本地”http 提供服务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-06
        • 1970-01-01
        相关资源
        最近更新 更多