てきとうなさいと べぇたばん

Vagrantを触る

開発環境をサクッと作りたい

開発環境をOS問わずにサッと作りたいと感じるようになったので、Vagrantを触ることにした。

さんこう

練習

$ vagrant init precise32 http://files.vagrantup.com/precise32.box
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
tekitoh-no-MacBook-Air:ubuntu tekitoh$ ls
Vagrantfile

vagrant upしてみる

$ vagrant up
$ vagrant ssh
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/
New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 06:22:31 2012 from 10.0.2.2
vagrant@precise32:~$

このubuntuは12.04だし、いらないので削除

$ vagrant destroy
Are you sure you want to destroy the 'default' VM? [y/N] y
[default] Forcing shutdown of VM...
[default] Destroying VM and associated drives...

box

予めローカル上に保存しておくこともできる。

$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
tekitoh-no-MacBook-Air:vagrant_getting_started tekitoh$ ls
Vagrantfile
tekitoh-no-MacBook-Air:vagrant_getting_started tekitoh$ vagrant box add precise32 http://files.vagrantup.com/precise32.box
Downloading or copying the box...
Extracting box...te: 2850k/s, Estimated time remaining: 0:00:04)
The box you're attempting to add already exists:

Name: precise32
Provider: virtualbox

そうだ、すでにあるので別にいらないんだった。

Vagrant.configure("2") do |config|
  config.vm.box = "precise32"
end

$ vagrant up
$ vagrant ssh

これで入れました。

共有

ホスト側とvagrant側とのファイルの共有ができる。

$ ls /vagrant/
Vagrantfile
$ touch /vagrant/hoge
vagrant@precise32:~$ ls /vagrant/
hoge  Vagrantfile

hogeというファイルを作る。ホスト側で見てみる。

$ ls
Vagrantfile hoge

hogeファイルができてた。ホスト側で自分のエディタを使えるというメリットがある。

プロビジョニング

Vagrantfile

config.vm.provision :shell, :path => "bootstrap.sh"

bootstrap.shで、pythonの開発環境を整備する。今回はPython プロフェッショナルプログラミングで必要な環境を整える。

#!/usr/bin/env bash

apt-get install -y build-essential
apt-get install -y libsqlite3-dev
apt-get install -y libreadline6-dev
apt-get install -y libgdbm-dev
apt-get install -y zlib1g-dev
apt-get install -y libbz2-dev
apt-get install -y sqlite3
apt-get install -y tk-dev
apt-get install -y zip

apt-get install -y python-dev
apt-get install -y python-distribute
apt-get install -y python-pip
pip install mercurial

プロビジョニングを実行させる

$ vagrant provision