ansible: support environment: too.
This commit is contained in:
parent
e3842db315
commit
950e9f3364
|
@ -96,7 +96,7 @@ def monkey_fail_json(self, **kwargs):
|
|||
raise ModuleError(kwargs.get('msg'), kwargs)
|
||||
|
||||
|
||||
def run_module(module, raw_params=None, args=None):
|
||||
def run_module(module, raw_params=None, args=None, env=None):
|
||||
"""
|
||||
Set up the process environment in preparation for running an Ansible
|
||||
module. This monkey-patches the Ansible libraries in various places to
|
||||
|
@ -114,6 +114,10 @@ def run_module(module, raw_params=None, args=None):
|
|||
'ANSIBLE_MODULE_ARGS': args
|
||||
})
|
||||
|
||||
if env:
|
||||
original_env = os.environ.copy()
|
||||
os.environ.update((k, str(v)) for k, v in env.iteritems())
|
||||
|
||||
try:
|
||||
mod = __import__(module, {}, {}, [''])
|
||||
# Ansible modules begin execution on import. Thus the above __import__
|
||||
|
@ -123,16 +127,22 @@ def run_module(module, raw_params=None, args=None):
|
|||
# explicitly.
|
||||
mod.main()
|
||||
except (Exit, ModuleError), e:
|
||||
return json.dumps(e.dct)
|
||||
result = json.dumps(e.dct)
|
||||
|
||||
if env:
|
||||
os.environ.clear()
|
||||
os.environ.update(original_env)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def _async_main(job_id, module, raw_params, args):
|
||||
def _async_main(job_id, module, raw_params, args, env):
|
||||
"""
|
||||
Implementation for the thread that implements asynchronous module
|
||||
execution.
|
||||
"""
|
||||
try:
|
||||
rc = run_module(module, raw_params, args)
|
||||
rc = run_module(module, raw_params, args, env)
|
||||
except Exception, e:
|
||||
rc = mitogen.core.CallError(e)
|
||||
|
||||
|
|
|
@ -165,11 +165,15 @@ class ActionModuleMixin(ansible.plugins.action.ActionBase):
|
|||
else:
|
||||
helper = ansible_mitogen.helpers.run_module
|
||||
|
||||
env = {}
|
||||
self._compute_environment_string(env)
|
||||
|
||||
# replaces 110 lines
|
||||
js = self.call(
|
||||
helper,
|
||||
get_command_module_name(module_name),
|
||||
args=cast(module_args),
|
||||
env=cast(env),
|
||||
)
|
||||
|
||||
data = self._parse_returned_data({
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
# Ensure environment: is preserved during call.
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
|
||||
- shell: echo $SOME_ENV
|
||||
environment:
|
||||
SOME_ENV: 123
|
||||
register: result
|
||||
|
||||
- debug: msg={{result}}
|
||||
|
||||
- assert:
|
||||
that: "result.stdout == '123'"
|
||||
|
Loading…
Reference in New Issue