【问题标题】:Changing where kitchen-vagrant downloads chef from改变厨房流浪者从哪里下载厨师
【发布时间】:2014-07-19 23:38:50
【问题描述】:

我正在使用 vagrant virtuals 上的 test-kitchen 进行一些 Chef 食谱测试。每次我运行kitchen test 时,它都会从标准位置(亚马逊)下载一份厨师综合安装程序的副本。问题是我在家,每次下载都需要时间,并且会增加我每月的网络使用量。

有没有办法配置 test-kitchen/kitchen-vagrant/whatever 以便下载来自本地缓存?如果我在我的 PC 上设置了缓存代理网络服务器,我可以让 test-kitchen 配置 vagrant 实例以将其用于 Chef 下载吗?

【问题讨论】:

    标签: vagrant chef-infra test-kitchen


    【解决方案1】:

    是的 - 该过程记录在 this gist 中,但简而言之:

    在您的.kitchen.yml 中使用 ERB:

    <%
    require 'socket'
    
    def local_ip
      @local_ip ||= begin
        # turn off reverse DNS resolution temporarily
        orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true
    
        UDPSocket.open do |s|
          s.connect '64.233.187.99', 1
          s.addr.last
        end
      ensure
        Socket.do_not_reverse_lookup = orig
      end
    end
    
    def local_port ; 8123 ; end
    def http_proxy_url ; "http://#{local_ip}:#{local_port}" ; end
    
    def proxy_running?
      socket = TCPSocket.new(local_ip, local_port)
      true
    rescue SocketError, Errno::ECONNREFUSED,
      Errno::EHOSTUNREACH, Errno::ENETUNREACH, IOError
      false
    rescue Errno::EPERM, Errno::ETIMEDOUT
      false
    ensure
      socket && socket.close
    end
    %>
    ---
    <% if proxy_running? %>
    driver:
      http_proxy: <%= http_proxy_url %>
      https_proxy: <%= http_proxy_url %>
      provision_command: "env http_proxy=<%= http_proxy_url %> bash -c 'curl -L http://www.getchef.com/chef/install.sh | bash'"
    
    provisioner:
      chef_omnibus_url: http://www.getchef.com/chef/install.sh
    <% end %>
    

    运行代理的说明使用 polipo,但您可以使用任何您喜欢的缓存代理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多