ansible / ansible.builtin / v2.15.2 / module / command Execute commands on targets | "added in version" historical of ansible.builtin" Authors: Ansible Core Team, Michael DeHaan This plugin has a corresponding action plugin.ansible.builtin.command (v2.15.2) — module
pip
Install with pip install ansible-core==2.15.2
The C(command) module takes the command name followed by a list of space-delimited arguments.
The given command will be executed on all selected nodes.
The command(s) will not be processed through the shell, so variables like C($HOSTNAME) and operations like C("*"), C("<"), C(">"), C("|"), C(";") and C("&") will not work. Use the M(ansible.builtin.shell) module if you need these features.
To create C(command) tasks that are easier to read than the ones using space-delimited arguments, pass parameters using the C(args) L(task keyword,https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html#task) or use C(cmd) parameter.
Either a free form command or C(cmd) parameter is required, see the examples.
For Windows targets, use the M(ansible.windows.win_command) module instead.
- name: Return motd to registered var ansible.builtin.command: cat /etc/motd register: mymotd
# free-form (string) arguments, all arguments on one line - name: Run command if /path/to/database does not exist (without 'args') ansible.builtin.command: /usr/bin/make_database.sh db_user db_name creates=/path/to/database
# free-form (string) arguments, some arguments on separate lines with the 'args' keyword # 'args' is a task keyword, passed at the same level as the module - name: Run command if /path/to/database does not exist (with 'args' keyword) ansible.builtin.command: /usr/bin/make_database.sh db_user db_name args: creates: /path/to/database
# 'cmd' is module parameter - name: Run command if /path/to/database does not exist (with 'cmd' parameter) ansible.builtin.command: cmd: /usr/bin/make_database.sh db_user db_name creates: /path/to/database
- name: Change the working directory to somedir/ and run the command as db_owner if /path/to/database does not exist ansible.builtin.command: /usr/bin/make_database.sh db_user db_name become: yes become_user: db_owner args: chdir: somedir/ creates: /path/to/database
# argv (list) arguments, each argument on a separate line, 'args' keyword not necessary # 'argv' is a parameter, indented one level from the module - name: Use 'argv' to send a command as a list - leave 'command' empty ansible.builtin.command: argv: - /usr/bin/make_database.sh - Username with whitespace - dbname with whitespace creates: /path/to/database
- name: Safely use templated variable to run command. Always use the quote filter to avoid injection issues ansible.builtin.command: cat {{ myfile|quote }} register: myoutput
cmd: description: - The command to run. type: str argv: description: - Passes the command as a list rather than a string. - Use C(argv) to avoid quoting values that would otherwise be interpreted incorrectly (for example "user name"). - Only the string (free form) or the list (argv) form can be provided, not both. One or the other must be provided. elements: str type: list version_added: '2.6' version_added_collection: ansible.builtin chdir: description: - Change into this directory before running the command. type: path version_added: '0.6' version_added_collection: ansible.builtin stdin: description: - Set the stdin of the command directly to the specified value. type: str version_added: '2.4' version_added_collection: ansible.builtin creates: description: - A filename or (since 2.0) glob pattern. If a matching file already exists, this step B(will not) be run. - This is checked before I(removes) is checked. type: path removes: description: - A filename or (since 2.0) glob pattern. If a matching file exists, this step B(will) be run. - This is checked after I(creates) is checked. type: path version_added: '0.8' version_added_collection: ansible.builtin free_form: description: - The command module takes a free form string as a command to run. - There is no actual parameter named 'free form'. strip_empty_ends: default: true description: - Strip empty lines from the end of stdout/stderr in result. type: bool version_added: '2.8' version_added_collection: ansible.builtin stdin_add_newline: default: true description: - If set to C(true), append a newline to stdin data. type: bool version_added: '2.8' version_added_collection: ansible.builtin
cmd: description: The command executed by the task. returned: always sample: - echo - hello type: list delta: description: The command execution delta time. returned: always sample: '0:00:00.001529' type: str end: description: The command execution end time. returned: always sample: '2017-09-29 22:03:48.084657' type: str msg: description: changed returned: always sample: true type: bool rc: description: The command return code (0 means success). returned: always sample: 0 type: int start: description: The command execution start time. returned: always sample: '2017-09-29 22:03:48.083128' type: str stderr: description: The command standard error. returned: always sample: 'ls cannot access foo: No such file or directory' type: str stderr_lines: description: The command standard error split in lines. returned: always sample: - u'ls cannot access foo: No such file or directory' - "u'ls \u2026'" type: list stdout: description: The command standard output. returned: always sample: "Clustering node rabbit@slave1 with rabbit@master \u2026" type: str stdout_lines: description: The command standard output split in lines. returned: always sample: - "u'Clustering node rabbit@slave1 with rabbit@master \u2026'" type: list