Не совсем моя тема.
Вынести отдельно БД,Elastic.
Я предполагаю, что настройки там будут меняться давольно редко.
Вторая машина nginx,gunicor (хотя я лично за uwsgi, но вам виднее)
Тут если я правильно понял, меняться будет только APP.
Есть несколько путей как идти дальше:
Докер - самый тупой путь. У себя все собираем, смотрим как работает, перезаливаем свой докер на DO.
При этом БД у нас сохраняется (я думаю она же актуальна постоянно ?) и получаем новое окружение.
Второй путь простой диплой через Ansible или скриптами замены вашего app.
>При этом все настройки сервера хочу что бы хранились в репозитории тоесть нужен Ansible или Puppet.
Кто мешает все настройки хранить в git ? и мержить через git ? Да тут и откатится можно через git :D
>получить возможность быстро получить окружение на любом ноуте или компьютере, где захочу ввести разроботку
Тут только путь контейнера. Если вы хотите иметь всегда одну среду, которая будет работать заведомо везде.
>Могу ли я обойтись для первой цели без docker'а? Мне не нравится, что существенно сложнее управлять настройками, заставляет делать все правильно, для моего маленького проекта не всегда оправдано по времени(деньгам)
Вы один раз делаете образ контейнера с нужными вам настройками, без APP.
Делаете git в котором находится ваш код и уже например через Ansible разворачиваете где надо.
Берем докер, кидаем туда свежий код из git и через API в DO.
>Для второй цели думаю мне будет достаточно Fabric?
Дело вкуса.