Часто задаваемые вопросы о 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 с помощью Ansible?
Windows Nano Server в настоящее время не поддерживается Ansible, поскольку он не имеет доступа к полному .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 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 для получения дополнительной информации.
Ansible 2.8 добавил экспериментальную поддержку использования плагина подключения SSH, который поддерживает аутентификацию с помощью ключей SSH, для подключения к серверам Windows. Смотрите этот вопрос для получения дополнительной информации.
Почему команда, выполняемая локально, не работает с Ansible?
Ansible выполняет команды через WinRM. Эти процессы отличаются от выполнения команды локально в следующих аспектах:
- Если не используется такой метод аутентификации, как CredSSP или Kerberos с делегированием учетных данных, процесс WinRM не может делегировать учетные данные пользователя сетевому ресурсу, что вызывает ошибки
Access is Denied. - Все процессы, выполняемые через WinRM, находятся в неинтерактивной сессии. Приложения, требующие интерактивной сессии, не будут работать.
- При выполнении через WinRM Windows ограничивает доступ к внутренним API Windows, таким как API обновления Windows и DPAPI, на которые некоторые установщики и программы полагаются.
Некоторые способы обойти эти ограничения:
- Использовать
become, который выполняет команду так же, как при локальном выполнении. Это обойдет большинство ограничений WinRM, так как Windows не осознает, что процесс выполняется через WinRM, когда используетсяbecome. Обратитесь к документации Понимание повышения привилегий для получения дополнительной информации. - Использовать запланированную задачу, которую можно создать с помощью
win_scheduled_task. Как иbecome, она обойдет все ограничения WinRM, но может использоваться только для выполнения команд, а не модулей. - Использовать
win_psexecдля выполнения команды на хосте. PSExec не использует WinRM и, следовательно, обойдет любые ограничения. - Для доступа к сетевым ресурсам без этих обходных путей можно использовать метод аутентификации, поддерживающий делегирование учетных данных. Как CredSSP, так и Kerberos с включенным делегированием учетных данных могут это поддерживать.
Обратитесь к Понимание повышения привилегий для получения более подробной информации о применении become. Раздел ограничений в Управлении удаленными ресурсами Windows содержит больше информации об ограничениях 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. Это полезно, если во время выполнения playbook необходимо связаться с внешним сервисом, и нет эквивалентного модуля Windows.
Можно ли подключиться к хостам Windows через SSH?
Ansible 2.8 добавил экспериментальную поддержку использования плагина подключения SSH для управления хостами Windows. Для подключения к хостам Windows через SSH необходимо установить и настроить разветвление Win32-OpenSSH, разрабатываемое Microsoft на хосте(ах) Windows. Хотя большинство основных функций должно работать с SSH, Win32-OpenSSH быстро изменяется, с добавлением новых функций и исправлением ошибок в каждом выпуске. Сильно рекомендуется установить последнюю версию Win32-OpenSSH с страницы GitHub Releases при использовании ее с 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. Если ваш вывод Ansible указывает на использование SSH, либо вы не правильно настроили переменные подключения, либо хост их неправильно наследует.
Убедитесь, что ansible_connection: winrm установлен в инвентаре для хоста(ов) Windows.
Почему мои учетные данные отклоняются?
Это может быть вызвано множеством причин, не связанных с неверными учетными данными.
См. HTTP 401/Credentials Rejected в Настройка хоста 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
- Рекомендации по лучшим практикам
- Советы по лучшим практикам
- Список рассылки пользователей
- У вас есть вопрос? Заходите на форум!
- irc.freenode.net
- #ansible IRC-чат-канал
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/user_guide/windows_faq.html