Spec-Zone.ru › Ansible 2.5

Часто задаваемые вопросы по Windows

Ниже приведены ответы на некоторые часто задаваемые вопросы об Ansible и Windows.

Примечание

Этот документ содержит вопросы о управлении серверами Microsoft Windows с помощью Ansible. Для вопросов о Ansible Core, пожалуйста, обратитесь к странице FAQ.

Поддерживает ли Ansible Windows XP или Server 2003?

Ansible не поддерживает управление хостами Windows XP или Server 2003. Поддерживаются следующие версии операционных систем:

  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows 7
  • Windows 8.1
  • Windows 10

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

Можно ли управлять Windows Nano Server?

Windows Nano Server в настоящее время не поддерживается Ansible, так как он не имеет доступа к полному .NET Framework, используемому большинством модулей и внутренних компонентов.

Может ли Ansible работать на Windows?

Нет, Ansible не может выполняться на хосте Windows и может только управлять хостами Windows, но Ansible может выполняться в Windows Subsystem for Linux (WSL).

Примечание

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

Для установки Ansible в WSL можно выполнить следующие команды в терминале bash:

sudo apt-get update
sudo apt-get install python-pip git libffi-dev libssl-dev -y
pip install ansible pywinrm

Для запуска Ansible из исходного кода вместо выпуска в WSL, просто удалите установленную версию pip, а затем клонируйте репозиторий git.

pip uninstall ansible -y
git clone https://github.com/ansible/ansible.git
source ansible/hacking/env-setup

# to enable Ansible on login, run the following
echo ". ~/ansible/hacking/env-setup -q' >> ~/.bashrc

Можно ли использовать ключи SSH для аутентификации?

Windows использует протокол WinRM в качестве транспортного протокола. WinRM поддерживает широкий спектр вариантов аутентификации. Ближайшим аналогом ключей SSH является использование аутентификации с помощью сертификата, которая сопоставляет сертификат X509 с локальным пользователем.

Способ генерации и сопоставления этих сертификатов с пользователем отличается от реализации SSH; обратитесь к документации Управление удалёнными компьютерами Windows для получения дополнительной информации.

Почему команда, работающая локально, не работает в Ansible?

Ansible выполняет команды через WinRM. Эти процессы отличаются от локального выполнения команды следующим образом:

  • За исключением использования метода аутентификации, такого как CredSSP или Kerberos с делегированием учетных данных, процесс WinRM не имеет возможности делегировать учетные данные пользователя сетевому ресурсу, что приводит к ошибкам Access is Denied.
  • Все процессы, выполняемые через WinRM, находятся в неинтерактивном сеансе. Приложения, требующие интерактивного сеанса, работать не будут.
  • При выполнении через WinRM Windows ограничивает доступ к внутренним API Windows, таким как API Windows Update и DPAPI, на которые некоторые установщики и программы полагаются.

Некоторые способы обойти эти ограничения:

  • Используйте become, который выполняет команду так, как она выполняется локально. Это обойдет большинство ограничений WinRM, так как Windows не осознает, что процесс выполняется через WinRM при использовании become. См. документацию Понимание повышения привилегий для получения дополнительной информации.
  • Используйте задачу планировщика, которую можно создать с помощью win_scheduled_task. Подобно become, она обойдет все ограничения WinRM, но может использоваться только для выполнения команд, а не модулей.
  • Используйте win_psexec для выполнения команды на хосте. PSExec не использует WinRM и, следовательно, обойдет любые ограничения.
  • Для доступа к сетевым ресурсам без этих обходных путей можно использовать метод аутентификации, поддерживающий делегирование учетных данных. И CredSSP, и Kerberos с включённым делегированием учетных данных могут это поддержать.

См. Понимание повышения привилегий для получения более подробной информации о том, как использовать become. Раздел ограничений в Управление удалёнными компьютерами Windows содержит дополнительные сведения об ограничениях WinRM.

Программа не устанавливается с помощью Ansible

Для получения дополнительной информации об ограничениях WinRM обратитесь к этому вопросу.

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

Большинство модулей Ansible в Ansible Core написаны для сочетания машин Linux/Unix и произвольных веб-сервисов. Эти модули написаны на Python и большинство из них не работают на Windows.

По этой причине существуют специализированные модули Windows, написанные на PowerShell и предназначенные для выполнения на хостах Windows. Список этих модулей можно найти здесь.

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

  • 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_tempate)
  • wait_for_connection

Можно ли выполнять модули Python?

Нет, протокол подключения WinRM настроен на использование модулей PowerShell, поэтому модули Python не будут работать. Способ решения этой проблемы — использовать delegate_to: localhost для выполнения модуля Python на контроллере Ansible. Это полезно, если в ходе выполнения книги задач необходимо связаться с внешним сервисом, и нет эквивалентного модуля Windows.

Можно ли подключиться через SSH?

Microsoft объявила и разрабатывает форк OpenSSH для Windows, который позволяет удаленно управлять серверами Windows через протокол SSH вместо WinRM. Хотя это можно установить и использовать прямо сейчас для обычных клиентов SSH, это всё ещё находится в бета-версии от Microsoft, и необходимая функциональность ещё не реализована в Ansible.

В будущих планах добавление этой функции, и эта страница будет обновлена, как только будет доступна дополнительная информация.

Почему подключение к хосту через ssh терпит неудачу?

Если при попытке подключения к хосту Windows в выводе ошибки указано, что использовался SSH, это означает, что переменные подключения не заданы должным образом или хост не наследует их правильно.

Убедитесь, что ansible_connection: winrm задано в инвентаризации для хоста Windows.

Почему мои учетные данные отклоняются?

Это может быть связано с множеством причин, не связанных с неверными учетными данными.

См. HTTP 401/Отклонение учетных данных в Настройка хоста Windows для более подробного руководства о том, что это может означать.

Почему я получаю ошибку SSL CERTIFICATE_VERIFY_FAILED?

Когда контроллер Ansible работает на Python 2.7.9+ или более старой версии Python, в которой был обратны порт SSLContext (например, Python 2.7.5 на RHEL 7), контроллер попытается проверить сертификат, используемый WinRM для HTTPS-соединения. Если сертификат не может быть проверен (например, в случае самозаверенного сертификата), проверка будет неуспешной.

Чтобы проигнорировать проверку сертификата, добавьте ansible_winrm_server_cert_validation: ignore в инвентаризацию для хоста Windows.

См. также

Руководство пользователя
Индекс документации
Руководства по Windows
Индекс документации по Windows
Работа с Playbook'ами
Введение в Playbook'и
Рекомендации по наилучшей практике
Рекомендации по наилучшей практике
Список рассылки пользователей
Есть вопрос? Загляните в группу Google!
irc.freenode.net
IRC-чат-канал #ansible

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

Spec-Zone.ru

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