Vagrantで立ち上がるWordPress環境を作ってServerspecも書いてみた

Vagrant+Wordpressの環境なぞ、chad-thompson/vagrantpress のようなにいくらでもあるんですが、どうもメンテされてなかったり、chefで色々てんこもり(面倒見がいいといえばそう)で、もっと最低限なものを作り、serverspecでの検証もしてみました。

Vagrant で立ち上がるので、Readmeどおりにvagrant/に入って vagrant up で動きます。

でアクセスでき、/wp-admin/ では admin:admin でログインできます。

大した設定はないので、必要に応じて Vagrantfile を編集してみてください。

serverspec

さて、そこそこ満足いくローカル環境は出来上がったのですが、せっかくなので serverspec も書いてみました。

まずはserverspecをインストール。実行には rake も必要なのでなければ一緒にいれます。

gem install serverspec rake

serverspec-initコマンドを実行するとウィザードが始まり、答えていくとひな形が生成されました。

$ serverspec-init
Select OS type:
1) UN*X
2) Windows

Select number: 1

Select a backend type:
1) SSH
2) Exec (local)

Select number: 1

Vagrant instance y/n: y
Auto-configure Vagrant from Vagrantfile? y/n: y
 + spec/
 + spec/default/
 + spec/default/sample_spec.rb
 + spec/spec_helper.rb
 + Rakefile
 + .rspec

Vagrant なのか?とも聞いてくれたので、yes と答えました。

Vagrant 向けにテンプレートを用意してくれるみたいです。

生成されたファイルのうち、spec/spec_helper.rb を確認してみると、vagrant up したり、ssh 接続情報を拾っていました。

サンプルでdefault/sample_spec.rbがあるので、実行してみました。

$ rake spec
rake specPackage "apache2"
should be installed

Service "apache2"
should be enabled
should be running

Port "80"
should be listening

Finished in 0.09702 seconds (files took 6.75 seconds to load)
4 examples, 0 failures

サンプルには、

  • apache2がインストールされている
  • apache2のサービスが起動している
  • apache2が起動中である
  • ポート80番が空いている

ことを確認する記述がなされているので、上記のようなテストが走りました。

vagrant provision で apache2 のセットアップをしているのでこのテストは全て通りました。

これを参考に、phpとmysqlについてのテストも記述した、vagrant_spec.rb を記述しました。

describe を入れ子にして、グループに分けたりもしてみました。

パッケージのインストール、サービスの起動はサンプルをそのまま参考に、その他コマンドなどは公式ドキュメントを参考に書いてみました。

簡単なスニペットが載っているのでこれを見ればだいたい書けそうです。

これで、vagrant up && rake spec と走らせれば、サーバのセットアップが正しく終わっているかどうかまで確認できるようになりました。

ちょっと敷居が高いと思い込んでましたが、意外と簡単にかけました。(対象が大した構築でないというのもありますが…)

一部、php.ini の検証が上手くいかなかったのでコメントアウトしてしまいましたが、何か上手くやる方法がわかれば修正していきたいです。

ガチなサーバエンジニアではないですが、ansible や chef などで構築をコードに落とし込み、さらに serverspec でテストコードも用意すれば、サーバ構築の労力の軽減と精度の向上がかなり見込めますね(本業からみたら今更感なんでしょうが)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする