Rex 管理效率提升利器.ppt
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" desc "Get Disk Free" task "disk_free", sub my $output = run "df -h" say $output; ; rex -H "192.168.0.100.200” disk_free,定义设备组,定义设备组,group webservers => qw( 192.168.0.100 192.168.0.101);rex -G webservers disk_free,在 Perl 中使用,use Rex:Taskmy $task = Rex:Task->new(name => "testtask");$task->set_server("remoteserver");$task->set_code(sub say "Hello" );$task->modify("no_ssh", 1);,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",部署,task prepare => sub install "apache2" service apache2 => ensure => "started",配置管理,task "configure", group => "frontend", sub prepare(); file "/etc/apache2/apache2.conf", source => "files/etc/apache2/apache2.conf", on_change => sub service apache2 => "reload" ;,其它功能,Hardware - 收集硬件信息Transaction - 事务支持FS:File - 远程文件读写Commands:Cron - Cron 管理Commands:User - 用户管理Commands:Iptables - 管理 IptableVirtualization:VBox - 管理 Virtualbox,其它功能,完整的 API 列表请参考 http:/rexify.org/api/index.html,与其它同类工具的对比,与调用 SSH 的对比与 Expect 的对比与 Puppet 的对比与自主开发工具的对比,与其它同类工具的对比,循环调用 SSH 是不可接受的,与其它同类工具的对比,与 Expect 的对比Expect 由一系列的 expect 和 send 命令组成;Rex 由一个个的 Task 组成。 Expect 关心的是字符串的匹配和捕获;Rex 关心的是更高层的对象,既一个任务的执行。Expect 调试麻烦;Rex 方便调试。,与其它同类工具的对比,与 Puppet 的对比Puppet 使用 Ruby 开发;Rex 使用 Perl 开发。Puppet 提供一套自己的 DSL;Rex 直接采用 Perl 语言。Puppet 完成度高,使用复杂;Rex 方便扩展,使用相对简单。Puppet 用户更多;Rex 比较小众。,与其它同类工具的对比,与自主研发工具的对比自主研发工具和 Rex 都能与现有环境无缝整合。自主研发工具开发量大;基于 Rex 再次开发开发量小。Rex 拥有社区支持。,Rex 的优缺点,Rex 的优点Rex 的缺点,Rex 的优缺点,Rex 的优点不需要 agent。使用简单,尤其对于 Perler 来说。方便扩展,方便整合现有环境。提供一系列方便好用的 API,避免重复开发。开发活跃,更新速度快。,Rex 的优缺点,Rex 的缺点依赖于 SSH。完成性不高,缺少一些其它工具如 Puppet 提供的 Dashboard 等功能,需要自己开发。不提供一套自己的 DSL,直接采用 Perl 语言,对其它语言用户不友好。,最佳应用,废弃原来直接使用 SSH 或者 Expect 脚本等做法,统一由 Rex 管理。 Rex 的 group 定义默认直接写在 Rexfile 里,可改为由设备管理数据库中读取。基于 Rex 的 Web 界面,可使用 Rex:WebUI 或者自主开发 Web 界面。基于 Rex 的操作日志追踪和审计。,Lekan Rex 应用例子,谢谢大家!,