line 99\n from ansible_module_my-module import main\n^\nSyntaxError: invalid syntax\n

Ansibleでカスタムモジュールを書いていたところ、SyntaxErrorが発生し、原因究明に手間取った。

https://github.com/ansible/ansible/issues/18747 に同じ問題について議論されていて、原因はハイフンを使ったモジュール名にしていたことだった。

ちなみにカスタムモジュールを作るきっかけとして、Ansibleのnmcliモジュールでbridgeインタフェースを作ろうとしたら、現時点で正しく実装されておらず、何もなされない。

${SITE_PACKAGE_DIR}/ansible/modules/net_tools/nmcli.py より一部抜粋
---

    def create_connection_bridge(self):
        cmd=[self.module.get_bin_path('nmcli', True)]
        # format for creating bridge interface
        return cmd

    def modify_connection_bridge(self):
        cmd=[self.module.get_bin_path('nmcli', True)]
        # format for modifying bridge interface
        return cmd

    def create_connection_vlan(self):
        cmd=[self.module.get_bin_path('nmcli', True)]
        # format for creating ethernet interface
        return cmd

    def modify_connection_vlan(self):
        cmd=[self.module.get_bin_path('nmcli', True)]
        # format for modifying ethernet interface
        return cmd

パラメータに合わせてcmdを拡張してゆくはずなのに、nmcliコマンドをそのまま返してる!

ちょっと前まではNICといえばbonding(or teaming) + bridgeにして
物理サーバはさっさと仮想環境化させるのが普通と思いbridgeは当然サポートしているもんだろうと考えていたが実は違うようだ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です