summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ansible/config/base.yml17
-rw-r--r--lib/ansible/inventory/manager.py2
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/ansible/config/base.yml b/lib/ansible/config/base.yml
index 020ffeb0c7..1becb5330c 100644
--- a/lib/ansible/config/base.yml
+++ b/lib/ansible/config/base.yml
@@ -1375,6 +1375,18 @@ HOST_KEY_CHECKING:
ini:
- {key: host_key_checking, section: defaults}
type: boolean
+INVENTORY_ANY_ERRORS_FATAL:
+ name: Controls whether any unparseable inventory source is a fatal error
+ default: False
+ description: >
+ If 'true', it is a fatal error when any given inventory source
+ cannot be successfully parsed by any available inventory plugin;
+ otherwise, this situation only attracts a warning.
+ type: boolean
+ env: [{name: ANSIBLE_INVENTORY_ERRORS_FATAL}]
+ ini:
+ - {key: any_errors_fatal, section: inventory}
+ version_added: "2.7"
INVENTORY_ENABLED:
name: Active Inventory plugins
default: ['host_list', 'script', 'yaml', 'ini', 'auto']
@@ -1412,7 +1424,10 @@ INVENTORY_IGNORE_PATTERNS:
INVENTORY_UNPARSED_IS_FAILED:
name: Unparsed Inventory failure
default: False
- description: If 'true' unparsed inventory sources become fatal errors, they are warnings otherwise.
+ description: >
+ If 'true' it is a fatal error if every single potential inventory
+ source fails to parse, otherwise this situation will only attract a
+ warning.
env: [{name: ANSIBLE_INVENTORY_UNPARSED_FAILED}]
ini:
- {key: unparsed_is_failed, section: inventory}
diff --git a/lib/ansible/inventory/manager.py b/lib/ansible/inventory/manager.py
index 0772cff636..a39bc620f1 100644
--- a/lib/ansible/inventory/manager.py
+++ b/lib/ansible/inventory/manager.py
@@ -285,6 +285,8 @@ class InventoryManager(object):
display.warning(u'\n* Failed to parse %s with %s plugin: %s' % (to_text(fail['src']), fail['plugin'], to_text(fail['exc'])))
if hasattr(fail['exc'], 'tb'):
display.vvv(to_text(fail['exc'].tb))
+ if C.INVENTORY_ANY_ERRORS_FATAL:
+ raise AnsibleError(u'Completely failed to parse inventory source %s' % (to_text(source)))
if not parsed:
display.warning("Unable to parse %s as an inventory source" % to_text(source))