Spec-Zone.ru › Ansible 2.7

Часто задаваемые вопросы по 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 Remote Management для получения дополнительной информации.

Почему я могу выполнить команду локально, но она не работает в 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 Remote Management содержатся подробные сведения об ограничениях 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
#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.7/user_guide/windows_faq.html

Spec-Zone.ru

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