diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 9ab2fc6edbd..e38dc915184 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -475,6 +475,7 @@ class Runner(object): inject['hostvars'] = self.setup_cache items = self.module_vars.get('items', []) + if isinstance(items, basestring) and items.startswith("$"): items = items.replace("$","") if items in inject: @@ -483,6 +484,11 @@ class Runner(object): raise errors.AnsibleError("unbound variable in with_items: %s" % items) if type(items) != list: raise errors.AnsibleError("with_items only takes a list: %s" % items) + + if self.module_name in [ 'apt' ]: + # hack for apt and soon yum, with_items maps back into a single module call + inject['item'] = ",".join(items) + items = [] if len(items) == 0: return self._executor_internal_inner(host, inject, port) diff --git a/library/yum b/library/yum index 10a623c8032..03f45d960d0 100755 --- a/library/yum +++ b/library/yum @@ -106,7 +106,7 @@ def run_yum(command): rc = 1 err = traceback.format_exc() out = '' - + if out is None: out = '' if err is None: @@ -119,7 +119,7 @@ def run_yum(command): def ensure(my, state, pkgspec): yumconf = my.conf.config_file_path res = {} - if state == 'installed': + if state in [ 'installed', 'present' ]: # check if pkgspec is installed if re.search('[>