けつあご日記

tinojiはやみのふぃくさーにしかなりたくない.ひゃっぽゆずっててんほういは,あり.

AnsibleのhostにPythonのsystemdモジュールを入れたら名前衝突して死んだ

Pythonでjournaldにログを流したくて、何の気なしにコレを入れたらansibleが流せなくなった。

pypi.org

$ pip install systemd
TASK [ansible-role-foo : check pip] *********************************************************************************************************************************************************************************************************************************
fatal: [redis_2]: FAILED! => {"changed": false, "module_stderr": "Shared connection to 192.168.0.33 closed.\r\n", "module_stdout": "\r\nTraceback (most recent call last):\r\n  File \"/home/netcorp/.ansible/tmp/ansible-tmp-1563421779.05-167833696292502/AnsiballZ_command.py\", line 114, in <module>\r\n    _ansiballz_main()\r\n  File \"/home/netcorp/.ansible/tmp/ansible-tmp-1563421779.05-167833696292502/AnsiballZ_command.py\", line 106, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \"/home/netcorp/.ansible/tmp/ansible-tmp-1563421779.05-167833696292502/AnsiballZ_command.py\", line 49, in invoke_module\r\n    imp.load_module('__main__', mod, module, MOD_DESC)\r\n  File \"/tmp/ansible_command_payload_1C43Pp/__main__.py\", line 327, in <module>\r\n  File \"/tmp/ansible_command_payload_1C43Pp/__main__.py\", line 228, in main\r\n  File \"/tmp/ansible_command_payload_1C43Pp/ansible_command_payload.zip/ansible/module_utils/basic.py\", line 691, in __init__\r\n  File \"/tmp/ansible_command_payload_1C43Pp/ansible_command_payload.zip/ansible/module_utils/basic.py\", line 1940, in _log_invocation\r\n  File \"/tmp/ansible_command_payload_1C43Pp/ansible_command_payload.zip/ansible/module_utils/basic.py\", line 1898, in log\r\n  File \"systemd/_journal.pyx\", line 68, in systemd._journal.send\r\n  File \"systemd/_journal.pyx\", line 32, in systemd._journal._send\r\nValueError: Key name may not begin with an underscore\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
...ignoring

Ansible自体が使用していたsystemdモジュールが効かなくなって死んだぽい?

正解はこっちである。紛らわしい pypi.org

$ pip install systemd-python

前者の方、リポジトリを見たら最新版では名前衝突しないように?モジュール名が変わっている。バージョンが0系だった時点で疑うべきたった、、、 github.com

結局cythonのラッパーを使う必要は全く無いのでsystemd-pythonの方を使うことにした。解決。


Ansible実践ガイド 第2版 (impress top gear)

Ansible実践ガイド 第2版 (impress top gear)