Ansible Playbook向けデバッガをStrategy Pluginとして作り直しました
細々と開発を続けていたAnsible Playbook向けデバッガですが、ここ数ヶ月Ansible v2では動かない問題がありました。Ansible v2はPlaybookのレベルではv1との互換性を保持していますが、内部はがっつり書き換わっています。開発していたデバッガはAnsible内部の関数やデータに依存していたので、v2対応は大変そうだなーと思って放置していました。
最近ようやく対応を始めたのですが、あまりAnsible内部に依存する方法はメンテしにくいから嫌だなーと思いながらv2のコードを読んでいると、Strategy Pluginという仕組みが使えそうなことに気づきました。Strategy PluginはPlaybookの実行戦略を変えられるプラグインで、Ansible v2から導入されました。例えば、複数のホストに対してPlaybookを実行するとき、全ホストが足並みを揃えて順番にタスクを実行していく戦略(linear
)とか、各ホストが他のホストの進捗を気にせずどんどんタスクを実行していく戦略(free
)とかがあります。
こうした戦略の一つとして、タスクの実行が失敗したらデバッガが起動する戦略があってもいいかなと思い、デバッガをStrategy Pluginとして作り直すことにしました。Ansible本体とはPluginのインターフェースで切り離されているので、メンテコストも小さくできそうです。作り直したデバッガは以下から入手できます。
使い方を紹介しようかと思いましたが、Qiitaで紹介してくれている人がいたのでリンクを貼るだけにします。感謝。
Ansible MLで紹介したところ、Ansible開発の現リーダーの方にも好評でした。
twitter.comThis is by far the coolest use of @ansible strategies I've seen so far: https://t.co/Xn1m8Zw0Ih
— James (@thejimic) March 22, 2016