2013-06-17 9 views
5

Sto lavorando a vari casi d'uso con Vagrant e ho avuto difficoltà a trovare una buona soluzione per gestire i proxy aziendali in modo elegante. Nel mio primo Vagrantfile, ho finito con questa configurazione per apt.confC'è un modo per proteggere utente/password proxy per le configurazioni di 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" 

Ovviamente, voglio evitare di avere il mio utente/password memorizzata nel Vagrantfile poiché sto pensando di tenerlo sotto controllo di versione. Il mio prossimo tentativo è stato quello di richiamare dall'interno del Vagrantfile usando il plugin highline, ma questo fa sì che il prompt appaia durante ogni comando vagrant e non solo durante init (quando questa configurazione si applica).

Sto andando su questo nel modo sbagliato? In tal caso, quali altre opzioni sono disponibili per gestire la configurazione proxy che si adatta bene al modello di Vagrant?

risposta

6

si potrebbe fare questo nel modo seguente:

creare un file chiamato proxy.yml e aggiungerlo al tuo .gitignore in modo che non venga commesso.

Poi all'interno del vostro Vagrantfile si potrebbe avere qualcosa di simile:

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 

Il contenuto di proxy.yml sarebbero:

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

Grazie, ho provato questo approccio e sembra funzionare bene. Sto prendendo in considerazione l'eventualità di richiedere se il file proxy.yml non lo fa, ma lo sto ancora discutendo, dal momento che sto pensando di rendere questa parte di un processo di Integrazione Continua che sarebbe senza testa. –

1

È possibile utilizzare vagrant-proxyconf plugin:

vagrant plugin install vagrant-proxyconf 

Come probabilmente vorrai usare le stesse impostazioni per tutti i Vagra nt macchine virtuali, si può mettere la configurazione a ~/.vagrant.d/Vagrantfile (che è locale alla macchina):

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

utilizza APT per default lo stesso proxy HTTPS con URI troppo, quindi non dovreste Non è necessario specificarlo nel tuo caso.

Un'altra opzione è passare la configurazione con le variabili di ambiente. Ad esempio, su linea di comando, ~/.bashrc, ecc .:

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

Il plugin può anche configurare proxy per l'intera VM, non solo per le Apt.

Problemi correlati