2013-06-17 10 views
5

私はVagrantでいくつかのユースケースに取り組んでおり、企業の代理を優雅に処理するための優れた解決策を考え出すのは困難でした。私の最初のVagrantfileでは、私は明らかに 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" 

はapt.conf

のために、この設定になってしまった、私はバージョン管理下でそれを維持することを計画しておりますので、私のユーザー/パスワードがVagrantfileに格納されないようにしたいです。私の次の試みは、ハイラインプラグインを使用してVagrantfileからプロンプトを出すことでしたが、init(この設定が適用されるとき)の間だけでなく、すべての変更コマンドでプロンプトが表示されます。

私はこれについて間違った方法をしていますか?もしそうならば、Vagrantモデルに適したプロキシ設定を扱うための他のオプションはどれですか?

答えて

6

あなたは次のようにこれを行うことができます:

proxy.ymlというファイルを作成し、それがコミットされないように、あなたの.gitignoreに追加します。

は、その後、あなたVagrantfileあなたはこのようなものかもしれない内側:

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 

proxy.ymlの内容は次のようになりますと

vagrant plugin install vagrant-proxyconf 

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

ありがとう、私はそのアプローチを試して、それは大丈夫に動作しているようです。 proxy.ymlファイルがなければ私はそれをプロンプトすることを検討しているが、私はヘッドレスになる連続的な統合プロセスのこの部分を作ることを考えているので、私はまだ議論している。 –

1

あなたはvagrant-proxyconfプラグインを使用することができますおそらくすべてのVagraに同じ設定を使用したいと思うでしょうあまりにHTTPSのURIと、デフォルトで同じプロキシを

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

アプトの用途が、そうあなたはするべきでありません:NT VMは、あなたが(自分のマシンにローカルである)〜/ .vagrant.d/Vagrantfileに設定を置くことができますあなたのケースでそれを指定する必要はありません。

その他のオプションは、環境変数で設定を渡すことです。コマンドライン、〜/ .bashrcの等:

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

に例えばプラグインもないだけアプトのために、全体のVM用のプロキシを設定することができます。

関連する問題