ansible.windows.win_shell – Выполнение команд оболочки на целевых хостах
Примечание
Этот плагин является частью коллекции ansible.windows (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install ansible.windows.
Для использования в плейбуке укажите: ansible.windows.win_shell.
Краткое описание
- Модуль ansible.windows.win_shell принимает имя команды, за которым следует список аргументов, разделенных пробелами. Он похож на модуль ansible.windows.win_command, но выполняет команду через оболочку (по умолчанию PowerShell) на целевом хосте.
- Для целевых хостов, не являющихся Windows, используйте модуль ansible.builtin.shell вместо него.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| chdir путь | Установить указанный путь в качестве текущей рабочей директории перед выполнением команды | |
| creates путь | Путь или шаблон фильтрации пути; если указанный путь существует на целевом хосте, задача будет пропущена. | |
| executable путь | Изменить оболочку, используемую для выполнения команды (например, cmd).Целевая оболочка должна принимать параметр /c, за которым следует исходная командная строка для выполнения. | |
| free_form строка / обязательно | Модуль ansible.windows.win_shell принимает команду в свободном формате для выполнения. Нет параметра с именем «free form». Смотрите примеры! | |
| no_profile логическое |
| Не загружать профиль пользователя перед выполнением команды. Это актуально только при использовании PowerShell в качестве исполняемого файла. |
| output_encoding_override строка | Этот параметр переопределяет кодировку вывода stdout/stderr. Вы можете использовать этот параметр, когда вам нужно выполнить команду, которая игнорирует кодовую страницу консоли. Этот параметр следует использовать только в очень редких случаях. Это значение может быть любой допустимой кодировкой Name на основе вывода [System.Text.Encoding]::GetEncodings(. Смотрите https://docs.microsoft.com/dotnet/api/system.text.encoding.getencodings. | |
| removes путь | Путь или шаблон фильтрации пути; если указанный путь не существует на целевом хосте, задача будет пропущена. | |
| stdin строка | Установить stdin команды непосредственно на указанное значение. |
Примечания
Примечание
- Если вы хотите безопасно и предсказуемо запустить исполняемый файл, лучше использовать модуль ansible.windows.win_command вместо него. Лучшие практики при написании плейбуков будут следовать тенденции использования ansible.windows.win_command, если явно не требуется
win_shell. При выполнении ad-hoc команд используйте свой здравый смысл. - WinRM не вернётся из выполнения команды, пока не завершат все созданные дочерние процессы. Таким образом, невозможно использовать ansible.windows.win_shell для запуска долго выполняющихся дочерних или фоновых процессов. Рассмотрите возможность создания службы Windows для управления фоновыми процессами.
См. также
См. также
- community.windows.psexec
-
Официальная документация модуля community.windows.psexec.
- 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.
- community.windows.win_psexec
-
Официальная документация модуля community.windows.win_psexec.
Примеры
- name: Execute a comand in the remote shell, stdout goes to the specified file on the remote
ansible.windows.win_shell: C:\somescript.ps1 >> C:\somelog.txt
- name: Change the working directory to somedir/ before executing the command
ansible.windows.win_shell: C:\somescript.ps1 >> C:\somelog.txt
args:
chdir: C:\somedir
- name: Run a command with an idempotent check on what it creates, will only run when somedir/somelog.txt does not exist
ansible.windows.win_shell: C:\somescript.ps1 >> C:\somelog.txt
args:
chdir: C:\somedir
creates: C:\somelog.txt
- name: Run a command under a non-Powershell interpreter (cmd in this case)
ansible.windows.win_shell: echo %HOMEDIR%
args:
executable: cmd
register: homedir_out
- name: Run multi-lined shell commands
ansible.windows.win_shell: |
$value = Test-Path -Path C:\temp
if ($value) {
Remove-Item -Path C:\temp -Force
}
New-Item -Path C:\temp -ItemType Directory
- name: Retrieve the input based on stdin
ansible.windows.win_shell: '$string = [Console]::In.ReadToEnd(); Write-Output $string.Trim()'
args:
stdin: Input message
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| cmd строка | всегда | Команда, выполненная задачей. Пример: rabbitmqctl join_cluster rabbit@main |
| delta строка | всегда | Время выполнения команды. Пример: 0:00:00.325771 |
| end строка | всегда | Время завершения выполнения команды. Пример: 2016-02-25 09:18:26.755339 |
| msg логическое | всегда | Изменилось. Пример: True |
| rc целое число | всегда | Код возврата команды (0 означает успех). |
| start строка | всегда | Время начала выполнения команды. Пример: 2016-02-25 09:18:26.429568 |
| stderr строка | всегда | Стандартная ошибка команды. Пример: ls: cannot access foo: No such file or directory |
| stdout строка | всегда | Стандартный вывод команды. Пример: Clustering node rabbit@slave1 with rabbit@main ... |
| stdout_lines список / элементы=строка | всегда | Стандартный вывод команды, разделенный по строкам. Пример: ["u'Clustering node rabbit@slave1 with rabbit@main ...'"] |
Авторы
- Matt Davis (@nitzmahone)
© 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/windows/win_shell_module.html