Spec-Zone.ru › Ansible

Управление узлами Windows с помощью Ansible

Управление узлами Windows отличается от управления узлами POSIX. Если у вас есть управляемые узлы под управлением Windows, ознакомьтесь с этими темами.

  • Подготовка Windows
  • Подключение к узлам Windows

    • PSRP и WinRM
    • SSH
  • Какие модули доступны?
  • Использование Windows в качестве управляющего узла
  • Факты Windows
  • Распространённые проблемы Windows

    • Команда работает локально, но не в Ansible
    • Учётные данные отклоняются

Здесь приведён указатель всех тем, рассмотренных в этом руководстве.

  • Контроль приложений Windows
  • Настройка желаемого состояния
  • Производительность Windows
  • Поддержка PowerShell 7
  • См. также
  • SSH в Windows
  • Использование Ansible и Windows
  • Удалённое управление Windows
  • Аутентификация WinRM с помощью сертификатов
  • Аутентификация Kerberos

Подготовка Windows

На узлах Windows должна быть установлена Windows Server 2016 или Windows 10 либо более новая версия. Поскольку эти версии Windows по умолчанию поставляются с PowerShell 5.1, для подготовки узла Windows не требуется ничего дополнительно.

Поддержка каждой версии Windows связана с расширенным циклом поддержки соответствующей операционной системы, который обычно составляет 10 лет с даты выпуска. Ansible тестируется на серверных версиях Windows, но должен быть совместим и с настольными версиями, например Windows 10 и 11.

Подключение к узлам Windows

По умолчанию Ansible подключается к управляемым узлам POSIX с помощью OpenSSH. Узлы Windows также могут использовать SSH, но исторически для них в качестве транспорта подключения применяется WinRM. С узлами Windows можно использовать следующие поддерживаемые плагины подключения:

  • Удалённое взаимодействие PowerShell через WinRM — psrp
  • SSH — ssh
  • Удалённое управление Windows — winrm

PSRP и WinRM

Исторически Ansible использовал Windows Remote Management (WinRM) в качестве протокола подключения для управления узлами Windows. Плагины подключения psrp и winrm работают через WinRM, и их можно использовать для подключения к узлам Windows. Плагин подключения psrp новее и обладает рядом преимуществ по сравнению с плагином подключения winrm, например:

  • Может работать немного быстрее
  • Меньше подвержен проблемам с тайм-аутами при высокой нагрузке на узел Windows
  • Лучше поддерживает прокси-серверы

Подробнее о настройке WinRM и использовании плагинов подключения psrp и winrm в Ansible см. в разделе Удалённое управление Windows.

SSH

SSH — это традиционный плагин подключения для узлов POSIX, однако его также можно использовать для управления узлами Windows вместо традиционных плагинов подключения psrp или winrm.

Примечание

Ansible поддерживает использование плагина подключения SSH с узлами Windows начиная с Ansible 2.8, но официальная поддержка появилась только в версии 2.18.

Некоторые преимущества SSH по сравнению с транспортами на основе WinRM:

  • SSH проще настроить в средах без домена
  • SSH поддерживает аутентификацию на основе ключей, которой проще управлять, чем сертификатами
  • Передача файлов по SSH быстрее, чем по WinRM

Подробнее о настройке SSH для узлов Windows см. в разделе SSH в Windows.

Какие модули доступны?

Большинство основных модулей Ansible предназначены для Unix-подобных машин и других универсальных служб. Эти модули написаны на Python и используют API, отсутствующие в Windows, поэтому они не будут работать.

Для узлов Windows предназначены специальные модули, написанные на PowerShell. Список этих модулей можно найти в коллекциях Ansible.Windows, Community.Windows, Microsoft.Ad, Chocolatey.Chocolatey и других.

Кроме того, с Windows работают следующие модули и плагины действий Ansible Core:

  • add_host
  • assert
  • async_status
  • debug
  • fail
  • fetch
  • group_by
  • include
  • include_role
  • include_vars
  • meta
  • pause
  • raw
  • script
  • set_fact
  • set_stats
  • setup
  • slurp
  • template (также: win_template)
  • wait_for_connection

Использование Windows в качестве управляющего узла

Ansible не может работать в Windows в качестве управляющего узла из-за ограничений API платформы. Однако Ansible можно запускать в Windows с помощью подсистемы Windows для Linux (WSL) или в контейнере.

Примечание

Подсистема Windows для Linux не поддерживается Ansible и не должна использоваться в производственных системах.

Факты Windows

Ansible собирает факты в Windows так же, как и на других узлах POSIX, но с некоторыми отличиями. Некоторые факты могут иметь другой формат для обеспечения обратной совместимости или вовсе отсутствовать.

Чтобы просмотреть факты, которые Ansible собирает с узлов Windows, запустите модуль setup.

ansible windows -m setup

Распространённые проблемы Windows

Команда работает локально, но не в Ansible

Ansible выполняет команды через сетевой вход в систему, который может изменить способ авторизации действий в Windows. Из-за этого команды, работающие локально, могут завершаться ошибкой при выполнении через Ansible. Вот несколько примеров таких ошибок:

  • процесс не может передать учётные данные пользователя сетевому ресурсу, что приводит к ошибкам Access is  Denied или Resource Unavailable
  • приложениям, которым требуется интерактивный сеанс, не удастся работать
  • доступ к некоторым API Windows ограничен при выполнении команд через сетевой вход в систему
  • для некоторых задач требуется доступ к хранилищу секретов DPAPI, которое обычно недоступно при сетевом входе в систему

Обычно для выполнения команды с явными учётными данными используют Повышение привилегий: become. Использование become в Windows переключает сетевой вход в систему на интерактивный. Если для идентификатора become указаны явные учётные данные, команда сможет обращаться к сетевым ресурсам и разблокировать хранилище DPAPI.

Другой вариант — использовать параметр аутентификации в плагине подключения, который позволяет делегировать учётные данные. Для SSH это можно сделать с помощью явного указания имени пользователя и пароля либо с помощью входа Kerberos/GSSAPI с включённым делегированием. Для подключений на основе WinRM можно использовать CredSSP или Kerberos с делегированием. Дополнительные сведения см. в документации к соответствующему плагину подключения.

Учётные данные отклоняются

Есть несколько причин, по которым учётные данные могут быть отклонены при подключении к узлу Windows. Вот некоторые из них:

  • неверное имя пользователя или пароль
  • учётная запись пользователя заблокирована, отключена или ей запрещён вход на этот сервер
  • учётной записи пользователя запрещён вход через сеть
  • учётная запись пользователя не входит в локальную группу «Администраторы»
  • учётная запись пользователя является локальной, а параметр LocalAccountTokenFilterPolicy не задан

Чтобы проверить правильность учётных данных или наличие у пользователя разрешения на вход на узел, выполните на узле Windows приведённую ниже команду PowerShell, чтобы просмотреть последнюю неудачную попытку входа. Будут выведены сведения о событии, включая код ошибки Status и Sub Status, указывающий причину сбоя входа.

Get-WinEvent -FilterHashtable @{LogName = 'Security'; Id = 4625} |
    Select-Object -First 1 -ExpandProperty Message

Не все плагины подключения требуют, чтобы пользователь, от имени которого выполняется подключение, входил в локальную группу «Администраторы», однако обычно это настройка по умолчанию. Если пользователь не входит в локальную группу «Администраторы» или является локальным пользователем, для которого не задан параметр LocalAccountTokenFilterPolicy, аутентификация завершится ошибкой.

См. также

Введение в разовые команды

Примеры основных команд

Работа с плейбуками

Изучение языка управления конфигурацией Ansible

Стоит ли разрабатывать модуль?

Как писать модули

Контроль приложений Windows

Использование Ansible с управляемыми узлами Windows App Control

Настройка желаемого состояния

Использование Ansible с Windows Desired State Configuration

Производительность Windows

Особенности производительности при управлении узлами Windows

Использование Ansible и Windows

Руководство по использованию Windows

Список рассылки

Есть вопросы? Нужна помощь? Есть идеи? Загляните в список рассылки в Google Groups

Чат в реальном времени

Как присоединиться к каналам Ansible

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/os_guide/intro_windows.html

Spec-Zone.ru

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