Часто задаваемые вопросы по 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