PackerのログからAMI IDを取得するコードがInvokeのタスクに書かれていた。全然書いた記憶がないのだけど(すごい忙しかったという記憶だけはある)blameしてみると自分なのできっと妖精さんが書いたのだろう。。。

ami_id = commands.getoutput("ruby -e 'puts `tail -n1 /tmp/packer.log`.split(\": \").last'")

書きなおすとしたらこうかな。Pythonはたまにしか書かないのでもっと良い書き方がある気がする。

with open("/tmp/packer.log", "r") as file:
  xs = file.read().split("\n")
  ami_id = [x for x in xs if x][-1].split(": ")[-1]

別にtailコマンド使うのは良い気がしてきた。

ami_id = commands.getoutput("tail -n1 /tmp/packer.log").split(": ")[-1]

追記:これだ

ami_id = commands.getoutput("tail -n1 /tmp/packer.log | sed -e 's/^ami: //'")