[背景]
Ansibleでカスタムモジュール作成後、Playbook実行時にエラー「NameError: global name ‘ansible_module’ is not defined」が発生しました。カスタムモジュールの抜粋とエラーの詳細は以下の通りです。
<カスタムモジュールの抜粋(custom_module.py)>
!/usr/bin/env python
import sys
import json
import re
from ansible.module_utils.basic import ansible_module
…
<エラーの詳細>
NameError: global name ‘ansible_module’ is not defined
fatal: [ansible-dev-target-2]: FAILED! => {
“changed”: false,
“module_stderr”: “Shared connection to 35.78.116.158 closed.\r\n”,
“module_stdout”: “Traceback (most recent call last):\r\n File \”/home/ec2-user/.ansible/tmp/ansible-tmp-1671673127.93-9310-128084209558476/AnsiballZ_custom_module.py\”, line 102, in \r\n _ansiballz_main()\r\n File \”/home/ec2-user/.ansible/tmp/ansible-tmp-1671673127.93-9310-128084209558476/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-1671673127.93-9310-128084209558476/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__5n1Sv/ansible_custom_module_payload.zip/ansible/modules/custom_module.py\”, line 13, in \r\n File \”/tmp/ansible_custom_module_payload__5n1Sv/ansible_custom_module_payload.zip/ansible/modules/custom_module.py\”, line 9, in main\r\nNameError: global name ‘ansible_module’ is not defined\r\n”,
“msg”: “MODULE FAILURE\nSee stdout/stderr for the exact error”,
“rc”: 1
}
[原因]
カスタムモジュール内でインポートしているモジュール名誤り。
×ansible_module
〇AnsibleModule
[対策]
カスタムモジュール内のインポート処理を以下の通り修正しました。
- from ansible.module_utils.basic import AnsibleModule