てくなべ (tekunabe)

ansible / network / automation

[Ansible] フィルターを手軽に試行錯誤したいときの ansible-console コマンドの使い方

はじめに

Anislbe には、値を変換したり取り出したりする、さまざまなフィルター機能があります。 しかし、Playbook を書かく時、なかなか意図通りにフィルターできないこともあるのではないしょうか。 このようなときは、毎回 Playbook を実行するのも手間になり「とにかく手軽にフィルターを試行錯誤したい」と思うこともあると思います(私はあります)。

そんな時に便利な ansible-console コマンドの使い方をご紹介します。

なお、本来は ansible-console コマンドはフィルターの確認だけでなく、Plyabook と同じようにモジュールを実行できますが、この記事では特定用途に限って紹介をします。

  • 動作確認環境: Ansible 2.8.5

ansible-console コマンドの使い方

以下、一連の流れです。

$ ansible-console -i localhost,  # 接続先は問わないのでここでは localhost のみ
Welcome to the ansible console.
Type help or ? to list commands.

test@all (1)[f:5]$ debug msg={{ 10 | random }}  # random フィルター確認
localhost | SUCCESS => {
    "msg": "6"
}
test@all (1)[f:5]$ debug msg={{ 10 | random }}  # 再度確認(↑キーで履歴呼び出し)
localhost | SUCCESS => {
    "msg": "2"
}
test@all (1)[f:5]$ debug msg={{ [3, 4, 2] | max }}  # max フィルター確認
localhost | SUCCESS => {
    "msg": "4"
}
test@all (1)[f:5]$ debug msg={{ [3, 4, 2] | min }}  # min フィルター確認
localhost | SUCCESS => {
    "msg": "2"
}
test@all (1)[f:5]$ exit     # 終了

[test@6175d1755f33 ~]$ 

より雰囲気をお伝えするため、同じ内容を動画にしたものを載せます。

www.youtube.com

参考

その他、多少環境の準備は必要ですが試行錯誤しやすい点では、Jupyter Notebook の Ansible カーネルである ansible-jupyter-kernel も便利です。