Check! Ansible の Dynamic Inventory を python で書くときは、shebang を忘れずに!

こんにちは、 @dz_ こと大平かづみです。

Prologue - はじめに

構成管理は、 Ansible を好んで使っています。今回は、インベントリを動的に指定したかったため、 Dynamic Inventory を試してみたところ… しばらく下記のエラーにはまってしまいました。対処できたので備忘録を書き留めます。

なお、 Dynamic Inventory については、下記のドキュメントを参考にしました。

Ansible の Dynamic Inventory を python で書くときは、shebang を忘れずに!

エラー内容

遭遇したエラーはこちらです。

ERROR! Attempted to execute "./dynamic-inventory.py" as inventory script: problem running ./dynamic-inventory.py --list ([Errno 8] Exec format error)
Attempted to read "./dynamic-inventory.py" as ini file: ./dynamic-inventory.py:1: Expected key=value host variable assignment, got: 

"スクリプトの実行を試みたけど、エラーがでるね。ついでに ini ファイルとしても読んでみたけどダメねー。" とのこと…

対処

しばらーく試行錯誤したのち、この issue を発見!

That file needs a shebang line.

なるほど、shebang line が必要なんだそう! shebang?

シバンまたはシェバン (shebang) とはUNIXのスクリプトの#!から始まる1行目のこと。

なるほど!!

ということで、Python の Shebang line を参考に、私の動作環境では以下の shebang を書けばよいみたいです。

#!/usr/bin/env python

これを設定すると、すんなり動きました!(・ε・;)

Epilogue - おわりに

shebang は普段あんまり気にしてなかったので、思わぬ落とし穴でした!

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.