Spec-Zone.ru › Ansible 2.9

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

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

Примечание

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

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

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

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

Ansible также имеет минимальные требования к версии PowerShell — пожалуйста, см. Настройка хоста 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 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 Update и DPAPI, на которые полагаются некоторые установщики и программы.

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

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

См. Понимание повышения привилегий: become для получения дополнительной информации о том, как использовать 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. Это полезно, если во время выполнения книги задач необходимо связаться с внешней службой, и нет эквивалентного модуля 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. Если в выводе 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
О книгах задач
Введение в книги задач
Рекомендации по лучшим практикам
Рекомендации по лучшим практикам
Пользовательская рассылка
Есть вопрос? Задайте его на форуме!
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.9/user_guide/windows_faq.html

Spec-Zone.ru

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