command – Выполнение команд на целевых узлах
Описание
- Модуль
commandпринимает имя команды, за которым следует список аргументов, разделенных пробелами. - Указанная команда будет выполнена на всех выбранных узлах.
- Команда(ы) не будут обрабатываться через оболочку, поэтому переменные, такие как
$HOME, и операции, такие как"<",">","|",";"и"&", не будут работать. Используйте модуль shell, если вам нужны эти функции. - Для создания
commandзадач, которые проще читать, передавайте параметры с помощьюargsключа task. - Для целевых узлов Windows используйте модуль win_command вместо этого.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| argv список добавлено в 2.6 | Передает команду в виде списка, а не строки. Используйте argv для предотвращения цитирования значений, которые в противном случае будут неправильно интерпретированы (например, "имя пользователя").Можно предоставить только строку или список, но не оба. Один из них должен быть указан. | |
| chdir путь | Изменить текущую директорию перед выполнением команды. | |
| creates путь | Имя файла или (с версии 2.0) шаблон подстановки. Если файл уже существует, этот шаг не будет выполнен. | |
| free_form - / обязательно | Модуль команды принимает свободную команду для выполнения. На самом деле параметра с именем 'free form' нет. См. примеры использования этого модуля. | |
| removes путь | Имя файла или (с версии 2.0) шаблон подстановки. Если файл уже существует, этот шаг будет выполнен. | |
| stdin - добавлено в 2.4 | Установить stdin команды непосредственно на указанное значение. | |
| stdin_add_newline булево добавлено в 2.8 |
| Если установлено yes, добавить перевод строки к данным stdin. |
| strip_empty_ends булево добавлено в 2.8 |
| Удалить пустые строки с конца stdout/stderr в результате. |
| warn булево |
| Включить или отключить предупреждения задачи. |
Примечания
Примечание
- Если вы хотите выполнить команду через оболочку (например, используете
<,>,|, и т.д.), вам на самом деле нужен модуль shell. Разбор метасимволов оболочки может привести к неожиданному выполнению команд, если цитирование не выполняется правильно, поэтому безопаснее использовать модульcommandпо возможности. -
creates,removes, иchdirможно указать после команды. Например, если вы хотите выполнить команду только в том случае, если определенный файл не существует, используйте это. - Режим проверки поддерживается при передаче
createsилиremoves. Если выполняется в режиме проверки и указаны эти параметры, модуль проверит существование файла и сообщит об изменениях статуса. Если эти параметры не указаны, задача будет пропущена. - Параметр
executableудален с версии 2.4. Если вам нужен этот параметр, используйте модуль shell вместо него. - Для целевых узлов Windows используйте модуль win_command вместо этого.
- Для перезагрузки систем используйте модули reboot или win_reboot.
См. также
См. также
- raw – Выполнение низкоуровневой и грязной команды
- Официальная документация по модулю raw.
- script – Запуск локального скрипта на удаленном узле после передачи
- Официальная документация по модулю script.
- shell – Выполнение команд оболочки на целевых узлах
- Официальная документация по модулю shell.
- win_command – Выполнение команды на удаленном узле Windows
- Официальная документация по модулю win_command.
Примеры
- name: return motd to registered var
command: cat /etc/motd
register: mymotd
- 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
# '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').
command: /usr/bin/make_database.sh db_user db_name
args:
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' 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
- name: safely use templated variable to run command. Always use the quote filter to avoid injection issues.
command: cat {{ myfile|quote }}
register: myoutput
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие — это поля, уникальные для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| cmd список | всегда | команда, которая была выполнена на удаленном узле Пример: ['echo', 'hello'] |
| delta строка | всегда | время окончания команды - время начала команды Пример: 0.001529 |
| end строка | всегда | время окончания команды Пример: 2017-09-29 22:03:48.084657 |
| start строка | всегда | время начала команды Пример: 2017-09-29 22:03:48.083128 |
Статус
- Этот модуль гарантированно не будет иметь изменений интерфейса, несовместимых с предыдущими версиями, в дальнейшем. [stableinterface]
- Этот модуль поддерживается командой Ansible Core. [core]
Поддержка Red Hat
Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний Red Hat.
Авторы
- Команда Ansible Core
- Майкл ДеХан
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/command_module.html