Ansibleの勉強と趣味のため、Lxr (Linux Source Code Indexer and Cross-referencer) をデプロイする Playbook を書いてみました。
いまどきLxrなんて使ってる人おるん?という気もするけれど、9月26日から glimpse (Lxrが対応しているフリーテキストサーチエンジン)の商用利用も可能になり、なにげに利用しやすい状況になってます。
Lxrを運用しているサイトの例
言わずと知れた有名サイト?
- Linux Kernel - http://lxr.free-electrons.com/source/
- Mozilla - http://lxr.mozilla.org/
PlaybookのGitHubレポジトリ
拙作ですが、こちらに。
Readme の通り、今のところ CentOS 6.5 と CentOS7 で動作を確認済み。
さくらクラウド上にも、デプロイできることを確認しています。
設定方法
こんな感じ。
$ git clone https://github.com/h2suzuki/ansible-lxr-nupic.core
$ cd ansible-lxr-nupic.core
$ vi hosts
$ vi group_vars/lxr-servers
hosts はインベントリファイルのサンプルです。実際にLxrをデプロイする先のマシン名に書きかえます。
また、デプロイ先は事前に ssh を導通させておく必要もあります。すなわち、ansible -i hosts all -m ping
が成功すること。
group_vars/lxr-servers は設定ファイルの本体です。
例として、Nupic.core をインデックスする設定にしていますが、git clone 可能なレポジトリであれば、任意のレポジトリで OK。
-
source_tree_url
は Lxr で表示したいソースのレポジトリURL -
lxr_tag_vcs
は、表示したいバージョンのタグ -
lxr_tree_name
は、このソースツリーの名前(ID)
設定の全デフォルト値は roles/lxr/defaults/main.ymlにまとめています。
デプロイ方法
管理サーバにAnsibleをインストールした後、以下のコマンドを実行。
$ ansible-playbook -i hosts site.yml
ターゲットマシンに lxr と glimpse をインストールし、所望の git レポジトリからソースを cloneしてインデックス生成、最後に Apache の構成もでしてくれます。
全部成功したら、以下のURLにアクセスすると、ソースが表示されるはず。
http://{{ httpd_server_name }}:{{ httpd_port }}/lxr/{{ lxr_tree_name }}/source
デフォルト設定なら、こちら。
http://{{ inventory_hostname }}/lxr/nupic.core/source
設定ファイル group_vars/lxr-servers の lxr_tag_vcs
だけ書き換えて(もしくはコマンドラインから -e オプションで渡して)、以下のコマンドを実行すると、指定のバージョンのツリーを、Lxrに追加してくれます。
$ ansible-playbook -i hosts site.yml \
--tags retrieve_source,indexing
今後の課題
気が向いたら、取り組む予定。
- Amazon EC2 で動かせるようにする(途中までやった)
- Ubuntu で動かせるようにする
- glimpseやhttpdの部分を、別ロールに分離
- マルチツリーへの対応
- Galaxy へ登録
- SQLite以外のDBへの対応(しないかも)