Blend day's Note

思い立ったことをメモする

Vagrant で Proxy と戦う

この記事は、Kogakuin Univ Advent Calender 2015 の 4日目の記事のはずです。

事の始まり

VirtualBox を用いて、開発環境の自動構築を行ってくれる "Vagrnat" というソフトを知って早10ヶ月。(2/11に初めて知った (※TwiterのDMを遡った顔))

そこそこ使ってきたので、そろそろ色々な知識をまとめようかと思ったわけで。

Vagrant とは?

いつぞやに発表した資料を(今更)上げたので、そちらを参照に↓

Vagrant で困ったこと

Vagrantに限らず、外部ネットワーク(ex.Google...etc)に接続するときなどは必ず引っかかるものがあります。

そう、Proxyです。

Vagrant で Proxy と戦う

タイトルのあれです。

Vagrant plugin 方式

実際に私が戦ってる方法がこちら

$ sudo vagrant plugin install vagrant-proxyconf

Vagrantプラグイン vagrant-proxyconf を使ってます。

これは、大方の通信に必要なプロキシ (bashのhttp_proxy , パッケージ管理のproxy設定など)に自動的にProxy設定をしてくれます。便利。

設定方法は、 Vagrantfile に、次のものを追記。

Vagrant.configure("2") do |config|
 # ↓yes proxy statement
 config.proxy.http     = "http://<your proxy address>"
 config.proxy.https    = "https://<your proxy address>"
 
 # ↓no proxy statement
  #config.proxy.http     = ""
  #config.proxy.https    = ""
end

プロキシ環境外では、コメントアウトを切り替えれば変わります。

この方式の利点

利点もクソもなくて、これがないと 仕事にならない

仕事になる前

f:id:kayo_tozaki:20170102184031p:plain

仕事ができるようになった後

f:id:kayo_tozaki:20170102184039p:plain

欠点

Pluginを入れるのに、一旦Proxy環境外に出ないといけないこと。本末転倒感否めないけど気にしない。

他の方法??

プラグイン入れるのがめんどくさい(そもそも本末t(ry)) 場合は、他の方法があることを先日知りました。

それは、network設定にprivete_networkを追加することです。

config.vm.network "private_network", ip: "192.168.33.10"

通常、Vagrantfileでコメントアウトされているのですが、
これを有効化すれば、おkです。

前提条件として、ホストOSでプロキシ設定をする必要があります。

総括

両方共、Vagrantで扱う分にはとても便利。いちいちProxy設定するのが(個人的に)面倒くさいのでおすすめです。

ネットワーク設定別、おすすめのプロキシ設定方法

private_network

ホストのプロキシ設定が反映されるので、問題なく使えるはずです。 もし、ゲストに対してアクセスしたい場合は、forwarded_portを設定すれば問題なく使えるはず。

public_network

プラグインの方をおすすめします。圧倒的に楽。

と、いうわけでこんな感じです。