Самое главное не указал:
1. Для чего именно ты собираешь окружение? Для разработки или для прода?
2. Что такое "веб-ресурсы пользователей"?
3. Для чего тебе к этому подключаться по ssh и ftp? (для каждого нужно отдельное пояснение)
4. Что подразумевает под собой словосочетание "возможность работать с ..."?
5. Кто такие "пользователи"?
Такое ощущение по описанию, будто ты уже зацепился к контейнерам, тк с ними удобно работать, но не хочешь учиться с ними работать как задумано и хочешь чтобы "пользователи" работали с ними как с полноценными виртуальными машинами.
Если тебе всё-таки именно виртуальные машины нужны, то тогда и бери виртуальные машины и настраивай их при помощи ansible.
Если тебе нужны контейнеры, то бери k8s, но тогда уже придётся отказаться от 1,2 и частично 4 с 5, тк:
1. Контейнеры не должны иметь состояние. Так что сразу отлетает п2
2. Контейнеры должны быть изолированы, а по тому сразу отлетает п1 с доступом внутрь контейнеров
3. Обновление зависимостей (например базового образа) требует пересборки и перезапуска контейнера
4. Один контейнер - одно приложение. Не будет такого, что у тебя в одном контейнере будет всё что ты описал в п3 одновременно работать.
5. Никаких "папок" для пользователей не будет. Но у каждого пользователя-человека вполне может быть своя учётка для доступа в кластер, чтобы в нём создавать свои ресурсы. При этом на уровне учётки можно запретить одному пользователю доступ к ресурсам другого пользователя например.