diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:05:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:05:48 +0000 |
commit | ab76d0c3dcea928a1f252ce827027aca834213cd (patch) | |
tree | 7e3797bdd2403982f4a351608d9633c910aadc12 /lib/ansible/modules/raw.py | |
parent | Initial commit. (diff) | |
download | ansible-core-ab76d0c3dcea928a1f252ce827027aca834213cd.tar.xz ansible-core-ab76d0c3dcea928a1f252ce827027aca834213cd.zip |
Adding upstream version 2.14.13.upstream/2.14.13
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'lib/ansible/modules/raw.py')
-rw-r--r-- | lib/ansible/modules/raw.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/lib/ansible/modules/raw.py b/lib/ansible/modules/raw.py new file mode 100644 index 0000000..dc40a73 --- /dev/null +++ b/lib/ansible/modules/raw.py @@ -0,0 +1,88 @@ +# This is a virtual module that is entirely implemented server side + +# Copyright: (c) 2012, 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 + + +DOCUMENTATION = r''' +--- +module: raw +short_description: Executes a low-down and dirty command +version_added: historical +options: + free_form: + description: + - The raw module takes a free form command to run. + - There is no parameter actually named 'free form'; see the examples! + required: true + executable: + description: + - Change the shell used to execute the command. Should be an absolute path to the executable. + - When using privilege escalation (C(become)) a default shell will be assigned if one is not provided + as privilege escalation requires a shell. + version_added: "1.0" +description: + - Executes a low-down and dirty SSH command, not going through the module + subsystem. + - This is useful and should only be done in a few cases. A common + case is installing C(python) on a system without python installed by default. + Another is speaking to any devices such as + routers that do not have any Python installed. In any other case, using + the M(ansible.builtin.shell) or M(ansible.builtin.command) module is much more appropriate. + - Arguments given to C(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(ansible.builtin.script) module. + - This module is also supported for Windows targets. +extends_documentation_fragment: + - action_common_attributes + - action_common_attributes.raw +attributes: + check_mode: + support: none + diff_mode: + support: none + platform: + details: This action is one of the few that requires no Python on the remote as it passes the command directly into the connection string + platforms: all + raw: + support: full +notes: + - "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 + better to use the M(ansible.builtin.command) or M(ansible.builtin.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)). +seealso: +- module: ansible.builtin.command +- module: ansible.builtin.shell +- module: ansible.windows.win_command +- module: ansible.windows.win_shell +author: + - Ansible Core Team + - Michael DeHaan +''' + +EXAMPLES = r''' +- name: Bootstrap a host without python2 installed + ansible.builtin.raw: dnf install -y python2 python2-dnf libselinux-python + +- 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) + ansible.builtin.raw: cat < /tmp/*txt + args: + executable: /bin/bash + +- name: Safely use templated variables. Always use quote filter to avoid injection issues. + ansible.builtin.raw: "{{ package_mgr|quote }} {{ pkg_flags|quote }} install {{ python|quote }}" + +- name: List user accounts on a Windows system + ansible.builtin.raw: Get-WmiObject -Class Win32_UserAccount +''' |