Мы - стартап, который только набирает обороты и сталкивается с проблемой управления сотнями машин, с необходимостью делать ночные и еженедельные выпуски для всех из них, а также управлять их конфигурациями.
Обычно это работа одного или нескольких системных администраторов, но в нашем случае нам нужно сделать это только с одним. Мы изучили такие инструменты, как Puppet и Distributed Shell, но ни один из них не подходит для того, что мы ищем. Для каждой машины необходимо автоматически собрать несколько модулей Linux из источника, обновить пакеты, установить стек и конфигурации Linux, извлечь исходный код из Git и обновить определения схемы базы данных. Загвоздка в том, что все это нужно делать с одобрения.
Существуют ли какие-либо инструменты, которые позволят нам подготовить команды для утверждения перед выполнением?
Puppet казался наиболее близким к тому, что нам нужно, но сборка из исходного кода кажется сложной для настройки и требует дополнительных порт должен быть открыт (у нас доступен только порт 22).
Вы можете использовать Ansible для управления конфигурацией , поскольку он использует существующий доступ SSH для связи с машинами.
Похоже, что вам нужно не только решение для управления конфигурацией, но и решение для оркестровки / управления рабочими процессами для управления сложными последовательностями событий с поэтапным обнаружением сбоев и распараллеливанием на нескольких машинах. Для этого было бы полезно что-то вроде Control / M, JBPM или event Concourse.ci.
Удачи вам и вашему стартапу.
Если вы используете виртуальные машины, вы можете посмотреть Асгард. Это позволит любому создавать AMI, но только одобренные люди смогут фактически выпустить новый AMI в мир. Затем вы можете использовать любой инструмент для создания AMI.