From 6e7bdb04eef88c13f67bcf6468e81dc825c66482 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Mon, 14 May 2018 21:10:28 -0400 Subject: [PATCH] enforce required config (cherry picked from commit cbedbd3c9c81908cc1ac6d7aa835bb9110fabb17) (cherry picked from commit bcabbe33c83d93daec680fb760e65ed527e515cf) --- lib/ansible/config/manager.py | 19 ++++++++++++++----- lib/ansible/plugins/lookup/vars.py | 3 ++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/ansible/config/manager.py b/lib/ansible/config/manager.py index c1370581b03..c0882a613db 100644 --- a/lib/ansible/config/manager.py +++ b/lib/ansible/config/manager.py @@ -343,11 +343,20 @@ class ConfigManager(object): # set default if we got here w/o a value if value is None: - value = defs[config].get('default') - origin = 'default' - # skip typing as this is a temlated default that will be resolved later in constants, which has needed vars - if plugin_type is None and isinstance(value, string_types) and (value.startswith('{{') and value.endswith('}}')): - return value, origin + if defs[config].get('required', False): + entry = '' + if plugin_type: + entry += 'plugin_type: %s ' % plugin_type + if plugin_name: + entry += 'plugin: %s ' % plugin_name + entry += 'setting: %s ' % config + raise AnsibleError("No setting was provided for required configuration %s" % (entry)) + else: + value = defs[config].get('default') + origin = 'default' + # skip typing as this is a temlated default that will be resolved later in constants, which has needed vars + if plugin_type is None and isinstance(value, string_types) and (value.startswith('{{') and value.endswith('}}')): + return value, origin # ensure correct type try: diff --git a/lib/ansible/plugins/lookup/vars.py b/lib/ansible/plugins/lookup/vars.py index 9fd77e63af6..c238cf57219 100644 --- a/lib/ansible/plugins/lookup/vars.py +++ b/lib/ansible/plugins/lookup/vars.py @@ -11,7 +11,7 @@ DOCUMENTATION = """ description: - Retrieves the value of an Ansible variable. options: - _term: + _terms: description: The variable names to look up. required: True default: @@ -69,6 +69,7 @@ class LookupModule(LookupBase): self._templar.set_available_variables(variables) myvars = getattr(self._templar, '_available_variables', {}) + self.set_option('_terms', terms) self.set_options(direct=kwargs) default = self.get_option('default')