開発環境作るのにVagrantを使ったら非常にコレダ感になった話

Dockerでvsftpdだけを動かす開発環境作ってみたらなんか違うとなった話の続編です。
開発環境のFTPサーバーをboot2dockerでコンテナとして作ろうとしたらなんかコレジャナイ感じになった - まーぽんって誰がつけたの?

Vagrantで立てた仮想サーバーにファイルをアップロードしたいがためにFTPサーバーを立てているのではなく、FTPするバッチシステムがあるためFTPサーバーを作ってます

Vagrantでやってみたら、まさにこれだー!!となりました。

Vagrantなんとなくいやだなーと思ってたのはrubyが必要なところ。rubyはいいんだけど、rubyのバージョン管理するのにrbenvとか入れなきゃいけないからやだなーと思ってたけど、Vagrantのパッケージに組み込まれてるんですね!
勝手に勘違いしてました。こりゃいいぞ!

あと、出始めの頃ってboxがあんま充実してないなーと思っててそのまま手つかずになっちゃってたけど、今ってめっちゃ充実してるんですね。bentoってもしかして弁当?

boxのサイズも小さいし、最高っす!

$ du -sh centos-6-x64
404M    centos-6-x64

あと、chef使わなくてもshellでいけちゃうのもいいかも。本当はシェフにならなきゃいけないんだろうけど、とりあえずさらっとやりたい。助かる。

ということでVagrantfileとセットアップのshでできた!

Vagrantfileとsetup.shはこんな感じ。
Dockerだとめちゃ苦労したけど、Vagrantだとさくっとできました!

  • Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "centos-6-x64"

  # The url from where the 'config.vm.box' box will be fetched if it
  # doesn't already exist on the user's system.
  config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.33.10"

  config.vm.provision "shell" do |s|
    s.path = "setup.sh"
    s.args = "http://proxyuser:password@proxyhost:port"
  end
end
  • setup.sh
#!/bin/bash

# set proxy
PROXY_PROFILE=/etc/profile.d/proxy.sh
rm -f ${PROXY_PROFILE}
touch ${PROXY_PROFILE}
echo "export http_proxy=$1"  >> ${PROXY_PROFILE}
echo "export https_proxy=$1" >> ${PROXY_PROFILE}
source ${PROXY_PROFILE}

# install vsftpd
yum -y install vsftpd
chkconfig vsftpd on

# start vsftpd
/etc/init.d/vsftpd start

これでvagrant upで起動、ftp接続もすんなりOK!
192.168.33.10がホストオンリーネットワークになってるから、FTPのパッシブモードでもアホみたいなポートフォワーディングの設定もしなくてもOK!!
DockerとVagrantの使い分けはもうちょっとVagrantのことが分かってからでいいかな。
まずはDockerじゃなくてVagrantを使って開発環境を色々作ってみようと思った。(今更だけど)