Rex 管理效率提升利器

22
Rex Rex 管管管管管管管管 管管管管管管管管 Lekan Lekan 技技技 技技技 技技技 技技技 () 技技技 技技技 () 2013/07/24 2013/07/24

description

Rex 管理效率提升利器. Lekan 技术部 吴泽林(莫言) 2013/07/24. Rex 是什么. Rex( http://rexify.org )是一个自动化工具,可用于远程执行、部署和配置管理。 使用 Perl 开发,开源软件。 采用 Apache 2.0 许可证。. 简单的例子. Rexfile: user "rex"; key_auth; public_key "/data/rex/.ssh/id_rsa.pub"; private_key "/data/rex/.ssh/id_rsa"; - PowerPoint PPT Presentation

Transcript of Rex 管理效率提升利器

Page 1: Rex  管理效率提升利器

Rex Rex 管理效率提升利管理效率提升利器器

Lekan Lekan 技术部技术部吴泽林(莫言)吴泽林(莫言)

2013/07/242013/07/24

Page 2: Rex  管理效率提升利器

Rex Rex 是什么是什么 Rex(Rex(http://rexify.orghttp://rexify.org)是一个自动化工)是一个自动化工

具,可用于远程执行、部署和配置管理。具,可用于远程执行、部署和配置管理。 使用 使用 Perl Perl 开发,开源软件。开发,开源软件。 采用 采用 Apache 2.0 Apache 2.0 许可证。许可证。

Page 3: Rex  管理效率提升利器

简单的例子简单的例子 Rexfile:

user "rex"; key_auth; public_key "/data/rex/.ssh/id_rsa.pub"; private_key "/data/rex/.ssh/id_rsa";

desc "Get Disk Free"; task "disk_free", sub { my $output = run "df -h"; say $output; };

rex -H "192.168.0.[100..200]” disk_free

Page 4: Rex  管理效率提升利器

定义设备组定义设备组 定义设备组定义设备组group webservers => qw( 192.168.0.100 192.168.0.101);

rex -G webservers disk_free

Page 5: Rex  管理效率提升利器

在 在 Perl Perl 中使用中使用 use Rex::Task

my $task = Rex::Task->new(name => "testtask");$task->set_server("remoteserver");$task->set_code(sub { say "Hello"; });$task->modify("no_ssh", 1);

Page 6: Rex  管理效率提升利器

Rex Rex 的功能介绍的功能介绍 远程执行远程执行 部署部署 配置管理配置管理 其它功能其它功能

Page 7: Rex  管理效率提升利器

远程执行远程执行 task run => sub {

my $self = shift;my $cmd = $self->{cmd};

run $cmd, sub { my ($data) = @_; my $server = Rex->get_current_connection()->{server};

say "$server>>\n$data"};

rux -G allservers run --cmd="df -h"rux -G allservers run --cmd="test -d /usr/local/nginx && /usr/local/nginx/sbin/nginx -s reload"

Page 8: Rex  管理效率提升利器

部署部署 task prepare => sub {

install "apache2"; service apache2 => ensure => "started";};

Page 9: Rex  管理效率提升利器

配置管理配置管理

task "configure", group => "frontend", sub { prepare();

file "/etc/apache2/apache2.conf", source => "files/etc/apache2/apache2.conf", on_change => sub { service apache2 => "reload"; };};

Page 10: Rex  管理效率提升利器

其它功能其它功能 Hardware - Hardware - 收集硬件信息收集硬件信息 Transaction - Transaction - 事务支持事务支持 FS::File - FS::File - 远程文件读写远程文件读写 Commands::Cron - Cron Commands::Cron - Cron 管理管理 Commands::User - Commands::User - 用户管理用户管理 Commands::Iptables - Commands::Iptables - 管理 管理 IptableIptable Virtualization::VBox - Virtualization::VBox - 管理 管理 VirtualboxVirtualbox

Page 11: Rex  管理效率提升利器

其它功能其它功能 完整的 完整的 API API 列表请参考 列表请参考 http://http://

rexify.org/api/index.htmlrexify.org/api/index.html

Page 12: Rex  管理效率提升利器

与其它同类工具的对比与其它同类工具的对比 与调用 与调用 SSH SSH 的对比的对比 与 与 Expect Expect 的对比的对比 与 与 Puppet Puppet 的对比的对比 与自主开发工具的对比与自主开发工具的对比

Page 13: Rex  管理效率提升利器

与其它同类工具的对比与其它同类工具的对比 循环调用 循环调用 SSH SSH 是不可接受的是不可接受的

Page 14: Rex  管理效率提升利器

与其它同类工具的对比与其它同类工具的对比 与 与 Expect Expect 的对比的对比1.1. Expect Expect 由一系列的 由一系列的 expect expect 和 和 send send 命命

令组成;令组成; Rex Rex 由一个个的 由一个个的 Task Task 组成。组成。2.2. Expect Expect 关心的是字符串的匹配和捕获;关心的是字符串的匹配和捕获;

Rex Rex 关心的是更高层的对象,既一个任关心的是更高层的对象,既一个任务的执行。务的执行。

3.3. Expect Expect 调试麻烦;调试麻烦; Rex Rex 方便调试。方便调试。

Page 15: Rex  管理效率提升利器

与其它同类工具的对比与其它同类工具的对比 与 与 Puppet Puppet 的对比的对比1.1. Puppet Puppet 使用 使用 Ruby Ruby 开发;开发; Rex Rex 使用 使用 PP

erl erl 开发。开发。2.2. Puppet Puppet 提供一套自己的 提供一套自己的 DSLDSL ;; Rex Rex 直直

接采用 接采用 Perl Perl 语言。语言。3.3. Puppet Puppet 完成度高,使用复杂;完成度高,使用复杂; Rex Rex 方方

便扩展,使用相对简单。便扩展,使用相对简单。4.4. Puppet Puppet 用户更多;用户更多; Rex Rex 比较小众。比较小众。

Page 16: Rex  管理效率提升利器

与其它同类工具的对比与其它同类工具的对比 与自主研发工具的对比与自主研发工具的对比1.1. 自主研发工具和 自主研发工具和 Rex Rex 都能与现有环境无都能与现有环境无

缝整合。缝整合。2.2. 自主研发工具开发量大;基于 自主研发工具开发量大;基于 Rex Rex 再次再次

开发开发量小。开发开发量小。3.3. Rex Rex 拥有社区支持。拥有社区支持。

Page 17: Rex  管理效率提升利器

Rex Rex 的优缺点的优缺点 Rex Rex 的优点的优点 Rex Rex 的缺点的缺点

Page 18: Rex  管理效率提升利器

Rex Rex 的优缺点的优缺点 Rex Rex 的优点的优点1.1. 不需要 不需要 agentagent 。。2.2. 使用简单,尤其对于 使用简单,尤其对于 Perler Perler 来说。来说。3.3. 方便扩展,方便整合现有环境。方便扩展,方便整合现有环境。4.4. 提供一系列方便好用的 提供一系列方便好用的 APIAPI ,避免重复,避免重复

开发。开发。5.5. 开发活跃,更新速度快。开发活跃,更新速度快。

Page 19: Rex  管理效率提升利器

Rex Rex 的优缺点的优缺点 Rex Rex 的缺点的缺点1.1. 依赖于 依赖于 SSHSSH 。。2.2. 完成性不高,缺少一些其它工具如 完成性不高,缺少一些其它工具如 PuppPupp

et et 提供的 提供的 Dashboard Dashboard 等功能,需要自等功能,需要自己开发。己开发。

3.3. 不提供一套自己的 不提供一套自己的 DSLDSL ,直接采用 ,直接采用 Perl Perl 语言,对其它语言用户不友好。语言,对其它语言用户不友好。

Page 20: Rex  管理效率提升利器

最佳应用最佳应用1.1. 废弃原来直接使用 废弃原来直接使用 SSH SSH 或者 或者 Expect Expect 脚脚

本等做法,统一由 本等做法,统一由 Rex Rex 管理。管理。2.2. Rex Rex 的 的 group group 定义默认直接写在 定义默认直接写在 RexfRexf

ile ile 里,可改为由设备管理数据库中读取。里,可改为由设备管理数据库中读取。3.3. 基于 基于 Rex Rex 的 的 Web Web 界面,可使用 界面,可使用 Rex::Rex::

WebUI WebUI 或者自主开发 或者自主开发 Web Web 界面。界面。4.4. 基于 基于 Rex Rex 的操作日志追踪和审计。的操作日志追踪和审计。

Page 21: Rex  管理效率提升利器

Lekan Rex Lekan Rex 应用例子应用例子

Page 22: Rex  管理效率提升利器

谢谢大家!