インフラエンジニアbacchiのわかったことまとめ

bacchi.me

Ansibleでpipをupgradeする

以前、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便利だけどつらい部分もありますね。

  • B!