Spec-Zone.ru › Ansible 2.10

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

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

Примечание

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

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

Ansible не поддерживает хосты Windows XP или Server 2003. Ansible работает с этими версиями операционной системы Windows:

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

1 - Смотрите запись FAQ по Server 2008 для получения дополнительной информации.

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

Поддерживаются ли Server 2008, 2008 R2 и Windows 7?

Microsoft завершил расширенную поддержку этих версий Windows 14 января 2020 года, и Ansible прекратил официальную поддержку в выпуске 2.10. Разработка новых функций для этих операционных систем не будет осуществляться, и автоматическое тестирование прекращено. Однако существующие модули и функции, скорее всего, будут продолжать работать, и простые запросы на исправление проблем с этими версиями Windows могут быть приняты.

Можно ли управлять Windows Nano Server с помощью Ansible?

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

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

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

Примечание

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

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

sudo apt-get update
sudo apt-get install python-pip git libffi-dev libssl-dev -y
pip install --user 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?

Вы не можете использовать ключи SSH с плагинами подключения WinRM или PSRP. Эти плагины подключения используют сертификаты X509 для аутентификации вместо пар ключей SSH, используемых SSH.

Способ генерации и сопоставления сертификатов X509 с пользователем отличается от реализации SSH; для получения дополнительной информации см. документацию по Windows Remote Management.

Ansible 2.8 добавил экспериментальный вариант использования плагина подключения SSH, использующего ключи 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. Дополнительную информацию см. в документации Понимание повышения привилегий: become.
  • Использование запланированной задачи, которую можно создать с помощью win_scheduled_task. Как и become, это обойдет все ограничения WinRM, но может использоваться только для выполнения команд, а не модулей.
  • Использование win_psexec для выполнения команды на хосте. PSExec не использует WinRM и, следовательно, обойдет все ограничения.
  • Для доступа к сетевым ресурсам без этих обходных путей можно использовать CredSSP или Kerberos с включенным делегированием учетных данных.

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

Программа не устанавливается на Windows с Ansible

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

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

Большинство модулей 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_template)
  • wait_for_connection

Можно ли запускать модули Python на хостах Windows?

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

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

Ansible 2.8 добавил экспериментальный вариант использования плагина подключения SSH для управления хостами Windows. Для подключения к хостам Windows через SSH необходимо установить и настроить ветку Win32-OpenSSH, разрабатываемую Microsoft на хосте(ах) Windows. Хотя большинство основных функций должно работать с SSH, Win32-OpenSSH быстро меняется, с добавлением новых функций и исправлением ошибок в каждом релизе. Настоятельно рекомендуется устанавливать последнюю версию Win32-OpenSSH со страницы выпусков GitHub при использовании с Ansible на хостах Windows.

Для использования SSH в качестве подключения к хосту Windows, установите следующие переменные в инвентаре:

ansible_connection=ssh

# Set either cmd or powershell not both
ansible_shell_type=cmd
# ansible_shell_type=powershell

Значение для ansible_shell_type должно быть либо cmd или powershell. Используйте cmd если DefaultShell не настроен на службе SSH и powershell, если он установлен как DefaultShell.

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

Если вы не используете Win32-OpenSSH как описано выше, вы должны подключаться к хостам Windows с помощью Windows Remote Management. Если ваш вывод Ansible указывает на использование 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

Введение в книги задач

Введение в книги задач

Советы и хитрости

Советы и хитрости для книг задач

Список рассылки пользователей

У вас есть вопрос? Загляните в группу 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.10/user_guide/windows_faq.html

Spec-Zone.ru

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