1

Эта проблема довольно озадачивает меня, и мне сложно сформулировать правильные вопросы. Итак, под моими самыми лучшими усилиями. Я рад, если вы поможете мне улучшить этот вопрос.Chocolatey не может получить доступ к общей папке Windows на Synology Diskstation, если вызван из Ansible

Справочная информация: Я управляю программным обеспечением, установленным на клиентах Windows 10 через Chocolatey, которое в свою очередь вызывается удаленно Ansible. Хранилище Chocolatey Packages находится в общей папке Windows на NAS. Я впервые столкнулся с проблемой второго прыжка, которая была успешно решена с помощью билетов на kerberos (см. https://github.com/ansible/ansible/issues/15682). Клиенты и Synology присоединяются к домену AD.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что если репозиторий является общим ресурсом Windows на Synology Diskstation, Chocolatey не видит пакеты, если удаленно удален через Ansible. Команда действительно успешно выполняется, но возвращает пустой список. Если одна и та же команда (список choco) вызывается локально, все в порядке. Если репозиторий находится на общем ресурсе, размещенном в NAS OpenMediaVault (OMV), он работает с Ansible, но только если опция Samba разрешает гостевой доступ включен. Я попытался найти аналогичные настройки в Synology. Я включил гостевой доступ, который также работает, поскольку клиенты могут подключаться к общему ресурсу без предоставления имени пользователя/пароля.

Используя Wireshark, я обнаружил, что при запуске списка choco локально указывается имя пользователя/домен (который ожидается). Если команда вызывается удаленно через Ansible, то не указывается имя пользователя/домен (значение NULL) (что на самом деле не ожидалось). Это объясняет, почему он работает на OMV, только если разрешен гостевой доступ.

В настоящее время я вижу два возможных пути решения:

  1. Получить удаленно выполненную команду Choco для отправки пользовательских учетных данных при доступе доли (предпочитаемое решение как более безопасный)

    • Как настроить удаленно исполняемые сценарии PowerShell (например, использование Chocolatey) для использования user-/domainname от пользователя, выполняющего сценарий при подключении к общей папке?
  2. Получить Synology DiskStation, чтобы принять имя пользователя, без имени пользователя также из удаленно исполняемых скриптов

    • Это действительно озадачивает меня больше всего. Гостевой доступ в принципе работает, так как я могу подключиться к общим ресурсам, где пользователь Гость разрешен из ящиков Linux и Windows без запроса пароля/имени пользователя.
    • У кого-нибудь есть идея, почему он не работает, если команда choco вызывается удаленно и как ее исправить?

Я с радостью предоставлю вам дополнительную информацию ...

ответ

2

WinRM сеансы выполняются как «пакетные» логины, что означает кеш не высевают с именем пользователя/паролем, и Microsoft делает его это трудно сделать. Мы планируем добавить поддержку Windows become в Ansible, чтобы частично решить эту проблему (создает новый сеанс интерактивного входа в сеанс WinRM перед запуском модулей Ansible, поэтому все будет вести себя более интуитивно). Если Synology понимает Kerberos, вы можете попасть туда, включив делегирование kerberos на pywinrm (установите ansible_winrm_kerberos_delegation=true в свой инвентарь на pywinrm 0.2.0 и Ansible 2.1+).В противном случае, вы любите крик - некоторые модули решили это, добавив в свою собственную проверку подлинности (см. win_package), но это не является устойчивым - мы хотим решить его. Невозможно, а не модуль за модулем.

+1

Привет, Мэтт, Большое спасибо за быстрый ответ! Это действительно работает! Мы действительно с нетерпением ожидаем лучшей поддержки WinRM в Ansible! Отличная работа! –