2013-06-17 18 views
5

Pracuję nad kilkoma przypadkami użycia z Vagrant i miałem trudności z wymyśleniem dobrego rozwiązania do obsługi korporacyjnych serwerów proxy w elegancki sposób. W moim początkowym Vagrantfile, skończyło się z tego config dla apt.confCzy istnieje sposób zabezpieczenia proxy/haseł dla konfiguracji Vagrant?

user = 'me' 
pwd = 'mypwd'  
config.vm.provision :shell, :inline => "echo 'Acquire::http::Proxy \"http://#{user}:#{pwd}@proxy.corp.com:3210\";' >> /etc/apt/apt.conf" 
config.vm.provision :shell, :inline => "echo 'Acquire::https::Proxy \"http://#{user}:#{pwd}@proxy.corp.com:3210\";' >> /etc/apt/apt.conf" 
config.vm.provision :shell, :inline => "echo 'Acquire::socks::Proxy \"http://#{user}:#{pwd}@proxy.corp.com:3128\";' >> /etc/apt/apt.conf" 

Oczywiście, chcę uniknąć mój użytkownik/hasło zapisane w Vagrantfile ponieważ Ja planuje na utrzymanie go pod kontrolą wersji. Moją kolejną próbą było podpowiedzenie z pliku Vagrantfile za pomocą wtyczki highline, ale powoduje to pojawianie się monitu podczas każdej komendy vagrant, a nie tylko podczas init (kiedy ta konfiguracja miałaby zastosowanie).

Czy podchodzę do tego w niewłaściwy sposób? Jeśli tak, to jakie inne opcje są dostępne, aby poradzić sobie z konfiguracją proxy, która dobrze pasuje do modelu Vagrant?

Odpowiedz

6

Można to zrobić w następujący sposób:

Utwórz plik o nazwie proxy.yml i dodać go do .gitignore tak, że nie zostanie zatwierdzona.

Następnie wewnątrz Vagrantfile można mieć coś takiego:

if File.exist?("proxy.yml") 
    require 'yaml' 
    proxy = YAML::load(File.open('proxy.yml')) 
    config.vm.provision :shell, :inline => "echo 'Acquire::http::Proxy \"http://#{proxy['user']}:#{proxy['pass']}@proxy.corp.com:3210\";' >> /etc/apt/apt.conf" 
end 

Zawartość proxy.yml byłoby:

user: "username" 
pass: "password" 
+0

Dzięki, próbowałem tego podejścia i wygląda na to, że działa dobrze. Zastanawiam się nad pytaniem, czy plik proxy.yml tego nie dotyczy, ale wciąż debatuję nad tym, ponieważ myślę o zrobieniu tej części procesu ciągłej integracji, który byłby bez głowy. –

1

Można użyć vagrant-proxyconf wtyczki:

vagrant plugin install vagrant-proxyconf 

jako prawdopodobnie chcesz użyć tych samych ustawień dla wszystkich Vagra nt maszyny wirtualne, które można umieścić konfigurację do ~/.vagrant.d/Vagrantfile (który jest lokalny do komputera):

config.apt_proxy.http = "http://me:[email protected]:3210" 

APT używa domyślnie tego samego serwera proxy https URI zbyt, więc powinnam Musisz to określić w swoim przypadku.

Inną opcją jest przekazanie konfiguracji za pomocą zmiennych środowiskowych. Na przykład w wierszu polecenia, ~/.bashrc itp .:

export VAGRANT_APT_HTTP_PROXY="http://me:[email protected]:3210" 

Wtyczka może również skonfigurować proxy dla całego VM, nie tylko dla Apt.

Powiązane problemy