Ansible Galaxyの活用と再利用可能なroleの作成

GitやDocker Engineのインストールなど、よく使われるroleをAnsible Galaxyに登録して再利用する。 その場限りのroleを書くのではなく、再利用できるように作り、テストも行うようにすることでroleの品質も高まる。

態々自分で作らずにAnsible Galaxyで既に公開されているものを使えるならそれでも良いのだが、 検索しづらいためかあまり良いものが見つからない。 評価が高めのものでもGtiHubでコードを見るとイマイチな気がしてしまう。 渡せるパラメータが足りてないetc。。。

検索性が悪いのはAnsible Galaxyに限らず AtlasのVagrant CatalogやDocker Hub, Quay.ioなどでも言える。 結局自分で作ってしまう。

とりあえずUbuntuとArchLinux用のgitをインストールするroleをAnsible Galaxyで公開した。 ソースコードGitHUbで公開されており、Travis CIで簡単なCIも行うようにしている。

galaxy.ansible.com

roleはプラットフォームごとに作る。統合するのは難しい

roleはプラットフォームごとに分けて作っている。 Ansibleではansible_os_familyやansible_distributionでリモートのOSなどを調べて条件分岐できるので、 1つのroleで色々なプラットフォームをカバーできる方が本当は良いと思っているし、最初はそうするつもりだった。 ただ、ansible-galaxy(というかansible)の性質上それは良くない(出来なくはない)ことに気づいた。

  • 条件分岐で飛ばしたタスクの結果(skipped)も標準出力される 本質的なログが埋もれる
  • dependenciesを動的に決定できない 特定のプラットフォーム固有のdependenciesも全てのプラットフォームのdependenciesとして扱われる

特に2番目が大きな問題で、これで諦めた。

最後に

とりあえずgitを作ったので他にもdockerとかgit-lfs, docker-composeとか作る予定。 gitだけでも真面目に作ると結構時間かかる。