首页 > 编程 > Perl > 正文

Perl集群配置管理系统Rex简明手册

2020-06-04 20:32:14
字体:
来源:转载
供稿:网友

Rex 是 Perl 编写的基于 SSH 链接的集群配置管理系统,语法上类似 Puppet DSL。官网中文版见 http://rex.perl-china.com 。本文仅为本人在部门 Wiki 上编写的简介性文档。

常用命令参数

rex 命令参数很多,不过因为我们的环境是 krb 认证的,所以有些参数只能写在 Rexfile 里。所以一般固定在存放了 Rexfile 的 /etc/puppet/webui 下执行命令,很多配置就自动加载了。那么还需要用到的命令参数基本就只有下面几个:
-Tv: 查看当前 Rexfile 里定义了哪些 Task 任务,以及服务器组。
-H: 指定 Task 将在哪些 Host 上执行。这里比较方便的地方是支持 10.5.16.[95..110] 这样的写法。
-G: 指定 Task 将在哪些 Group 上执行。Group 的定义方式很多,Rex 默认支持的有直接在 Rexfile 里通过 group 指令指定,通过 ini 配置文件设定等等。目前我是实现了一个 groups_db 指令,来从我们的 sqlite 里获取。groups_db('cdnbj::nginx') 就会自动生成一个名叫 ‘cdnbj::nginx' 的服务器组,包括 cdnbj 里所有部署了 nginx 的服务器。
-e: 指定一个临时任务。通常是'say run “ipconfig”‘这样的简单命令形式。如果需要复杂逻辑,还是在 Rexfile 里书写 Task。
-q:指定运行日志级别,有 -q 和 -qq。
-d:指定运行日志级别,有 -d 和 -dd。

Rexfile 介绍

参数设置部分:
代码如下:
    set connection => "OpenSSH";
    user "root";
    krb5_auth;
    parallelism 10;
这四行指定采用 kerberos 认证,并发 10 个进程执行 ssh 命令。
代码如下:
    desc "install puppet agent";
    task "puppet_install", sub {
    }
    before "puppet_install", sub {
    }
    after "puppet_install", sub {
    }

这几行就是 Rexfile 的任务定义主体格式。task 指令定义任务,任务会在具体的 -H 或者 -G 服务器上执行。其他都是可选项,desc内容会在 -Tv 的时候显示;before 和 after 定义的任务会在执行对应 task 之前或之后,在'''rex命令执行处,即10.4.1.21本地'''执行。

常用指令介绍

run

运行命令。如果有回调函数,那么会把 stdout 和 stderr 传给回调函数;如果没有,直接把 stdout 作为返回值。

比如:
代码如下:
say run "uptime";
    run "nginx -v", sub { my ($out, $err) = @_; say $err };

file

分发文件。语法类似 Puppet 的 file。支持 source、template、ensure、on_change 等操作。注意:rex 是顺序执行 Rexfile 的,所以不用设置 Puppet 的 require 指令。

比如:
代码如下:
    file "/etc/yum.repos.d/xiaonei-private.repo",
      source => "repos/xiaonei-private.repo";

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表