Мне нужно создать скрипт для управления сервером страниц обслуживания для моей хостинговой компании.
Мне нужно будет создать интерфейс CLI, который будет работать следующим образом (пример сценария):
(давайте предположим, что mcli - это имя скрипта, 1.1.1.1 - оригинальный адрес сервера (на котором размещен веб-сайт www.exemple.com)
Здесь я просто создаю интерфейс обратной связи на сервере обслуживания сисходный IP-адрес и создайте специфичный для сайта конфигурационный файл nginx в сайтах с поддержкой
$ mcli register www.exemple.com 1.1.1.1
[DEBUG] Adding IP 1.1.1.1 to new loopback interface lo:001001001001
[WARNING] No root directory specified, setting default maintenance page.
[DEBUG] Registering www.exemple.com maintenance page and reloading Nginx: OK
Затем, когда я хочу включить страницу обслуживания и полностью закрыть сайт:
$ mcli maintenance www.exemple.com
[DEBUG] Connecting to router with SSH: OK
[DEBUG] Setting new route to 1.1.1.1 to maintenance server: OK
[DEBUG] Writing configuration: Ok
Затем удалите страницу обслуживания:
$ mcli nomaintenance www.exemple.com
[DEBUG] Connecting to router with SSH: OK
[DEBUG] Removing route to 1.1.1.1: Ok
[DEBUG] Writing configuration: Ok
И мне понадобится функция, чтобы увидеть фактическое состояние сайтов
$ mcli list
+------------------+-----------------+------------------+
| Site Name | Server I.P | Maintenance mode |
+------------------+-----------------+------------------+
| www.example.com | 1.1.1.1 | Enabled |
| www.example.org | 1.1.1.2 | Disabled |
+------------------+-----------------+------------------+
$ mcli show www.example.org
Site Name: www.example.org
Server I.P: 1.1.1.1
Maintenance Mode: Enabled
Root Directory : /var/www/maintenance/default/
Но я никогда не делал такого рода сценариев с Ruby.gems вы рекомендуете для такого рода вещей? Для разбора командной строки? Столбец / Colorized выход? SSH-соединение (необходимо для подключения к маршрутизаторам Cisco)
Вы рекопорекомендуйте мне использовать локальную базу данных (sqlite) для хранения метаданных (изменения этапов, фактические состояния) или вы рекомендуете выполнять вычисления на лету, анализируя файлы конфигурации nginx / interfaces и используя syslog для мониторинга изменений, выполненных с помощью этого сценария?
Этот сценарий будет использоваться в первый раз для масштабной физической миграции центра обработки данных, а затем для стандартного использования для запланированных простоев.
Спасибо