2014-07-19 7 views
5

Ich mache einige Chef Rezept Tests mit Test-Küche auf Vagrant virtuals. Jedes Mal, wenn ich kitchen test starte, wird eine Kopie des Chef-Omnibus-Installers vom Standardplatz (Amazon) heruntergeladen. Das Problem ist, dass ich zu Hause bin und jeder dieser Downloads Zeit braucht und meine monatliche Netzwerknutzung erhöht.Ändern, wo Küche-Vagrant Downloads Koch von

Gibt es eine Möglichkeit, Test-Küche/Küche-Vagrant/was auch immer zu konfigurieren, so dass die Downloads von einem lokalen Cache kommen? Wenn ich einen Caching-Proxy-Webserver auf meinem PC einrichte, kann ich dann test-kitchen dazu bringen, die Vagrant-Instanz so zu konfigurieren, dass sie für die Koch-Downloads verwendet wird?

Antwort

1

Ja - das Verfahren in this gist dokumentiert, aber kurz gesagt:

Verwenden ERB in Ihren .kitchen.yml:

<% 
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 %> 

Die Anweisungen für einen Proxy verwendet polipo läuft, aber Sie ein Caching-Proxy verwenden könnten du würdest gerne.