Help us understand the problem. What is going on with this article?

Vagrant + Berkshelf で環境に優しくないソフトウェアを試す

More than 5 years have passed since last update.

色々なものを入れる必要のあるソフト試すしたいけど、既存環境は嫌なので、Vagrant + Chef で仮想環境で試してみました。

試してみるのは Tiny Tiny RSS (以下 tt-rss)ですが、他でも使いまわせるようにメモしたい。

「知らんがな、tt-rss 試してみたいだけだよ」って人は kui/ttrss-test の README 読んで使ってみてください。

注意: ちゃんとした Cookbook を作成するなら、chefspecserverspecfoodcritic も必要です

動機: 既存環境汚したくないけど試したい

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 を作成している方がいたので、それを使います。

超大事: cookbook の README はよく読みましょう。当たり前ですが。

先ほど作成した trss-test が、この tt-rss に依存する旨を metadata.rb の末尾に記述する:

metadata.rb
 ...
depends 'tt-rss'

Opscode Community に登録されてるクックブックならこれだけでいいのですが、この tt-rss は登録されてないので、github から取ってくるように Berksfile の末尾に書きます:

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 をこんな感じに書く:

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 なんですね。。。

k_ui
ねこほしい
http://k-ui.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away