Spec-Zone.ru › Ansible 2.11

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API