Skip to content

Instantly share code, notes, and snippets.

@k1LoW
Last active December 20, 2015 16:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save k1LoW/dda2f213d4dfae35db4b to your computer and use it in GitHub Desktop.
Save k1LoW/dda2f213d4dfae35db4b to your computer and use it in GitHub Desktop.

TechTouch #0b10110 for Fusic

Vagrantハンズオン

Vagrantとは何か?

簡単に言うと仮想化ソフトウェアパッケージ(VirtualBox、VMware、EC2、LXCなど)の操作をCLIから便利に操作するツール。

個人的には、「GUIな人にはあまり利便性や恩恵はわからないかも」と思っています。

Vagrantの何がいいの?

  • CLIから仮想化環境を操作できる
  • boxという仮想マシンのイメージファイルを抽象的に操作できる機構があり、boxからの新規環境の構築が楽、早い
  • ChefやAnsibleなどのプロビジョニングツールとの連携ができる

インストール(for Mac)

VagrantのページからVagrant for Windowsをダウンロードしインストールします。

インストール(for Windows)

以下は、基本的に参考URLの流れに沿って行います。(一部省略しています)

Vagrant

VagrantのページからVagrant for Windowsをダウンロードしインストールします。

VagrantのインストールでMinttyもインストールされています。 C:\HashiCorp\vagrant\embedded\bin\mintty.exeのショートカットを作成し、 そのショートカットのリンク先(T)/bin/bash --loginを追加します。

以降のターミナル操作は全てMintty経由で行います。

MinGW (Minimalist GNU for Windows)

Vagrantに同梱されているMinGWを最新のものにします(主にmingw-getコマンドを利用するため)。

MinGWをインストールし、 Vagrantに同梱されているMinGWを上書きします

$ cp -r /c/MinGW/. /c/HashiCorp/vagrant/embedded/
$ cd /c/HashiCorp/vagrant/embedded/var/lib/mingw-get/data/
$ cat defaults.xml|(rm defaults.xml;sed 's/%R\/msys\/1.0/\/HashiCorp\/vagrant\/embedded/g' > defaults.xml)
$ cat profile.xml|(rm profile.xml;sed 's/%R\/msys\/1.0/\/HashiCorp\/vagrant\/embedded/g' > profile.xml)

mingw-getコマンドで必要なパッケージをインストールします

$ mingw-get update
$ mingw-get upgrade
$ mingw-get install msys-openssl msys-openssh
$ mingw-get install msys-vim

boxの追加

Vagrantは仮想マシンの雛形としてboxという機構を持っています。 例えば、VirtualBox(GUI)でCentOSをインストールする場合は

  1. 新規仮想マシンを作成
  2. CentOSのISOファイルをマウントなどしてCentOSをインストール

というフローですが、Vagrantの場合は

  1. あらかじめCentOSのboxをVagrantに追加
  2. 追加したboxを雛形に利用して仮想マシンを作成(早い)

というフローになります。両者の2の処理を比べると、Vagrantのほうが既に雛形がある分、圧倒的に早いわけです。

まずboxを追加します。今回はRyuzee.comよりCentOS6.4のboxを取得します。

$ vagrant box add centos-6.4 https://dl.dropboxusercontent.com/u/428597/vagrant_boxes/CentOS-6.4-x86_64-ja.box

centos-6.4の部分は自由に決めてもらって構いません。boxを指定するときの名前になります。

boxは誰が作っているのか

有志の人が広く公開しています。注意しなければならないのは公式のものではないことです(また、公式のものはありません)。なので、その仮想イメージに何が入っているのかは作った人にしかわかりません。注意が必要です。

boxはどうやってつくるのか

Packer

仮想マシンを起動

まずは仮想マシンの設定を配置するディレクトリを作成します。

$ cd ~/
$ mkdir -p vbox/techtouch
$ cd vbox/techtouch

Vagrantはboxを雛形に仮想マシンを作成しますが、そのboxをどのように設定して起動するかはVagrantfileという設定ファイルで行います。

まず、Vagrantfileを作成します

$ vagrant init

ディレクトリ内にVagrantfileが作成されていますので、こちらを修正します。今回はcentos-6.4のboxを利用し、またネットワークはPublic Networkにします。 以下の部分を修正してください

config.vm.box = "centos-6.4" # line 10
config.vm.network :public_network # line 28

これで設定は完了です。仮想マシンを起動しましょう。

$ vagrant up

仮想マシンへログイン(Mac)

$ vagrant ssh

仮想マシンへログイン(Windows)

Windowsにおいては通常のVagrantにおけるログイン方法であるvagrant sshコマンドがつかえないので、/.ssh/configファイルとsshコマンドを使います。

$ mkdir ~/.ssh
$ vagrant ssh-config --host techtouch >> ~/.ssh/config
$ ssh techtouch

仮想マシンの停止

$ vagrant halt

仮想マシンの削除

$ vagrant destroy --force

Sandbox機構の追加(Vagrant sahara plugin)

仮想マシン単位で、ある時点までロールバックできるような機能を追加します。これによって何度でも環境設定のテストなどが可能になります(OSの再インストールが不要)

$ vagrant plugin install sahara

Sandbox モードに入る

$ vagrant sandbox on

変更を取り消し

$ vagrant sandbox rollback

変更を確定

$ vagrant sandbox commit

参考URL

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment