Chef SoloでTracLightningぽい環境を構築してみた

Chefが面白そうなのでいろいろやってみた結果、TracLightning+hglightぽい環境を構築できるようになったのでまとめを書いてみることにした。TracLightningと違うのはSubversion/MavenがないとかTracプラグインが最小限しかないくらいかな。

f:id:re_guzy:20130525220055p:plain

動作確認は次の環境で行った。

  • Chef 11.4.0
  • Windows 7 SP1 Professional(x86)
  • Windows Server 2008 R2 Standard
  • Windwos Server 2012 Standard

Chefリポジトリここで、cookbook名はtracwithhgとした。

tracwithhgがやっていること

  1. Visual C++ 2008 ランタイムのダウンロードとインストール
    • Python の動作に必要なため
  2. Python 2.7.4のダウンロードと"C:/Trac/python"への展開
    • easy_install のインストールも
  3. Mercurial 2.5.4のダウンロードとインストール
    • attribute(node['hg']['need_build'])にtrueを指定すると、MinGWをインストールして、ソースからビルド後インストールする。
  4. Trac 1.0.1のダウンロードとインストール
    • Wikiに関しては TracJa 1.0を使っている。
    • プロジェクト作成時に wiki load してるだけ。
  5. TracAccountManagerPlugin 0.4.3のダウンロードとインストール
    • 認証方式にDigestを指定した場合のみ
    • 認証方式にSSPIを指定した場合はインストールされない
  6. TracMercurialPlugin 1.0.0.3のダウンロードとインストール
  7. Apache 2.2.24のダウンロードと"C:/Trac/apache"への展開
  8. ファイアーウォールの例外にapache追加
  9. JRE 7u21のダウンロードと"C:/Trac/jre"への展開
  10. .NET Framework 3.5 SP1 の有効化
    • JenkinsのWindowsサービス化に必要
    • Windows 8/Windows Server 2012 ではデフォルトで無効化されているため必要
  11. Jenkins 1.514のダウンロードと"C:/Trac/jenkins"への展開&Trac(Jenkins)のWindowsサービス化
  12. Trac(Apache)のWindowsサービス化
    • Twitter Bootstrapで作成したHTMLをApacheで公開
    • mod_wsgi 3.3のダウンロードと有効化
    • SSPI認証なら mod_auth_sspi 1.0.4のダウンロードと有効化
    • Tracをmod_Wsgiで公開できるようにhttpd.conf書き換え

準備

  1. Installing Chef Client on Windows - Chef - Opscode Open Source WikiからChefのインストーラをダウンロードしてインストール
  2. toruuetani / Chef-repository-TracWithHg ― Bitbucket を任意の場所(「C:/Chef」とか)にclone
  3. Chefに同梱されている「win32/registry.rb」を修正(参照:Chef Solo で invalid byte sequence in Windows-31J / invalid byte sequence in UTF8 に遭遇したときの対処をいくつか - 記憶は削除の方向で

実行方法

cloneしてきたChefリポジトリに同梱されている「install.bat」を管理者権限で実行するだけ。
※Windows Server 2012 の場合、インストールメディアがDドライブにセットされている必要あり。Dドライブ以外にインストールメディアをセットする場合、attribute(node['netfx3']['source'])を環境に合わせて修正すること。

プロジェクト作成方法

create-hg-project.batを実行するだけ。
最低限Tracプロジェクト名を指定する必要あり。Mercurialリポジトリをcloneする場合はcloneするURLを指定すること。

既存プロジェクトに管理するMercurialリポジトリを追加する場合、create-hg-append.batを実行してTracプロジェクト名とMercurialリポジトリ名を指定する。Mercurialリポジトリをcloneする場合はcloneするURLを指定すること。

Digest認証の場合、初期ユーザーとして次の2アカウントを用意する。

  • アカウント: admin, パスワード: admin
  • アカウント: guest, パスワード: guest

TODO

  • Jenkinsでプロジェクト作成
  • Jenkinsでバックアップ
  • Jenkins関連ができたらhglightにも反映すること