创建数据库任务

更换到数据库版本库。

wks01 Service# cd ../database

wks01 database# touch Rexfile

现在,我们将把2个常见版本库作为一个外部版本库来添加。

wks01 database# svn propedit svn:externals .

添加下列几行到编辑器中,保存并关闭。

lib/Common http://svn01/svn/common

lib/Service http://svn01/svn/service

在建好外部版本库之后,运行更新,提交新的设置。

wks01 database# svn up

wks01 database# svn ci -m "added external repositories"

svn up命令现在检查两个外部版本库,检查有无更新。所以,要是有人往这其中一个版本库添加了新服务,你在执行svn up命令后获得新服务。现在,你可以开始创建Rexfile,以建立数据库服务器。

set user => "root";

set password => "f00b4r";

include qw/

Common::NTP

Service::MySQL

/;

set group => srvdb => "db01";

task "prepare", group => "srvdb", sub {

# 运行常见ntp任务“prepare”

Common::NTP::prepare();

# 安装mysql

Service::MySQL::prepare();

# 配置mysql

Service::MySQL::configure({

key_buffer => "32M",

max_allowed_packet => "32M",

});

# 重新启动mysql

service mysql => "restart";

};

首先(在第1行和第2行),我们设立了针对目标主机(db01)所用的验证机制。这里,你还可以使用密钥验证(欲知详情,请参阅http://rexify.org/howtos/start.html)。然后,我们添加了Common::NTP和Service::MySQL模块,那样我们可以从这些模块来使用服务。每个任务还登记为一个perl函数。所以,我们完全可以像调用其余任何perl函数那样来调用它们。我们添加了所需的模块后,定义了一个新的服务器组,名为“srvdb”,并为其添加了主机“db01”。可以为一个服务器组添加多个主机。比如:

set group => srvdb => "db01", "db02", "db03";

set group => srvdb => "db[01..03]";

在第2行中,我们定义了第一个任务,名为“prepare”。该任务在服务器组“srvdb”中的所有服务器上执行。该任务调用Common::NTP和Service::MySQL模块的“prepare”任务。创建工作完毕后,我们在第20行配置了mysql服务器,在第26行重新启动了mysql服务。就这样。这将安装、配置和启动MySQL服务器。现在,你可以把一切重新提交到版本库。

wks01 database# svn add Rexfile

wks01 database# svn ci -m "inital commit of Rexfile"

为了创建数据库服务器,你可以输入下列命令:

wks01 database# rex prepare

如果你想列出Rexfile里面的任务,可以使用下列命令。

wks01 database# rex -T

我们的数据库运行后,现在可以为website项目创建任务。


相关内容