Note
This module is part of ansible-base and included in all Ansible installations. In most cases, you can use the short module name command even without specifying the collections: keyword. Despite that, we recommend you use the FQCN for easy linking to the module documentation and to avoid conflicting with other collections that may have the same module name.
command module takes the command name followed by a list of space-delimited arguments.$HOSTNAME and operations like "*", "<", ">", "|", ";" and "&" will not work. Use the ansible.builtin.shell module if you need these features.command tasks that are easier to read than the ones using space-delimited arguments, pass parameters using the args task keyword or use cmd parameter.cmd parameter is required, see the examples.Note
This module has a corresponding action plugin.
| Parameter | Choices/Defaults | Comments |
|---|---|---|
| argv list / elements=string added in 2.6 of ansible.builtin | Passes the command as a list rather than a string. Use 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. | |
| chdir path added in 0.6 of ansible.builtin | Change into this directory before running the command. | |
| cmd string | The command to run. | |
| creates path | A filename or (since 2.0) glob pattern. If a matching file already exists, this step won't be run. | |
| free_form string | The command module takes a free form string as a command to run. There is no actual parameter named 'free form'. | |
| removes path added in 0.8 of ansible.builtin | A filename or (since 2.0) glob pattern. If a matching file exists, this step will be run. | |
| stdin string added in 2.4 of ansible.builtin | Set the stdin of the command directly to the specified value. | |
| stdin_add_newline boolean added in 2.8 of ansible.builtin |
| If set to yes, append a newline to stdin data. |
| strip_empty_ends boolean added in 2.8 of ansible.builtin |
| Strip empty lines from the end of stdout/stderr in result. |
| warn boolean added in 1.8 of ansible.builtin |
| Enable or disable task warnings. |
Note
<, >, |, etc), you actually want the ansible.builtin.shell module instead. Parsing shell metacharacters can lead to unexpected commands being executed if quoting is not done correctly so it is more secure to use the command module when possible.creates, removes, and chdir can be specified after the command. For instance, if you only want to run a command if a certain file does not exist, use this.creates or removes. If running in check mode and either of these are specified, the module will check for the existence of the file and report the correct changed status. If these are not supplied, the task will be skipped.executable parameter is removed since version 2.4. If you have a need for this parameter, use the ansible.builtin.shell module instead.See also
The official documentation on the ansible.builtin.raw module.
The official documentation on the ansible.builtin.script module.
The official documentation on the ansible.builtin.shell module.
The official documentation on the ansible.windows.win_command module.
- name: Return motd to registered var
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')
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)
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)
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
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
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
command: cat {{ myfile|quote }}
register: myoutput
Common return values are documented here, the following are the fields unique to this module:
| Key | Returned | Description |
|---|---|---|
| cmd list / elements=string | always | The command executed by the task Sample: ['echo', 'hello'] |
| delta string | always | The command execution delta time Sample: 0:00:00.001529 |
| end string | always | The command execution end time Sample: 2017-09-29 22:03:48.084657 |
| msg boolean | always | changed Sample: True |
| rc integer | always | The command return code (0 means success) |
| start string | always | The command execution start time Sample: 2017-09-29 22:03:48.083128 |
| stderr string | always | The command standard error Sample: ls cannot access foo: No such file or directory |
| stderr_lines list / elements=string | always | The command standard error split in lines Sample: [{"u'ls cannot access foo": "No such file or directory'"}, "u'ls …'"] |
| stdout string | always | The command standard output Sample: Clustering node rabbit@slave1 with rabbit@master … |
| stdout_lines list / elements=string | always | The command standard output split in lines Sample: ["u'Clustering node rabbit@slave1 with rabbit@master …'"] |
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/ansible/builtin/command_module.html