Spec-Zone.ru › Ansible 2.6

win_shell — Выполнение команд оболочки на целевых хостах

Новая в версии 2.2.

  • Обзор
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения
  • Статус
  • Техническое обслуживание
    • Поддержка
    • Автор

Обзор

  • Модуль win_shell принимает имя команды, за которым следует список аргументов, разделенных пробелами. Он похож на модуль win_command, но выполняет команду через оболочку (по умолчанию PowerShell) на целевом хосте.
  • Для целевых хостов, отличных от Windows, используйте модуль shell.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
chdir
Устанавливает указанный путь как текущую рабочую директорию перед выполнением команды
creates
Путь или шаблон фильтрации пути; если указанный путь существует на целевом хосте, задача будет пропущена.
executable
Изменяет оболочку, используемую для выполнения команды (например, cmd).
Целевая оболочка должна принимать параметр /c, за которым следует исходная командная строка для выполнения.
free_form
обязательно
Модуль win_shell принимает команду в свободном формате для выполнения.
Параметра с именем 'free form' на самом деле нет. См. примеры!
removes
Путь или шаблон фильтрации пути; если указанный путь **не** существует на целевом хосте, задача будет пропущена.
stdin
(добавлено в 2.5)
Устанавливает стандартный ввод (stdin) команды непосредственно в указанное значение.

Примечания

Примечание

  • Если вам нужно безопасно и предсказуемо запустить исполняемый файл, лучше использовать модуль win_command вместо этого. Лучшие практики при написании playbooks будут заключаться в использовании win_command, если явно не требуется win_shell. При выполнении произвольных команд используйте собственное суждение.
  • WinRM не вернется из выполнения команды, пока не завершатся все созданные дочерние процессы. Таким образом, нельзя использовать win_shell для запуска долгоживущих дочерних или фоновых процессов. Рассмотрите возможность создания службы Windows для управления фоновыми процессами.
  • Для целевых хостов, отличных от Windows, используйте модуль shell вместо этого.
  • См. также win_command, raw

Примеры

# 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

- name: run multi-lined shell commands
  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
  win_shell: '$string = [Console]::In.ReadToEnd(); Write-Output $string.Trim()'
  args:
    stdin: Input message

Возвращаемые значения

Общие возвращаемые значения описаны здесь, следующие — поля, уникальные для этого модуля:

Ключ Возвращаемое значение Описание
cmd
строка
всегда
Команда, выполненная задачей

Пример:
rabbitmqctl join_cluster rabbit@master
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@master ...
stdout_lines
список
всегда
Стандартный вывод команды, разделенный по строкам

Пример:
["u'Clustering node rabbit@slave1 with rabbit@master ...'"]


Статус

Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется обратной совместимости.

Техническое обслуживание

Этот модуль помечен как ядерный, что означает, что его поддерживает Команда ядра Ansible. Подробнее см. в разделе Техническое обслуживание и поддержка модулей.

Список других модулей, поддерживаемых Командой ядра Ansible, см. здесь.

Поддержка

Дополнительную информацию о поддержке этого модуля компанией Red Hat см. в этой статье базы знаний

Автор

  • Matt Davis (@nitzmahone)

Подсказка

Если вы заметили какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/win_shell_module.html

Spec-Zone.ru

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