owned this note
owned this note
Published
Linked with GitHub
> помочь четко ответить на группу вопросов. Не поговорить о них, а дать четкий ответ (если надо - поизучать), чтобы финализировать план использования. Вот такие вопросы:
Решения некоторых вопросов будут комплексными и нуждаются в длительной командной разработке.
И в зависимости от бюджета.
> как установить лимит на количество одновременных сессий (в одной виртуалке)
Из коробки идет ограничение на одну одновременную сессию удаленного рабочего стола, т.е. если на виртуалку будет стучаться другой юзер при уже активной сессии, то его не пустит, но спросит у активного юзера разрешение уступить сессию, конечно, такой запрос можно отключить. Это всё настраивается через GPO и/или Windows реестр.
> как подкладывать лицензии в инстансы и другие настройки? То есть если у нас из одного шаблона подняты 5 виртуалок и нам надо прокинуть в каждую разные настройки или разные файлы лицензиями
Лицензии софта, настройки софта, сам софт, а также настройки окружения и операционной системы возможно деплоить и устанавливать удаленно через WinRM Powershell скрипты (а также через OpenSSH, PSExec, GPO).
Все инсталяторы могут устанавливать софт без участия пользователя в скрытом режиме (через ключи командной строки, unattended, hidden install).
Для установки из онлайн есть пакетные менеджеры, которые скачивают и устанавливают нужную версию известного софта (winget, chocolatey).
Так же софт можно просто копировать с переносом нужных ключей Windows реестра.
Импортирование лицензий скриптами возможно дистанционно, всегда есть автоматизированные решения (в крайнем случае Autohotkey и т.п.).
> лицензия windows - можно ли пиратить? Если нет - что будет стоить с учетом виртуализации?
Актуальные инструменты для серверной и десктопных версий https://github.com/massgravel/Microsoft-Activation-Scripts
Реально, начнем без лицензии, а потом по факту посчитаем во сколько всё обойдется, тогда и примете решение.
> - Инструкция по изменению конфигурации
> - Как хранить конфигурацию (вручную?)
Как для сервера, так и для клиентских виртуалок - при первой настройке сразу всё прописывать в скрипт, что будет базовой инструкцией и непосредственно инсталлятором всего (включая все настройки окружения, софт, лицензии).
Можно использовать готовые образы для быстрого развертывания, плюс атомарные скрипты для подстройки.
Вести сетевую директорию с ПО, лицензиями и скриптам.
Вести Wiki/HowTo.
> - Как изменить ресурсы контейнера
> - Как сделать больше/меньше инстансов определенного типа
> - Как развернуть новый сервер
> - Как менять конфигурацию и переразворачивать ее на существующие инстансы
> - Как создать новую конфигурацию или удалить ее
> - приходит человек и говорит "хочу максимум ресурсов на 24 часа" - ему выделяется железка на 64 ядра и 512гб, когда заканчивает - она гасится
Вручную, через Powershell/Bash скрипты, через Hyper-V/Proxmox API.
Всё возможно автоматизировать.
Для Hyper-V это скрипты Powershell + WinRM, а также Hyper-V API.
Для Proxmox аналогично - Bash скрипты и Proxmox API.
Самый просто пример Powershell команд для создания копии и развертывания копии.
```
Export-VM -Name <vm name> -Path <path>
Import-VM -Path '<vm export path>\<vm export name>.vmcx' # Register in place
Import-VM -Path '<vm export path>\<vm export name>.vmcx' -Copy -VhdDestinationPath '<VHD path>' -VirtualMachinePath 'VM path' # Restore
Import-VM -Path '<vm export path>\<vm export name>.vmcx' -Copy -GenerateNewId # Import as a copy
```
> Можно ли поднимать контейнер по мере необходимости под отдельную сессию?
Создавать новую VM - долго, включать или выводить из сна - быстро.
> Какое решение об объединении серверов в сеть и регулированию доступа к ним (мы говорили про tailgate, но сюда же AD - в плане что в tailgate логинов может быть мало и они могут быть общие, но внутри в винде мы хотим отличать всех юзеров), порядка 1000 пользователей
Вы имеете ввиду Tailscale, ZeroTier, Netmaker.
Внутрення локальная сеть будет определена на сервере и автоматически настраиваться для каждой виртуалки. Дистанционный доступ может быть и без сторонних решений посредством настройки Proxy на сервере, но лучше упомянутые решения (даже просто Wiregueard с установленным на сервер GUI дашборд).
Использование Tailscale (ZeroTier, Netmaker, Wireguard) позволит выдавать каждому пользователю свой логин и ассоциировать уникальный IP адрес, тем самым мониторить и контролировать пользователя (даже если будут на одном и том же Windows юзере с лицензиями и предустановленным софтом).
> - возможность раздавать права по группам
> - добавить / удалить / заблокировать / изменить группу
Для этого есть Active Directory и групповые политики GPO. Юзеры делятся на группы, а группам уже определяются доступы, к папкам, к программам и т.д.
Если строить на базе Proxmox, то Windows Server можно держать тоже как виртуалку, он нужен для управления Windows клиентами.
> возможность управлять извне по API
Proxmox и Hyper-V имеют API. Если каких либо функций в API нету, то можно сделать своё, которое будет запускать скрипты на бекенде (гипервизоре, Windows сервере, виртуалках).
> хотим знать кто когда куда ходил
Возможно построить мониторинг на базе Powershell скриптов и делать выборки по IP клиента и логировать их.
> Какое финальное решение о быстром файловом хранилище
Финальное решение будет после явного определения структуры и необходимого размера и скорости.
S2D (Microsoft Storage Spaces Direct) требует лицензии, но является гибким, Windows нативным и сравнительно быстрым решением.
Есть альтернатива `Ceph` из мира Linux/Proxmox, будет медленней и сложнее интегрироваться для Windows.
> Фантазия про шаринг ресурсов серверов + оптимизированный доступ (когда данные нужные данному серверу подкладываются к нему локально) — можем ли мы использовать Storage Spaces (но без дорогой лицензии)
> Просто файловый сервер в рамках сети с большим диском
Можно, есть масса решений. Про лицензию S2D я отвечу позже, в интернете явного ответа нету о возможности пиратить данную фичу.
> Отказоустойчивый
Дорого. HA (high availability) и отказоустойчивость сделать возможно. Использовать доменые имена вместо IP и держать копию системы на отдельных серверах.
> Опция автоматического разлогинивания по условиям
> не было никакой активности + не загружен CPU
Да, периодическая проверка `idle time` .
> как предоставить API для отображения текущего состояния контейнеров?
> то есть хотим видеть извне (допустим по http раз в минуту обращаться) эту информацию
> Есть ли активная сессия, ее пользователь и продолжительность
> Утилизация всей системы, в том числе по часам
По простому - Netdata, Prometeus+Grafana...
Сложнее но аккуратнее - создать дашбоард и свое API на основе Powershell/Bash.
Есть существующие наработки, но все нужно серьезно дорабатывать, например https://github.com/ironmansoftware/powershell-universal
https://docs.powershelluniversal.com
Коммерция
https://www.datadoghq.com/dg/monitor/hyper-v-benefits/
> Сможешь ли ты сделать это относительно быстро и сколько это будет стоить?
Часть автоматизации потребует много времени, часть вещей вероятно я не смогу сделать, особенно сам (и я не смогу быть дешевым решением, у меня безлимитно работы с окладом $35 в час, с перебивками на большие рейты и волонтерство).