Ansible モジュール貢献への道のり
もう 3 週間も前の話になりますが Ansible Meetup in Tokyo 2015.09 というイベントがあり、ライトニングトークの枠を頂いて喋ってきました。
そこでは自作の Ansible モジュールの紹介と、 Ansible モジュールの配布と宣伝、そしてアップストリームへの貢献 (自作モジュールを Ansible 標準モジュールにしてもらう) といったことについて話しました。今回の記事はその後日談のような内容です。
スライドは Speaker Deck にアップロードしてあります。
現在 Ansible のリリースに同梱される標準モジュール群は GitHub の ansible-modules-core および ansible-modules-extras の 2 リポジトリに分けて収録されており、 新規モジュールの追加を希望する人はまず extras リポジトリにプルリクエストを出すことになっています。
拙作のモジュール blockinfile も標準モジュール化を目指していたことから お盆の頃にプルリクエストを出したのですが、 これが実に 1 ヶ月以上の間、 誰からもコメントされず放置されることになります。 先日のイベントでは、 この件についてライトニングトークの持ち時間を大幅にオーバーしつつ (すみませんでした) 愚痴らせてもらいました。
extras では今年の 5 月頃に新モジュールの審査をコミュニティで行う試みが導入され、 この時に新規モジュール追加のプルリクエストは 既存モジュール作者 2 名による推薦により受け入れるという基準が決められました。 しかしながら現在の Ansible コミュニティの状況では、 私のように既存モジュール作者に全くコネのない人が 新規モジュールを追加するのはこの基準では難しかったように思います。
ここは Ansible としても改善が必要と考えていたようで 9 月末にこの基準を変更するというアナウンスがありました。 リポジトリの文書もこれに合わせて改訂されています (詳しい経緯は Robyn Bergeron さんのブログ記事を参照)。
ざっくりまとめると、既存モジュール作者でなくとも 新規モジュール追加のレビューに参加できるように基準を緩和したということです。 加えて、新規モジュール追加プロセスの運用ルールが新しく決められました。
- extras に提出された新規モジュールには次の 3 種類の投票ができる:
worksforme
: すべてのパラメータとスイッチの機能の確認を含む、 モジュールの徹底したテストを実施したpasses_guidelines
: モジュールガイドラインに準じていることを確認したneeds_revision
: 動作しない、ガイドラインに違反しているなどの理由で改訂が必要
- 投票はプルリクエストに対して上記タグ文字列をコメントすることで行う。 モジュール作者以外の誰のものでも有効。
works_for_me
passes_guidelines
の承認がありneeds_revision
の異議がないモジュールが受け入れ対象となる。- モジュールが受け入れられた後、モジュール作者はメンテナとしてそのモジュールに対するバグ報告やプルリクエストに対処する必要がある。
さらにコアチームメンバーが適用する GitHub のイシューラベル
(new_module
とか community_review
とか)
を使った運用フローの詳細がこのダイヤグラムで説明されています。
当初からの個人的な感想として、 こういうのは Gerrit とか使えばいいんじゃ?などと思ってましたが、 Ansible は GitHub のプルリクエストとイシューシステムの仕組みを 最大限活用してやっていく方針のようです。 新しい運用ルールがうまくいくことを願っています。
アナウンスの効果もあってか、
blockinfile のプルリクエストにもさっそく具体的なレビューや
works_for_me
(なぜか worksforme
ではない) のコメントがつくようになり、
標準モジュール化の目標達成に向けてようやく進み始めた感があります。
また放置プレイされていた期間がだいぶ長かったもので、 反応があることは本当にありがたいと身に沁みて感じました。 私もこれからは自分のモジュールをプルリクエストするだけでなく 他人のモジュールのレビューにも参加することで Ansible コミュニティに貢献していきたいと思います。
2015/10/04 18:11:40 JST