2014-09-26 01:01:01 +00:00
|
|
|
# this is a virtual module that is entirely implemented server side
|
2017-07-29 07:20:36 +00:00
|
|
|
# Copyright: Ansible Project
|
|
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
__metaclass__ = type
|
2014-09-26 01:01:01 +00:00
|
|
|
|
2015-07-04 03:57:53 +00:00
|
|
|
|
2017-03-14 16:07:22 +00:00
|
|
|
ANSIBLE_METADATA = {'metadata_version': '1.0',
|
|
|
|
'status': ['stableinterface'],
|
|
|
|
'supported_by': 'core'}
|
|
|
|
|
2016-12-06 10:35:05 +00:00
|
|
|
|
2014-09-26 01:01:01 +00:00
|
|
|
DOCUMENTATION = '''
|
|
|
|
---
|
|
|
|
module: raw
|
|
|
|
short_description: Executes a low-down and dirty SSH command
|
2015-07-30 21:04:41 +00:00
|
|
|
version_added: historical
|
2014-09-26 01:01:01 +00:00
|
|
|
options:
|
|
|
|
free_form:
|
|
|
|
description:
|
2017-01-03 09:30:13 +00:00
|
|
|
- the raw module takes a free form command to run. There is no parameter actually named 'free form'; see the examples!
|
2014-09-26 01:01:01 +00:00
|
|
|
required: true
|
|
|
|
executable:
|
|
|
|
description:
|
|
|
|
- change the shell used to execute the command. Should be an absolute path to the executable.
|
2016-06-15 15:22:30 +00:00
|
|
|
- when using privilege escalation (C(become)), a default shell will be assigned if one is not provided
|
|
|
|
as privilege escalation requires a shell.
|
2014-09-26 01:01:01 +00:00
|
|
|
required: false
|
|
|
|
version_added: "1.0"
|
2016-12-08 14:38:05 +00:00
|
|
|
description:
|
2014-09-26 01:01:01 +00:00
|
|
|
- Executes a low-down and dirty SSH command, not going through the module
|
|
|
|
subsystem. This is useful and should only be done in two cases. The
|
|
|
|
first case is installing C(python-simplejson) on older (Python 2.4 and
|
|
|
|
before) hosts that need it as a dependency to run modules, since nearly
|
|
|
|
all core modules require it. Another is speaking to any devices such as
|
|
|
|
routers that do not have any Python installed. In any other case, using
|
|
|
|
the M(shell) or M(command) module is much more appropriate. Arguments
|
2017-02-13 14:02:34 +00:00
|
|
|
given to C(raw) are run directly through the configured remote shell.
|
2014-09-26 01:01:01 +00:00
|
|
|
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.
|
2017-06-26 15:26:53 +00:00
|
|
|
- This module is also supported for Windows targets.
|
2014-09-26 01:01:01 +00:00
|
|
|
notes:
|
2016-02-03 21:07:30 +00:00
|
|
|
- "If using raw from a playbook, you may need to disable fact gathering
|
|
|
|
using C(gather_facts: no) if you're using C(raw) to bootstrap python
|
|
|
|
onto the machine."
|
|
|
|
- If you want to execute a command securely and predictably, it may be
|
2016-06-15 15:22:30 +00:00
|
|
|
better to use the M(command) or M(shell) modules instead.
|
|
|
|
- the C(environment) keyword does not work with raw normally, it requires a shell
|
|
|
|
which means it only works if C(executable) is set or using the module
|
|
|
|
with privilege escalation (C(become)).
|
2017-06-26 15:26:53 +00:00
|
|
|
- This module is also supported for Windows targets.
|
2016-06-15 15:22:30 +00:00
|
|
|
author:
|
2015-06-15 19:53:30 +00:00
|
|
|
- Ansible Core Team
|
|
|
|
- Michael DeHaan
|
2014-09-26 01:01:01 +00:00
|
|
|
'''
|
|
|
|
|
|
|
|
EXAMPLES = '''
|
2017-01-10 16:17:33 +00:00
|
|
|
- name: Bootstrap a legacy python 2.4 host
|
|
|
|
raw: yum -y install python-simplejson
|
2016-02-03 21:07:30 +00:00
|
|
|
|
2017-01-10 16:17:33 +00:00
|
|
|
- name: Bootstrap a host without python2 installed
|
|
|
|
raw: dnf install -y python2 python2-dnf libselinux-python
|
2016-02-03 21:07:30 +00:00
|
|
|
|
2017-01-10 16:17:33 +00:00
|
|
|
- name: Run a command that uses non-posix shell-isms (in this example /bin/sh doesn't handle redirection and wildcards together but bash does)
|
|
|
|
raw: cat < /tmp/*txt
|
2016-02-03 21:07:30 +00:00
|
|
|
args:
|
|
|
|
executable: /bin/bash
|
2017-01-10 16:17:33 +00:00
|
|
|
|
|
|
|
- name: safely use templated variables. Always use quote filter to avoid injection issues.
|
2017-02-07 21:39:24 +00:00
|
|
|
raw: "{{package_mgr|quote}} {{pkg_flags|quote}} install {{python_simplejson|quote}}"
|
2014-09-26 01:01:01 +00:00
|
|
|
'''
|