ansible.builtin.command – Выполнение команд на целевых узлах
Примечание
Этот модуль является частью ansible-base и включён во все установки Ansible. В большинстве случаев вы можете использовать короткое имя модуля command, даже не указывая ключевое слово collections:. Несмотря на это, мы рекомендуем использовать полное имя класса (FQCN) для лёгкой ссылки на документацию модуля и для предотвращения конфликтов с другими коллекциями, которые могут иметь то же имя модуля.
Описание
- Модуль
commandпринимает имя команды, за которым следует список аргументов, разделённых пробелами. - Указанная команда будет выполнена на всех выбранных узлах.
- Команда(ы) не будут обрабатываться через оболочку, поэтому переменные, такие как
$HOSTNAME, и операции, такие как"*","<",">","|",";"и"&", не будут работать. Используйте модуль ansible.builtin.shell, если вам нужны эти возможности. - Для создания
commandзадач, которые легче читать, чем те, которые используют аргументы, разделённые пробелами, передавайте параметры с помощью ключевого словаargstask или используйте параметрcmd. - Требуется либо команда в свободном формате, либо параметр
cmd, см. примеры. - Для целевых узлов Windows используйте модуль ansible.windows.win_command.
Примечание
У этого модуля есть соответствующий плагин действий.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| argv список / элементы=строка добавлен в 2.6 ansible.builtin | Передаёт команду как список, а не как строку. Используйте argv для предотвращения цитирования значений, которые в противном случае будут неправильно интерпретированы (например, "имя пользователя").Может быть предоставлена только строка (свободная форма) или список (argv), но не оба одновременно. Должен быть указан один из них. | |
| chdir путь добавлен в 0.6 ansible.builtin | Изменить текущую директорию перед выполнением команды. | |
| cmd строка | Команда для выполнения. | |
| creates путь | Имя файла или (с версии 2.0) шаблон подстановочных символов. Если соответствующий файл уже существует, этот шаг не будет выполнен. | |
| free_form строка | Модуль command принимает строку в свободном формате в качестве команды для выполнения. На самом деле нет параметра с именем "free form". | |
| removes путь добавлен в 0.8 ansible.builtin | Имя файла или (с версии 2.0) шаблон подстановочных символов. Если соответствующий файл существует, этот шаг будет выполнен. | |
| stdin строка добавлен в 2.4 ansible.builtin | Установить stdin команды напрямую на указанное значение. | |
| stdin_add_newline логическое значение добавлен в 2.8 ansible.builtin |
| Если установлено yes, добавить перевод строки к данным stdin. |
| strip_empty_ends логическое значение добавлен в 2.8 ansible.builtin |
| Удалить пустые строки из конца stdout/stderr в результате. |
| warn логическое значение добавлен в 1.8 ansible.builtin |
| (устарело) Включить или отключить предупреждения задач. Эта функция устарела и будет удалена в версии 2.14. Начиная с версии 2.11, этот параметр по умолчанию отключён. |
Примечания
Примечание
- Если вы хотите выполнить команду через оболочку (например, используете
<,>,|, и так далее), вам нужен модуль ansible.builtin.shell вместо этого. Парсинг метасимволов оболочки может привести к неожиданному выполнению команд, если цитирование не выполнено должным образом, поэтому для обеспечения большей безопасности используйте модульcommandпо возможности. -
creates,removes, иchdirмогут быть указаны после команды. Например, если вы хотите выполнить команду только в том случае, если определённого файла не существует, используйте это. - Режим проверки поддерживается при передаче
createsилиremoves. Если выполняется в режиме проверки, и указано одно из этих значений, модуль проверит существование файла и сообщит правильный статус изменений. Если эти значения не указаны, задача будет пропущена. - Параметр
executableудалён с версии 2.4. Если вам нужен этот параметр, используйте модуль ansible.builtin.shell. - Для целевых узлов Windows используйте модуль ansible.windows.win_command.
- Для перезагрузки систем используйте модуль ansible.builtin.reboot или ansible.windows.win_reboot.
См. также
См. также
- ansible.builtin.raw
-
Официальная документация модуля ansible.builtin.raw.
- ansible.builtin.script
-
Официальная документация модуля ansible.builtin.script.
- ansible.builtin.shell
-
Официальная документация модуля ansible.builtin.shell.
- ansible.windows.win_command
-
Официальная документация модуля ansible.windows.win_command.
Примеры
- 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 список / элементы=строка | всегда | Команда, выполненная задачей. Пример: ['echo', 'hello'] |
| delta строка | всегда | Время выполнения команды. Пример: 0:00:00.001529 |
| end строка | всегда | Время окончания выполнения команды. Пример: 2017-09-29 22:03:48.084657 |
| msg логическое значение | всегда | изменено Пример: True |
| rc целое число | всегда | Код возврата команды (0 означает успех). |
| start строка | всегда | Время начала выполнения команды. Пример: 2017-09-29 22:03:48.083128 |
| stderr строка | всегда | Стандартная ошибка команды. Пример: ls cannot access foo: No such file or directory |
| stderr_lines список / элементы=строка | всегда | Стандартная ошибка команды, разбитая на строки. Пример: [{"u'ls cannot access foo": "No such file or directory'"}, "u'ls …'"] |
| stdout строка | всегда | Стандартный вывод команды. Пример: Clustering node rabbit@slave1 with rabbit@master … |
| stdout_lines список / элементы=строка | всегда | Стандартный вывод команды, разбитый на строки. Пример: ["u'Clustering node rabbit@slave1 with rabbit@master …'"] |
Авторы
- Команда Ansible Core
- Michael DeHaan
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/builtin/command_module.html