command – Выполнение команд на целевых узлах
Описание
- Модуль
commandпринимает имя команды, за которым следует список аргументов, разделенных пробелами. - Указанная команда будет выполнена на всех выбранных узлах.
- Команды не будут обрабатываться через оболочку, поэтому переменные, такие как
$HOME, и операции, такие как"<",">","|",";"и"&", не будут работать. Используйте модуль shell, если вам нужны эти возможности. - Чтобы создать
commandзадачи, которые легче читать, чем задачи с использованием аргументов, разделенных пробелами, передавайте параметры с помощью ключевого словаargstask или используйте параметрcmd. - Требуется либо команда в свободном формате, либо параметр
cmd, см. примеры. - Для целевых узлов Windows используйте модуль win_command вместо этого.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
|
argv
список
добавлен в 2.6
|
Передает команду в виде списка, а не строки.
Используйте
argv для предотвращения цитирования значений, которые в противном случае были бы интерпретированы неправильно (например, "имя пользователя").Можно указать либо строку, либо список, но не оба одновременно. Один из них должен быть предоставлен.
|
|
|
chdir
путь
|
Изменить текущий каталог перед выполнением команды.
|
|
|
cmd
строка
|
Команда для выполнения. |
|
|
creates
путь
|
Имя файла или (с версии 2.0) шаблон glob. Если файл уже существует, этот шаг не будет выполнен. |
|
|
free_form
-
|
Модуль команд принимает команду в свободном формате для выполнения. Фактически параметра с именем 'free form' нет. |
|
|
removes
путь
|
Имя файла или (с версии 2.0) шаблон glob. Если файл уже существует, этот шаг будет выполнен. |
|
|
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' keyword).
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' 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' 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
- Michael DeHaan
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете изменить этот документ для его улучшения.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/command_module.html