以前、pipパッケージのインストールに手間取りました。
pipそのものが古かったり、setuptoolsが古かったり。
https://bacchi.me/linux/pip_tips/
pipをばんばん使うplaybookを書くことになったので、Ansibleの公式ドキュメントをちらちら見ていました。
でも、Ansibleのpipモジュールのページにはupgradeについて何も記載がありません……。
んー、commandモジュールなり、shellモジュールなりでやるしかなさそう。
当初、
statモジュールであるファイルの有無を確認し、ファイルが無ければ、pip install --upgrade
を実行して、ファイルをtouch
する。
みたいなことをぱっと考えたけど、あまりにイケてないし、時間がたってからのことも考慮できてないのでボツ。
以下のようにchanged_whenを使ってchangedが発生しないようにしました。
pip install --upgrade
の実行結果文字列に「Requirement already up-to-date」が含まれていたらokとする。
それ以外はアップデートがあったと判断しchangedにする。
- shell: pip install --upgrade pip
register: result
changed_when: ‘”Requirement already up-to-date” not in result.stdout’
- shell: pip install --upgrade setuptools
register: result
changed_when: ‘”Requirement already up-to-date” not in result.stdout
べき等性を保つのに結構エネルギーいりますよね。
Ansible便利だけどつらい部分もありますね。