かきスタンプ

福岡で物流系のエンジニアやってます

Vagrant:基本操作メモ

Vagrantは、仮想マシンを簡単に立ち上げるためのツール。

以下では、仮想マシンVirtualBoxを使用しています。
他にも、VMwareHyper-V、EC2にも適用できます。
ホストには、Ubuntu 16.04.3 を使用しました。

インストール

sudo apt-get install vagrant

バージョン確認

vagrant --version

Box(テンプレート)を取得

vagrant box add  <box名, url, or path>

(入力例1)
vagrant box add hashicorp/precise64

(入力例2)
vagrant box add centos7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

入力後、ダイアログにて「virtualbox」を選択。  
上記の「precise64」は、Ubuntu 64bitの事。
テンプレートは、公式サイトの Docs→Getting Started→Boxes や、 Vagrantbox.esなどで取得できる。
落としたBoxは、「~/.vagrant.d/boxes」にキャッシュされている。
1つのboxから、複数の仮想マシンを作成する事が出来る。

仮想マシン初期化

仮想マシンごとにディレクトリを作成する。
以下では、MyCentOSVMというフォルダを作成し、そのフォルダにて実行しました。

vagrant init <box名>

Vagrantfileという設定ファイルが作成される。
テキストエディタで内容を確認できる。
内容の詳細については公式サイトを参照。

仮想マシンを起動

Vagrantfileが存在するフォルダにて、以下を実行。

vagrant up

virtualboxを立ち上げると、仮想マシンが起動中であることを確認できる。

仮想マシンの状態確認

vagrant status

仮想マシンのスリープ

vagrant suspend

スリープからの復帰

vagrant resume

仮想マシンの終了

vagrant halt

再度、立ち上げたい場合、vagrant up

仮想マシン再起動

vagrant reload

仮想マシンの削除

vagrant destroy

Vagrantfileは残っているので、仮想マシンを削除しても、同じ設定で再作成できる。

仮想マシンへの接続

vagrant ssh

ユーザ名は「vagrant」となる

ホストから仮想マシンへの接続

Vagrantfileにて、以下のコメントアウトを解除(以下の内容があるので、先頭の「#」を削除)

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

この例だと、192.168.33.10 でアクセスできる。
設定変更後は、vagrant reloadで再起動。

共有フォルダの設定

ゲストの/vagrantディレクトリは、ホストのVagrantfileが存在するディレクトリと共有されている。
ゲストがCentOSの場合、ゲストOSにて以下を実行すると、ホスト側で編集した内容を、ゲスト側に反映させる事ができる。

sudo rm -rf /var/www/html/
sudo ln -fs /vagrant /var/www/html

403 Forbiddenとなった場合、 SELinuxを無効化する等で対処する。
具体的には、/etc/selinux/configにて、以下のように変更。

SELINUX=enforcing → SELINUX=disbled

プロビジョン設定

仮想マシンを起動した時に、一連の処理を自動的に実行できる。
Vagrantfileに以下を追記することで設定できる。

<Vagrantfileに直接スクリプトを書く場合>

config.vm.provision :shell, :inline => "script xxxx"

<作成したスクリプトファイルを読む場合>

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

スクリプトファイル(上記では provision.sh)記述例】

sudo yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on

仮想マシンが起動中の場合、vagrant provisionと実行することで、プロビジョンのみを実行できる。

Boxの作成

現在稼働中の仮想マシンをBox化する場合、以下のコマンドを使用する。

vagrant package

「package.box」というファイルが作成される。
仮想マシンが起動中の場合、自動的にシャットダウンしてくれる。
作成したBoxをリストに追加するには、以下を実行。

vagrant box add <ボックス名> package.box

Boxの一覧を確認

vagrant box list

Boxの削除

vagrant box remove <box名>

Box操作系コマンド一覧表示

vagrant box -h