Что делать, если надо запустить одну и ту же команду на нескольких серваках?

Варианты:

  1. parallel-ssh. Тупо заходит на сервак по ssh и выполняет команду (нужно настроить беcключевой доступ). Дешево и сердито

  2. puppet. Упрощенно - это такая штука, где можно писать в декларативном стиле “на этом серваке должны быть поставлены такие-то пакеты, должен быть запущен такой-то сервис, развернута база с определенными таблицами и т.п.”. Сервер хранит сведения о том, что должно быть на каждой ноде, а на нодах стоит агент, который периодически запрашивает с сервера, что у него должно быть и сравнивает со своим текущим состоянием. Если не совпало - исправляет это. Для этой штуки есть букет плагинов (но не очень высокого качества), имеет смысл, только если проект довольно большой, долгий и есть похожие ноды (есть потенциал добавления новых нод).

  3. ansible - это parallel-ssh на стероидах. Претендует на то, чтобы быть заменой puppet, однако качество плагинов к нему очень низкое (по крайней мере те, с которыми я работал). Хипстерская хрень, насчет которой стоит трижды подумать, прежде чем использовать