Make script module use raw module so it does not require python
This commit is contained in:
parent
3d3deb9797
commit
eb36ff45b9
3 changed files with 26 additions and 15 deletions
|
@ -34,9 +34,6 @@ class ActionModule(object):
|
|||
def run(self, conn, tmp, module_name, module_args, inject):
|
||||
''' handler for file transfer operations '''
|
||||
|
||||
# load up options
|
||||
options = utils.parse_kv(module_args)
|
||||
|
||||
tokens = shlex.split(module_args)
|
||||
source = tokens[0]
|
||||
# FIXME: error handling
|
||||
|
@ -44,8 +41,6 @@ class ActionModule(object):
|
|||
source = utils.template(self.runner.basedir, source, inject)
|
||||
source = utils.path_dwim(self.runner.basedir, source)
|
||||
|
||||
exec_rc = None
|
||||
|
||||
# transfer the file to a remote tmp location
|
||||
source = source.replace('\x00','') # why does this happen here?
|
||||
args = args.replace('\x00','') # why does this happen here?
|
||||
|
@ -56,12 +51,18 @@ class ActionModule(object):
|
|||
|
||||
# fix file permissions when the copy is done as a different user
|
||||
if self.runner.sudo and self.runner.sudo_user != 'root':
|
||||
self.runner._low_level_exec_command(conn, "chmod a+r %s" % tmp_src, tmp)
|
||||
prepcmd = 'chmod a+rx %s' % tmp_src
|
||||
else:
|
||||
prepcmd = 'chmod +x %s' % tmp_src
|
||||
|
||||
# make executable
|
||||
self.runner._low_level_exec_command(conn, "chmod +x %s" % tmp_src, tmp)
|
||||
# add preparation steps to one ssh roundtrip executing the script
|
||||
module_args = prepcmd + '; ' + tmp_src + ' ' + args
|
||||
|
||||
# run it through the command module
|
||||
module_args = tmp_src + " " + args + " #USE_SHELL"
|
||||
return self.runner._execute_module(conn, tmp, 'command', module_args, inject=inject)
|
||||
handler = utils.plugins.action_loader.get('raw', self.runner)
|
||||
result = handler.run(conn, tmp, 'raw', module_args, inject)
|
||||
|
||||
# clean up after
|
||||
if tmp.find("tmp") != -1 and C.DEFAULT_KEEP_REMOTE_FILES != '1':
|
||||
self.runner._low_level_exec_command(conn, 'rm -rf %s >/dev/null 2>&1' % tmp, tmp)
|
||||
|
||||
return result
|
||||
|
|
10
library/raw
10
library/raw
|
@ -16,8 +16,16 @@ description:
|
|||
given to M(raw) are run directly through the configured remote shell.
|
||||
Standard output, error output and return code are returned when
|
||||
available. There is no change handler support for this module.
|
||||
- This module does not require python on the remote system, much like
|
||||
the M(script) module.
|
||||
examples:
|
||||
- description: Example from C(/usr/bin/ansible) to bootstrap a legacy python 2.4 host
|
||||
code: ansible newhost.example.com -m raw -a "yum -y install python-simplejson"
|
||||
code: "action: raw yum -y install python-simplejson"
|
||||
notes:
|
||||
- If you want to execute a command securely and predictably, it may be
|
||||
better to use the M(command) module instead. Best practices when writing
|
||||
playbooks will follow the trend of using M(command) unless M(shell) is
|
||||
explicitly required. When running ad-hoc commands, use your best
|
||||
judgement.
|
||||
author: Michael DeHaan
|
||||
'''
|
||||
|
|
|
@ -4,9 +4,11 @@ DOCUMENTATION = """
|
|||
module: script
|
||||
short_description: Runs a local script on a remote node
|
||||
description:
|
||||
- The M(script) module takes the script name followed by a list of space-delimited arguments.
|
||||
- The M(script) module takes the script name followed by a list of
|
||||
space-delimited arguments.
|
||||
- The given script will be processed through the shell environment.
|
||||
- See also the M(command) and M(shell) modules.
|
||||
- This module does not require python on the remote system, much like
|
||||
the M(raw) module.
|
||||
options:
|
||||
free_form:
|
||||
description:
|
||||
|
@ -16,7 +18,7 @@ options:
|
|||
aliases: []
|
||||
examples:
|
||||
- description: "Example from Ansible Playbooks"
|
||||
code: "script: /some/local/script.sh --some-arguments 1234"
|
||||
code: "action: script /some/local/script.sh --some-arguments 1234"
|
||||
notes:
|
||||
- It is preferable to write Ansible modules than pushing scripts. Convert your script to an Ansible module for bonus points!
|
||||
author: Michael DeHaan
|
||||
|
|
Loading…
Reference in a new issue