2015年1月31日土曜日

AnsibleとJenkinsを連携させる時にやったこと

このエントリーをはてなブックマークに追加 はてなブックマーク - AnsibleとJenkinsを連携させる時にやったこと

小ネタです。

結果の出力をJenkinsのコンソール上でタスクごとに表示するようにする

ansible-playbookなどをTerminalから実行するとplaybookの途中の結果も出力されます。(例えばplaybookの中に複数のタスクがある場合に各タスクの進捗状況がわかります)

しかし、Jenkinsのシェルの実行でansible-playbookを実行するとplaybook内の全てのタスクが終了するまで結果がコンソールに表示されませんでした。

恐らくJenkinsのコンソールでは標準出力を表示しており、ansible-playbookを試しにリダイレクトさせてみた所、確かにタスクが終了するまで結果が表示されませんでした。

上記についてはexport PYTHONUNBUFFERED=1を実行前に設定すればPythonのstdin, stdout, stderr のバッファを強制的に無効にすることができるようでplaybook内の途中のタスク結果も見れるようになりました。

when does ansible-playbook write to stdout?

Python コマンドラインと環境

Jenkinsのコンソールでもansible-playbookの結果を色が付いた形で確認する

Terminalなどでansible-playbookを実行すると結果の出力が色付きで見れます。しかし、Jenkinsで普通に実行すると単色で表示されてしまいます。

色付きの結果をJenkinsでも表示するためにはまずAnsiColor PluginというJenkinsのプラグインを導入します。インストール後、ジョブの設定にColor ANSI Console Outputというチェックボックスが追加されるので設定しておきます。

ジョブでは実行時にexport ANSIBLE_FORCE_COLOR=trueという環境変数を設定してからansible-playbookを実行します。

export ANSIBLE_FORCE_COLOR=true
ansible-playbook -i hosts site.yml

これによってJenkins上でも色付きの結果が出力されて、見やすくなります。

Get colorful ansible output in Jenkins

0 件のコメント:

コメントを投稿