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

  • 0
    Like
  • 0
    Comment

    こんにちは、 @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 は普段あんまり気にしてなかったので、思わぬ落とし穴でした!