vagrant の基礎
ansibleを触る環境を準備するためにvagrantを触ったのでその時のメモ
mac環境へのインストール
1.公式サイトからインストーラをダウンロードする。
https://www.vagrantup.com/downloads.html
/usr/local/bin/vagrantにインストールされた
~ which vagrant
/usr/local/bin/vagrant
2.vagrantfileの作成
# mkdir -p ~/vagrantspace/vagrant_getting_started # cd ~/mywork/vagrantspace/vagrant_getting_started # vagrant init
vagrant initでVagrantfileが作られる。Vagrantfileはvagrantのバージョンコントロールを行うためのファイルになる。
3.boxの追加
公式の手順に従ってhashicorp/precise64のboxを追加する。
# vagrant box add hashicorp/precise64
別のboxを追加する場合はatlasが提供している以下のダウンロードサイトから探すことができる。
https://atlas.hashicorp.com/boxes/search?_ga=1.197033387.661843880.1488614682
自前でisoを用意したい場合は、以下を参考にする。
http://kan3aa.hatenablog.com/entry/2015/05/29/120212
vagrantで使用するダウンロード済みboxの一覧を確認する場合は以下を実行する。
# vagrant box list
4.vmを起動して接続する
VirtualBoxをインストールしていないのであれば、公式からインストーラーをダウンロードして入れておく。
https://www.virtualbox.org/wiki/Downloads
・vmの起動
# vagrant up
# vgrant ssh
・vm接続を解除する
# logout 又は # exit
vagrant基本コマンド
再起動 vagrant reload ステータス確認 vagrant status 一時停止 vagrant suspend 一時停止からの復帰 vagrant resume 停止 vagrant halt 起動 vagrant up boxの初期化 vagrant init boxの削除 vagrant destory
vagrantの起動状態を確認する
# vagrant plugin install # vagrant global-status
ディレクトリの共有
通常Vagrantfileはssh接続後の/vagrant/Vagrantfileにマウントされる。
# ls /vagrant/
/vagrantディレクトリ直下にファイルを作成したらvmのホスト側のVagrantfileがあったディレクトリにファイルが作られる動きをする。
# touch /vagrant/hoge # exit # ls
5.vagrant起動時のスクリプトでapacheのインストール
以下のapacheインストール用スクリプトをbootstarp.shのファイル名でVagrantfileがあるディレクトリに保存しておく。 # vi /vagrant/bootstrap.sh
#!/usr/bin/env bash apt-get update apt-get install -y apache2 if ! [ -L /var/www ]; then rm -rf /var/www ln -fs /vagrant /var/www fi
それから設定ファイルを編集し/vagrantディクトリにbootstrap.shをvagrant起動時に実行するスクリプトにす指定する。
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.provision :shell, path: "bootstrap.sh" end
次にvagrant reloadして再起動
# vagrant reload --provision # vagrant up
vagrantにssh接続している状態でapacheにアクセスできるか確認
# wget -qO- 127.0.0.1
6.ポートフォワード
ホスト端末からvagrantへアクセスできるようにポートフォワードを設定する
# vi Vagrantfile
config.vm.network "forwarded_port", guest: 80, host: 4567
ホスト端末からブラウザでlocalhost:4567にアクセスして動作確認