色々なものを入れる必要のあるソフト試すしたいけど、既存環境は嫌なので、Vagrant + Chef で仮想環境で試してみました。
試してみるのは Tiny Tiny RSS (以下 tt-rss)ですが、他でも使いまわせるようにメモしたい。
「知らんがな、tt-rss 試してみたいだけだよ」って人は kui/ttrss-test の README 読んで使ってみてください。
注意: ちゃんとした Cookbook を作成するなら、chefspec
や serverspec
や foodcritic
も必要です
動機: 既存環境汚したくないけど試したい
tt-rss は自前サーバにインストールするタイプのフィードリーダーなんですが、MySQL 使ったり、PHP 使ったりと、今の環境から色々なものを入れないといけないみたいで二の足を踏んでいたら、Google Reader 死んでしまったので、Vagrant と Chef で環境構築してさくっと作って試しに使ってみる事にしました。
準備する
Berkshelf と Vagrant の便利プラグインをインストールする:
# box に chef を自動でインストール・更新してくれるプラグイン
vagrant plugin install vagrant-omnibus
# berkshelf と連携してくれる
vagrant plugin install vagrant-berkshelf
gem install berkshelf --no-ri --no-rdoc
Vagrant 自体のインストールは公式サイト見てください。
Cookbook
まずはじめに、Cookbook と Vagrant 設定の雛形を作成する:
berks cookbook ttrss-test
cd ttrss-test
ここで作成されたものを改変したり追加したりして、cookbook を作る。
今回は、たまたま tt-rss をインストールするための cookbook を作成している方がいたので、それを使います。
- wtreur/tt-rss https://github.com/wtreur/tt-rss
超大事: cookbook の README
はよく読みましょう。当たり前ですが。
先ほど作成した trss-test が、この tt-rss に依存する旨を metadata.rb
の末尾に記述する:
...
depends 'tt-rss'
Opscode Community に登録されてるクックブックならこれだけでいいのですが、この tt-rss は登録されてないので、github から取ってくるように Berksfile
の末尾に書きます:
...
cookbook 'tt-rss', git: 'https://github.com/wtreur/tt-rss.git'
依存関係について記述したら Berksfile
の依存関係を解決してみる:
berks install
エラー等でなければ Vagrant の設定をする。
Vagrant の設定
tt-rss の README 曰く:
Requirements
Platforms
- Debian, Ubuntu
という事なので、Berkshelf が用意してくれた CentOS の box の設定破棄して、Vagrantfile
をこんな感じに書く:
Vagrant.configure("2") do |config|
config.vm.hostname = "ttrss-berkshelf"
# see https://github.com/opscode/bento
config.vm.box = "opscode_ubuntu-12.04"
config.vm.box_url = 'https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box'
# tt-rss が動く web サーバにアクセスするために必要。
# 8080 以外でも空いてるホストOSのポート番号を指定すればOK
config.vm.network :forwarded_port, guest: 80, host: 8080
# require `vagrant plugin install vagrant-berkshelf`
config.berkshelf.enabled = true
# require `vagrant plugin install vagrant-omnibus`
config.omnibus.chef_version = :latest
config.vm.provision :chef_solo do |chef|
chef.json = {
:mysql => {
:server_root_password => 'rootpass',
:server_debian_password => 'debpass',
:server_repl_password => 'replpass'
}
}
chef.run_list = [
"recipe[ttrss::default]"
]
end
end
実行してみる
端末で:
vagrant up
# 時間かかる
echo 'my-tinyrss.com 127.0.0.1' | sudo tee -a /etc/hosts
初回は、box のインストールがあるので十数分程度かかります。成功しているのを確認できたら次へ。
ログイン
http://my-tinyrss.com:8080/ にアクセスして、ユーザ名: admin
、パスワード: password
でログインできます。
注意
Berkshelf が作る LICENSE
ファイルは:
All rights reserved - Do Not Redistribute
になってるので、気になる人は適当に修正しましょう。
終わり
出来上がった奴がこちらになります:
ただ、最新版の tt-rss 使えるように、上記したものから少し手を加えています。
これと同じ方法で munin も使ってみたかったけれど、これ、chef-solo だと動かない Cookbook なんですね。。。