yanom blog

様々な技術について書きます

ansible inventoryファイルをいい感じに作りたい

ansibleを最近使っていますが、自分が使いたい形式のinventoryファイルの作成に手間取ったのでライブラリを作って公開しました。
2020/02/10追記
仕事でansibleを使ってるんですが、その際にインベントリファイルを動的に(DBに格納されている情報などから)生成する必要がありました。
pythonでiniファイルを扱う場合、標準ライブラリであるConfigParserを使うのが一般的なようです。
しかし、ansibleの場合一般的なiniファイルの形式と少し違う箇所があります。

  • 一般的な例
  [DEFAULT]
  ServerAliveInterval = 45
  Compression = yes
  CompressionLevel = 9
  ForwardX11 = yes

  [bitbucket.org]
  User = hg

  [topsecret.server.com]
  Port = 50022
  ForwardX11 = no
  • ansibleの場合
  [linux]
  <ホスト名/IPアドレス> <key>=<value> <key>=<value> <key>=<value>

このように、行頭にホスト名を指定したかったり、複数key/valueを入れたかったりしたかったのですが、
標準ライブラリのconfigparserではできそうになかった(ちゃんと調べてませんが・・・)のと、pythonでライブラリを公開したかった(主な理由)ので、 作りました
使い方などは、readmeを御覧ください。
また、pythonでのライブラリ公開手順については、以下を参考にさせていただきました(twineを使いました)

よければ、使ってみてください。