Spec-Zone.ru › Ansible 2.11

community.windows.psexec – Выполняет команды на удалённом хосте Windows на основе модели PsExec

Примечание

Этот плагин является частью коллекции community.windows (версия 1.2.0).

Для его установки используйте: ansible-galaxy collection install community.windows.

Для использования в книге задач укажите: community.windows.psexec.

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

Описание

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

Требования

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

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
arguments
строка
Любые аргументы в виде одной строки для использования при запуске исполняемого файла.
asynchronous
булево
    Варианты:
  • нет ←
  • да
Запустит команду как отдельный процесс, и модуль вернёт результат сразу после запуска процесса, в то время как процесс будет продолжать выполняться в фоновом режиме.
Значения stdout и stderr будут пустыми, когда это значение установлено в yes.
Опция stdin не работает с этим типом процесса.
Значение rc не устанавливается, когда это yes.
connection_password
строка
Пароль для connection_user.
Требуется, если не установлены требования Kerberos или имя пользователя является локальной учётной записью на хосте Windows.
Можно опустить, чтобы использовать билет Kerberos для принципала, заданного в connection_user, если установлена библиотека Kerberos и билет уже был получен командой kinit ранее.
connection_timeout
целое число
Значение по умолчанию:
60
Время ожидания в секундах при получении начального ответа SMB о согласовании с сервером.
connection_username
строка
Имя пользователя для подключения к удалённому хосту Windows.
Этот пользователь должен быть членом группы Administrators на хосте Windows.
Требуется, если не установлены требования Kerberos или имя пользователя является локальной учётной записью на хосте Windows.
Можно опустить, чтобы использовать билет Kerberos по умолчанию из кэша локальных данных, если установлена библиотека Kerberos.
Если process_username не указан, удалённый процесс будет выполняться под учётной записью Network Logon с этим именем пользователя.
encrypt
булево
    Варианты:
  • нет
  • да ←
Использует шифрование SMB для шифрования сообщений SMB, отправляемых на хост и с него.
Это требует протокол SMB 3, который поддерживается только Windows Server 2012 или Windows 8. Более старые версии, такие как Windows 7 или Windows Server 2008 (R2), должны установить это в no и использовать без шифрования.
При установке в no, пакеты находятся в открытом виде и могут быть просмотрены любым, кто перехватывает сеть. В этом случае указаны все параметры процесса.
executable
строка / обязательно
Исполняемый файл для запуска на хосте Windows.
hostname
строка / обязательно
Удаленный хост Windows для подключения, может быть либо IP-адресом, либо именем хоста.
integrity_level
строка
    Варианты:
  • ограниченный
  • по умолчанию ←
  • повышенный
Уровень целостности процесса, когда process_username определён и не равен System.
При default, используется уровень целостности по умолчанию, основанный на настройках системы.
При elevated, команда будет запущена с правами администратора.
При limited, команда будет принудительно запущена без прав администратора.
interactive
булево
    Варианты:
  • нет ←
  • да
Запустит процесс как интерактивный процесс, который отобразит окно процесса сессии Windows, указанной в interactive_session.
Значения stdout и stderr будут пустыми, когда это значение установлено в yes.
Опция stdin не работает с этим типом процесса.
interactive_session
целое число
Значение по умолчанию:
0
Идентификатор сессии Windows для отображения интерактивного процесса на удаленном хосте Windows.
Это допустимо только при interactive равном yes.
Значение по умолчанию 0, что соответствует консольной сессии хоста Windows.
load_profile
булево
    Варианты:
  • нет
  • да ←
Запускает удалённую команду с загруженным профилем пользователя.
port
целое число
Значение по умолчанию:
445
Порт, на котором прослушивает удалённая служба SMB.
priority
строка
    Варианты:
  • выше_нормального
  • ниже_нормального
  • высокий
  • простаивающий
  • нормальный ←
  • режим_реального_времени
Установите приоритет команды на хосте Windows.
См. https://msdn.microsoft.com/en-us/library/windows/desktop/ms683211.aspx для получения более подробной информации.
process_password
строка
Пароль для process_username.
Требуется, если process_username определён и не System.
process_timeout
целое число
Значение по умолчанию:
0
Время ожидания в секундах для запущенного процесса.
Значение 0 означает отсутствие таймаута.
process_username
строка
Пользователь, от имени которого будет выполняться процесс.
Это можно установить для выполнения процесса под интерактивной учётной записью указанного пользователя, что обходит ограничения, применяемые к сетевому логину, когда это не указано.
Если опущен, процесс выполняется под той же учётной записью, что и connection_username, с помощью сетевого входа.
Установите значение System для выполнения от имени встроенной учётной записи SYSTEM, для которой не требуется пароль.
Если encrypt no, имя пользователя и пароль отправляются как простая строка XOR, которая не шифруется. Для получения имени пользователя и пароля не требуется никаких специальных инструментов, достаточно знания протокола.
show_ui_on_logon_screen
булево
    Варианты:
  • нет ←
  • да
Отображает интерфейс процесса на защищённом рабочем столе Winlogon, когда process_username System.
stdin
строка
Данные для отправки по конвейеру stdin после запуска процесса.
Этот параметр не имеет эффекта, когда interactive или asynchronous yes.
working_directory
строка
Значение по умолчанию:
"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.

См. также

См. также

ansible.builtin.raw

Официальная документация по модулю ansible.builtin.raw.

ansible.windows.win_command

Официальная документация по модулю ansible.windows.win_command.

community.windows.win_psexec

Официальная документация по модулю community.windows.win_psexec.

ansible.windows.win_shell

Официальная документация по модулю ansible.windows.win_shell.

Примеры

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

- name: Run a PowerShell command
  community.windows.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
  community.windows.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
  community.windows.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
  community.windows.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])
  community.windows.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)
  community.windows.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
  community.windows.psexec:
    hostname: '{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'
    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
строка
ошибка модуля
Любые подробности об ошибке при выполнении процесса

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

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

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

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

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


Авторы

  • Jordan Borean (@jborean93)

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

Spec-Zone.ru

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