win_shell — Выполнение команд оболочки на целевых хостах.
Новая в версии 2.2.
Описание
- Модуль
win_shellпринимает имя команды, за которым следует список аргументов, разделенных пробелами. Он похож на модуль win_command, но выполняет команду через оболочку (по умолчанию PowerShell) на целевом хосте. - Для целевых хостов, не являющихся Windows, используйте модуль shell.
Параметры
| параметр | обязательно | по умолчанию | варианты | комментарии |
|---|---|---|---|---|
| chdir |
нет | установить указанный путь в качестве текущей рабочей директории перед выполнением команды |
||
| creates |
нет | путь или шаблон фильтра пути; если указанный путь существует на целевом хосте, задача будет пропущена. |
||
| executable |
нет | изменить оболочку, используемую для выполнения команды (например, cmd). Целевая оболочка должна принимать параметр /c, за которым следует исходная командная строка для выполнения. |
||
| free_form |
да | Модуль win_shell принимает команду в свободном формате для выполнения. Параметра с именем 'free form' фактически нет. См. примеры! |
||
| removes |
нет | путь или шаблон фильтра пути; если указанный путь **не** существует на целевом хосте, задача будет пропущена. |
Примеры
# Execute a command in the remote shell; stdout goes to the specified
# file on the remote.
- win_shell: C:\somescript.ps1 >> c:\somelog.txt
# Change the working directory to somedir/ before executing the command.
- win_shell: C:\somescript.ps1 >> c:\somelog.txt chdir=c:\somedir
# You can also use the 'args' form to provide the options. This command
# will change the working directory to somedir/ and will only run when
# somedir/somelog.txt doesn't exist.
- win_shell: C:\somescript.ps1 >> c:\somelog.txt
args:
chdir: c:\somedir
creates: c:\somelog.txt
# Run a command under a non-Powershell interpreter (cmd in this case)
- win_shell: echo %HOMEDIR%
args:
executable: cmd
register: homedir_out
Возвращаемые значения
Общие возвращаемые значения описаны здесь Возвращаемые значения, следующие поля уникальны для этого модуля:
| имя | описание | возвращается | тип | пример |
|---|---|---|---|---|
| cmd | Команда, выполненная задачей |
всегда | строка | rabbitmqctl join_cluster rabbit@master |
| delta | Время выполнения команды |
всегда | строка | 0:00:00.325771 |
| end | Время завершения выполнения команды |
всегда | строка | 2016-02-25 09:18:26.755339 |
| msg | изменено |
всегда | логическое | True |
| rc | Код возврата команды (0 означает успех) |
всегда | целое | 0 |
| start | Время начала выполнения команды |
всегда | строка | 2016-02-25 09:18:26.429568 |
| stderr | Стандартная ошибка команды |
всегда | строка | ls: невозможно получить доступ к foo: нет такого файла или каталога |
| stdout | Стандартный вывод команды |
всегда | строка | Установление кластера узла rabbit@slave1 с rabbit@master ... |
| stdout_lines | Стандартный вывод команды, разделенный на строки |
всегда | список | ["Установление кластера узла rabbit@slave1 с rabbit@master ..."] |
Примечания
Примечание
- Если вы хотите безопасно и предсказуемо запустить исполняемый файл, лучше использовать модуль win_command. В ходе написания playbooks лучше использовать win_command по умолчанию, если явно не требуется
win_shell. При выполнении команд ad-hoc руководствуйтесь своим лучшим суждением. - WinRM не вернётся из выполнения команды, пока все дочерние процессы не завершат работу. Поэтому нельзя использовать
win_shellдля запуска долгоживущих дочерних или фоновых процессов. Рассмотрите создание службы Windows для управления фоновыми процессами. - Для целевых хостов, не являющихся Windows, используйте модуль shell.
- См. также win_command, raw
Статус
Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется обратной совместимостью.
Информация о техническом обслуживании
Дополнительную информацию о поддержке этого модуля компанией Red Hat можно найти в knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>
Для получения помощи в разработке модулей, если вы заинтересованы, прочтите Информацию о сообществе и участии, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/win_shell_module.html