W3cubDocs

/Ansible

script - Runs a local script on a remote node after transferring it

Synopsis

  • The script module takes the script name followed by a list of space-delimited arguments.
  • The local script at path will be transferred to the remote node and then executed.
  • The given script will be processed through the shell environment on the remote node.
  • This module does not require python on the remote system, much like the raw module.
  • This module is also supported for Windows targets.

Options

parameter required default choices comments
chdir
(added in 2.4)
no
cd into this directory on the remote node before running the script
creates
(added in 1.5)
no
a filename, when it already exists, this step will not be run.
decrypt
(added in 2.4)
no Yes
  • yes
  • no
This option controls the autodecryption of source files using vault.
free_form
yes
path to the local script file followed by optional arguments. There is no parameter actually named 'free form'; see the examples!
removes
(added in 1.5)
no
a filename, when it does not exist, this step will not be run.

Examples

# Example from Ansible Playbooks
- script: /some/local/script.sh --some-arguments 1234

# Run a script that creates a file, but only if the file is not yet created
- script: /some/local/create_file.sh --some-arguments 1234
  args:
    creates: /the/created/file.txt

# Run a script that removes a file, but only if the file is not yet removed
- script: /some/local/remove_file.sh --some-arguments 1234
  args:
    removes: /the/removed/file.txt

Notes

Note

  • It is usually preferable to write Ansible modules than pushing scripts. Convert your script to an Ansible module for bonus points!
  • The ssh connection plugin will force pseudo-tty allocation via -tt when scripts are executed. pseudo-ttys do not have a stderr channel and all stderr is sent to stdout. If you depend on separated stdout and stderr result keys, please switch to a copy+command set of tasks instead of using script.
  • This module is also supported for Windows targets.

Status

This module is flagged as stableinterface which means that the maintainers for this module guarantee that no backward incompatible interface changes will be made.

Maintenance Info

For more information about Red Hat’s this support of this module, please refer to this knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>

For help in developing on modules, should you be so inclined, please read Community Information & Contributing, Testing Ansible and Developing Modules.

© 2012–2017 Michael DeHaan
© 2017 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/script_module.html