Spec-Zone.ru › Ansible 2.6

psexec — Запуск команд на удалённом хосте Windows на основе модели PsExec

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

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

Описание

  • Запускает удалённую команду с хоста Linux на хост Windows без настройки WinRM.
  • Может использоваться на контроллере Ansible для подготовки хостов Windows к использованию WinRM.

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • pypsexec
  • smbprotocol[kerberos] для необязательной аутентификации Kerberos

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
arguments
str
Любые аргументы в виде одной строки для использования при запуске исполняемого файла.
asynchronous
bool
    Варианты:
  • нет ←
  • да
Запустит команду как отдельный процесс, и модуль вернёт результат сразу после запуска, в то время как процесс будет продолжать работу в фоновом режиме.
Значения stdout и stderr будут пустыми, когда это значение установлено в yes.
Параметр stdin не работает с этим типом процесса.
Значение rc не устанавливается, когда это значение yes.
connection_password
str
Пароль для connection_user.
Требуется, если не установлены требования Kerberos или имя пользователя — локальная учётная запись на хосте Windows.
Можно опустить для использования билета Kerberos для принципала, заданного connection_user, если установлена библиотека Kerberos и билет уже получен с помощью команды kinit ранее.
connection_timeout
str
Значение по умолчанию:
60
Время ожидания в секундах при получении начального ответа на SMB-переговоры от сервера.
connection_username
str
Имя пользователя для подключения к удалённому хосту Windows.
Этот пользователь должен быть членом группы Administrators хоста Windows.
Требуется, если не установлены требования Kerberos или имя пользователя — локальная учётная запись на хосте Windows.
Можно опустить для использования билета Kerberos по умолчанию в кэше локальных учетных данных, если установлена библиотека Kerberos.
Если process_username не указан, то удалённый процесс будет выполняться под сетевой учётной записью данного пользователя.
encrypt
bool
    Варианты:
  • нет
  • да ←
Использует шифрование SMB для шифрования сообщений SMB, отправляемых на хост и с хоста.
Это требует протокола SMB 3, который поддерживается только Windows Server 2012 или Windows 8. Более старые версии, такие как Windows 7 или Windows Server 2008 (R2), должны установить это значение в no и не использовать шифрование.
При установке в no, пакеты передаются в открытом виде и их может просмотреть любой, прослушивающий сеть. В этом случае включаются все параметры процесса.
executable
str

обязательно
Исполняемый файл для запуска на хосте Windows.
hostname
str

обязательно
Удалённый хост Windows для подключения. Может быть IP-адресом или именем хоста.
integrity_level
str
    Варианты:
  • ограниченный
  • по умолчанию ←
  • повышенный
Уровень целостности процесса, когда process_username определён и не равен System.
В default, используется уровень целостности по умолчанию, основанный на настройках системы.
В elevated, команда выполняется с правами администратора.
В limited, команда будет принудительно выполнена без прав администратора.
interactive
bool
    Варианты:
  • нет ←
  • да
Запустит процесс как интерактивный процесс, который покажет окно процесса сеанса Windows, указанного параметром interactive_session.
Значения stdout и stderr будут пустыми, когда это значение установлено в yes.
Параметр stdin не работает с этим типом процесса.
interactive_session
int
Значение по умолчанию:
0
Идентификатор сеанса Windows для отображения интерактивного процесса на удалённом хосте Windows.
Действительно только при значении interactive в yes.
По умолчанию 0, что соответствует консольному сеансу хоста Windows.
load_profile
bool
    Варианты:
  • нет
  • да ←
Запускает удалённую команду с загруженным профилем пользователя.
port
int
Значение по умолчанию:
445
Порт, на котором прослушивает удалённая служба SMB.
priority
str
    Варианты:
  • выше_нормального
  • ниже_нормального
  • высокий
  • простаивающий
  • нормальный ←
  • режим_реального_времени
Устанавливает приоритет команды на хосте Windows.
См. https://msdn.microsoft.com/en-us/library/windows/desktop/ms683211.aspx для получения дополнительной информации.
process_password
str
Пароль для process_username.
Требуется, если process_username определён и не System.
process_timeout
int
Значение по умолчанию:
0
Время ожидания в секундах, установленное для работающего процесса.
Значение 0 означает отсутствие таймаута.
process_username
str
Пользователь, от имени которого будет выполняться процесс.
Это может быть установлено для выполнения процесса под интерактивным входом указанной учётной записи, что обходит ограничения сетевого входа, используемого при отсутствии указания.
Если опущено, процесс выполняется от имени того же пользователя, что и connection_username, с помощью сетевого входа.
Установка значения System выполнит процесс от имени встроенной учётной записи SYSTEM, пароль для этой учётной записи не требуется.
Если encrypt установлено в no, имя пользователя и пароль передаются как простая строка XOR-ск램블된 байтов, которая не зашифрована. Для получения имени пользователя и пароля не нужны специальные инструменты, достаточно знаний протокола.
show_ui_on_logon_screen
bool
    Варианты:
  • нет ←
  • да
Отображает интерфейс процесса на экране входа в систему (Winlogon), когда process_username равно System.
stdin
str
Данные для отправки в канал stdin после запуска процесса.
Этот параметр не имеет эффекта, когда interactive или asynchronous установлены в yes.
working_directory
str
Значение по умолчанию:
"C:\\Windows\\System32"
Изменяет рабочий каталог при запуске процесса.

Примечания

Примечание

  • Этот модуль требует, чтобы на хосте Windows была настроена и включена служба SMB, а порт 445 был открыт в брандмауэре.
  • Этот модуль будет ожидать завершения процесса, если параметр asynchronous не установлен в yes. Убедитесь, что процесс запущен как неинтерактивная команда, чтобы избежать бесконечных зависаний в ожидании ввода.
  • connection_username должен быть членом локальной группы Администраторы на хосте Windows. Для хостов, не входящих в домен, следует установить LocalAccountTokenFilterPolicy в 1, чтобы обеспечить корректную работу. См. https://support.microsoft.com/en-us/help/951016/description-of-user-account-control-and-remote-restrictions-in-windows.
  • Для получения дополнительной информации об этом модуле и различных требованиях к хосту, см. https://github.com/jborean93/pypsexec.

Примеры

- name: Run a cmd.exe command
  psexec:
    hostname: server
    connection_username: username
    connection_password: password
    executable: cmd.exe
    arguments: /c echo Hello World

- name: Run a PowerShell command
  psexec:
    hostname: server.domain.local
    connection_username: username@DOMAIN.LOCAL
    connection_password: password
    executable: powershell.exe
    arguments: Write-Host Hello World

- name: Send data through stdin
  psexec:
    hostname: 192.168.1.2
    connection_username: username
    connection_password: password
    executable: powershell.exe
    arguments: '-'
    stdin: |
      Write-Host Hello World
      Write-Error Error Message
      exit 0

- name: Run the process as a different user
  psexec:
    hostname: server
    connection_user: username
    connection_password: password
    executable: whoami.exe
    arguments: /all
    process_username: anotheruser
    process_password: anotherpassword

- name: Run the process asynchronously
  psexec:
    hostname: server
    connection_username: username
    connection_password: password
    executable: cmd.exe
    arguments: /c rmdir C:\temp
    asynchronous: yes

- name: Use Kerberos authentication for the connection (requires smbprotocol[kerberos])
  psexec:
    hostname: host.domain.local
    connection_username: user@DOMAIN.LOCAL
    executable: C:\some\path\to\executable.exe
    arguments: /s

- name: Disable encryption to work with WIndows 7/Server 2008 (R2)
  psexec:
    hostanme: windows-pc
    connection_username: Administrator
    connection_password: Password01
    encrypt: no
    integrity_level: elevated
    process_username: Administrator
    process_password: Password01
    executable: powershell.exe
    arguments: (New-Object -ComObject Microsoft.Update.Session).CreateUpdateInstaller().IsBusy

- name: Download and run ConfigureRemotingForAnsible.ps1 to setup WinRM
  psexec:
    hostname: '{{ ansible_host }}'
    connection_username: '{{ ansible_user }}'
    connection_password: '{{ ansible_password }}'
    encrypt: yes
    executable: powershell.exe
    arguments: '-'
    stdin: |
      $ErrorActionPreference = "Stop"
      $sec_protocols = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::SystemDefault
      $sec_protocols = $sec_protocols -bor [Net.SecurityProtocolType]::Tls12
      [Net.ServicePointManager]::SecurityProtocol = $sec_protocols
      $url = "https://github.com/ansible/ansible/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
      Invoke-Expression ((New-Object Net.WebClient).DownloadString($url))
      exit
  delegate_to: localhost

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

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

Ключ Возвращаемое значение Описание
msg
str
модуль завершился с ошибкой
Любые детали ошибки при попытке выполнить процесс

Пример:
Ошибка получена от удаленной службы PAExec: Не удалось запустить "invalid.exe". Система не может найти указанный файл. [Ошибка=0x2, 2]
pid
int
успех и асинхронный режим - 'да'
Идентификатор процесса асинхронного процесса, который был создан

Пример:
719
rc
int
успех и асинхронный режим - 'нет'
Код возврата удалённого процесса

stderr
str
успех и интерактивный или асинхронный режим - 'нет'
stderr от удалённого процесса

Пример:
Ошибка [10] при запуске процесса
stdout
str
успех и интерактивный или асинхронный режим - 'нет'
stdout от удалённого процесса

Пример:
Привет мир


Статус

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

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

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

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

Автор

  • Jordan Borean (@jborean93)

Подсказка

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

© 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/psexec_module.html

Spec-Zone.ru

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