[背景]
Ansibleでカスタムモジュール作成後、Playbook実行時にエラー「TypeError: init() takes at least 2 arguments (1 given)」が発生しました。カスタムモジュールの抜粋とエラーの詳細は以下の通りです。
<カスタムモジュールの抜粋(custom_module.py)>
!/usr/bin/env python
import sys
import json
import re
from ansible.module_utils.basic import AnsibleModule
…
<エラーの詳細>
TypeError: init() takes at least 2 arguments (1 given)
fatal: [ansible-dev-target-1]: FAILED! => {
“changed”: false,
“module_stderr”: “Shared connection to 35.78.107.42 closed.\r\n”,
“module_stdout”: “Traceback (most recent call last):\r\n File \”/home/ec2-user/.ansible/tmp/ansible-tmp-1671673337.05-9604-54280803883121/AnsiballZ_custom_module.py\”, line 102, in \r\n _ansiballz_main()\r\n File \”/home/ec2-user/.ansible/tmp/ansible-tmp-1671673337.05-9604-54280803883121/AnsiballZ_custom_module.py\”, line 94, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File \”/home/ec2-user/.ansible/tmp/ansible-tmp-1671673337.05-9604-54280803883121/AnsiballZ_custom_module.py\”, line 40, in invoke_module\r\n runpy.run_module(mod_name=’ansible.modules.custom_module’, init_globals=None, run_name=’main’, alter_sys=True)\r\n File \”/usr/lib64/python2.7/runpy.py\”, line 188, in run_module\r\n fname, loader, pkg_name)\r\n File \”/usr/lib64/python2.7/runpy.py\”, line 82, in _run_module_code\r\n mod_name, mod_fname, mod_loader, pkg_name)\r\n File \”/usr/lib64/python2.7/runpy.py\”, line 72, in _run_code\r\n exec code in run_globals\r\n File \”/tmp/ansible_custom_module_payload_qIDnIY/ansible_custom_module_payload.zip/ansible/modules/custom_module.py\”, line 13, in \r\n File \”/tmp/ansible_custom_module_payload_qIDnIY/ansible_custom_module_payload.zip/ansible/modules/custom_module.py\”, line 9, in main\r\nTypeError: init() takes at least 2 arguments (1 given)\r\n”,
“msg”: “MODULE FAILURE\nSee stdout/stderr for the exact error”,
“rc”: 1
}
[原因]
プレイブックからカスタムモジュールを呼び出し時に渡している引数が不足していたためです。
[対策]
プレイブックからカスタムモジュールを呼び出し時に渡している引数を追加しました。