Смена места, откуда бродяга-кухонька загружает шеф-повара

Я провожу тестирование рецептов шеф-повара, используя тестовую кухню на бродячих виртуальных машинах. Каждый раз, когда я запускаю kitchen test, он загружает копию установщика омнибуса шеф-повара из стандартного места (Amazon). Проблема в том, что я нахожусь дома, и каждая из этих загрузок требует времени и увеличивает ежемесячное использование сети.

Есть ли способ настроить test-kitchen/kitchen-vagrant/что угодно, чтобы загрузки происходили из локального кеша? Если я настрою кеширующий прокси-сервер на своем ПК, могу ли я заставить test-kitchen настроить бродячий экземпляр, чтобы использовать его для загрузки шеф-повара?


person Stephen C    schedule 19.07.2014    source источник


Ответы (1)


Да, процесс задокументирован в этой сути, но вкратце:

Используйте ERB в своем .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 %>

В инструкциях по запуску прокси-сервера используется polipo, но вы можете использовать любой кэширующий прокси-сервер.

person sethvargo    schedule 19.07.2014