ansible/ansible · error · ValueError
Module METADATA must defined only once.
Error message
Module METADATA must defined only once.
What it means
Error "Module METADATA must defined only once." thrown in ansible/ansible.
Source
Thrown at lib/ansible/executor/module_common.py:794
if not C.config.get_config_value('_MODULE_METADATA'):
return _DEFAULT_LEGACY_METADATA
metadata_nodes: list[ast.Assign] = []
for node in module.body:
if isinstance(node, ast.Assign):
if len(node.targets) == 1:
target = node.targets[0]
if isinstance(target, ast.Name):
if target.id == 'METADATA':
metadata_nodes.append(node)
if not metadata_nodes:
return _DEFAULT_LEGACY_METADATA
if len(metadata_nodes) > 1:
raise ValueError('Module METADATA must defined only once.')
metadata_node = metadata_nodes[0]
if not isinstance(metadata_node.value, ast.Constant):
raise TypeError(f'Module METADATA node must be {ast.Constant} not {type(metadata_node)}.')
unparsed_metadata = metadata_node.value.value
if not isinstance(unparsed_metadata, str):
raise TypeError(f'Module METADATA must be {str} not {type(unparsed_metadata)}.')
try:
parsed_metadata = yaml_load(unparsed_metadata)
except Exception as ex:
raise ValueError('Module METADATA must be valid YAML.') from ex
if not isinstance(parsed_metadata, dict):
raise TypeError(f'Module METADATA must parse to {dict} not {type(parsed_metadata)}.')View on GitHub (pinned to 9cf16a4aca)
Solutions
- Remove duplicate METADATA definitions in the module; only one is allowed.
When it happens
Trigger: Thrown at lib/ansible/executor/module_common.py:794 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ansible/ansible@9cf16a4aca (2026-08-15).
Data as JSON: /api/errors/c149612b051f5ad4.
Report an issue: GitHub.