【发布时间】:2011-12-28 23:15:48
【问题描述】:
我必须创建一个脚本来为我的托管公司管理维护页面服务器。
我需要做一个这样的 CLI 界面(示例场景):
(在这里,假设 mcli 是脚本的名称,1.1.1.1 是原始服务器地址(托管网站,www.exemple.com)
这里我只是在维护服务器上用原始ip地址创建回环接口,并在sites-enabled中创建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 编写过这种脚本。你推荐什么宝石来做这种事情?用于命令行解析?列/彩色输出? SSH连接(需要连接cisco路由器)
您是否建议我使用本地数据库 (sqlite) 来存储元数据(阶段更改、实际状态),或者您是否建议我通过分析 nginx/interfaces 配置文件并使用 syslog 监控所做的更改来动态计算用这个脚本?
此脚本将首先用于大规模数据中心物理迁移,然后用于计划停机时间的标准用途。
谢谢
【问题讨论】:
标签: ruby command-line rubygems automation nginx