Ansibrest というツールを作りました
ものすごい久しぶりに記事を書く。理由は気がつかないままに bang されてたから (stanaka さん, daiksy さん, songmu さんありがとうございます)
掲題の通り Ansibrest というツールを作った
- github
- 最近のプロダクトでは ansible をほぼ全面的に使ってる
- チーム的にもうちのチームはほとんどが ansible に移行した(利用し始めた)
- 遅まきながらようやく chatops 環境が整いつつある(この辺りは情報解禁されたらどこかで書きたい)
Ansible はとてもよいツールなので積極的に使っていきたいけど、結局どこかの端末にログインしてコマンドを実行するか、 Jenkins おじさんの手をわずらわせるかしないといけない。 slack とかで利用するときも直接叩くなんてことはなく実際には jenkins おじさんに頼んで ansible を実行してもらう。
かといって jenkins おじさんを定常的に育てるのは手間でもっとカジュアルに ansible を叩きたいと思ったので ansibrest 作った。 やれることは単純でプロダクトのリポジトリ内に次みたいな構成で ansible playbook があるとする
% tree -L 2 ansible ansible ├── group_vars │ └── development.yml ├── inventories │ └── development ├── roles │ └── sample2 ├── sample1.yml └── sample2.yml
この状態で
% npm install ansibrest -g
としたのち
% ansibrest
とするとデフォルトでは2400番でWebサーバが立ち上がる。
キャプチャを見ればわかると思うけど、 playbook の一覧、それぞれの playbook のタスク一覧と inventories の設定を閲覧できて、その場で実行ができる。
トップ
実行
playbook タスクリスト
あと、当然これは API を持っている。
% curl -X POST "http://localhost:2401/api/playbook/sample2.yml"
こんな感じで叩くことができる。
としておけば op サーバあたりで git clone して、 ansibrest を上げておけば、 hubot から簡単に実行できる。
カジュアルにチーム皆の(slackの)前で
@repo_hubot play sample2.yml development
とか実行することができる(はず