[Vagrant & VirtualBox] Vagrant: ドットインストールの開発環境構築レッスンをベースにWordPress環境をProvisioningしてみた
シェルスクリプトから、Apache, MySQL, PHP, WordPress, phpMyAdmin をインストールしてみます。
つかってみて不具合があれば修正していくつもり。
Contents
Vagrantfile
こちらにおきました。
https://gist.github.com/DriftwoodJP/6694891
NFS mount について。
provisioning
以下を参考にいろいろ追記してみました。
mysql_secure_installation は何を行っているか。
wordpress
>/dev/null 2>&1
で不要なログを捨てている。
echo "Installing Apache etc..."
apt-get update >/dev/null 2>&1
利用方法
gist にあげておくと楽かも。
設定ファイルを git clone
% git clone https://gist.github.com/6694891.git
Cloning into '6694891'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
Checking connectivity... done
ディレクトリをプロジェクト名に変更。
% mv 6694891 your_project
% cd your_project
CentOS boxが既にあれば、Vagrantfile の config.vm.box を書き換えて下さい。なければダウンロードしてきます。
% vagrant up
以上、Boxのダウンロードも含め15分くらい。
接続方法
ssh
% vagrant ssh
ブラウザ
ブラウザからのアクセスは、Vagrantfile で設定したアドレス。
http://192.168.33.10/
WordPress
http://192.168.33.10/wordpress
WordPressのID/PWは、admin/root が初期設定。
phpMyAdmin
http://192.168.33.10/phpmyadmin
MySQL(phpMyAdmin)のID/PWは、root/rootに設定してあります。
FTPソフト
- server(ip): 192.168.33.10
- protcol: SFTP
- user: vagrant
- password: vagrant
- documentroot: /var/www/html
/etc/hosts
さらにホスト名を指定したければ、/etc/hosts を変更しても良いし、Hoster というアプリを使っても良い。
vagrant-hostsupdater を使いましょう。
Box化する
ダウンロードを含めると結構時間がかかります。
よく使うようであれば、Box化しておくとはかどりそう。
が、一工夫いるようです。
エラー
[default] Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
ARPCHECK=no /sbin/ifup eth1 2> /dev/null
Stdout from the command:
Device eth1 does not seem to be present, delaying initialization.
Stderr from the command:
ネットワークインターフェースまわりで何か起こっていることは分かるが。。。
と、こちらで詳細が触れられていました。ありがとうございます。
ブリッジ、もしくはホストオンリーネットワーク構成で起動すると、ネットワークインターフェース設定ファイルがVagrantにより作成されるのは前述しましたが、OS側ではネットワークインターフェースが追加された際に、ネットワークインターフェースとMACアドレスをマッピングしています。
パッケージングしたボックスで新しく仮想マシンを起動すると別のMACアドレスが割り振られるため、OS側は新しいネットワークインターフェースeth2としてマッピングしてしまうようです。 にもかかわらず、ネットワークインターフェース設定ファイルはeth1用しか準備されておらず、eth1はOS側ではすでに存在しないMACアドレスのため、起動に失敗します。
対策
rollbackできるように、sandboxモードをonにします。
% vagrant sandbox on
% vagrant ssh
VMに入り、MACアドレスとのマッピングを無効にしておきます。
$ sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
$ exit
Boxを作成し、不要なファイルを削除、VMをrollbackします。
% vagrant package
% vagrant box add wp_box package.box
% rm package.box
% vagrant sandbox rollback
以降は、ディレクトリを作成した後、これだけで使えるようになります。
% vagrant init wp_box
% vagrant up
なお、MACアドレスとのマッピングは、以下の方法でも直せるそうです。
機能を無効にしたくない場合は、該当ファイルを削除してネットワークを再起動することで再度マッピングされますので、用途に応じて対策を行なってみてください。
課題
- 上記の通り、vagrantについても細かいところがいろいろありそう。
- 現在の知識では Python や Rails をキレイに入れる表現ができなかった。
- きちんと設定されたか確認たいへん。
- やっぱりインストールとか時間かかりますね。
- ということで、Chef とか serverspec とか必要になってくるのかな。