(R)?ex 部署 & 配置管理框架

搜索

新闻

2016-03-07
(R)?ex 1.4.0 发布, 包含大量更新. 详情 发布文档.
2015-09-04
(R)?ex 1.3.3 released, fixing a bunch of bugs. See the release notes for more details.
2015-06-22
adjust GmbH is sponsoring the (R)?ex project with a new build server. Thank you for your support!
2015-06-17
(R)?ex 1.3.2 released, fixing issues related to file manipulation when run on BSDs. See the release notes for more details.
2015-06-09
Read the second part of "Rex in practice" series about Test-driven infrastructure.
2015-05-09
repositor.io 1.1.0 released. repositor.io is a repository management tool for apt, yum, yast and docker. This is a bugfix release with fixes for ubuntu and centos7 installation media mirroring.
2015-03-27
阅读 Andy Beverley 带来的演讲文稿 An introduction to Rex

会议

2015-05-07
German Perl Workshop 上做 Infrastructure as Code (ger) 的演讲。

培训

2015-11-30/2015-12-01 (Karlsruhe)

需要帮助吗?

Rex 是一个开源的项目,所以你可以找到社区的支持,连接如下:

  • IRC: #rex on freenode
  • 邮件组: rex-users
  • 问题列表: Github
  • 特性需求: 你需要什么 特性?
  • 商务支持: inovex
  • QQ群: 252744726

Professional support is also available.

常见问题

这里我们将维护一个常见问题列表和答案.

为什么 run 命令不格式化输出

run 命令在数组上下文里将返回一个数组。

如果你只是想打印标准输出的内容到终端,你可以强制在标量上下文中调用 run 命令。

my $output = run "df -h";
say $output;

怎么获取当前任务运行在哪台服务器上?

my $current_server = connection->server;

怎么给任务传递参数?

task 'mytask', sub {
  my $parameters = shift;
  my $parameter1_value = $parameters->{parameter1};
  my $parameter2_value = $parameters->{parameter2};
};

然后你就可以在命令行上这么运行任务:

rex -H hostname mytask --parameter1=value1 --parameter2=value2

怎么运行一大段代码构成的单个命令?

可以用 ShellBlock 模块。这个模块可通过运行下面命令安装:

$ rexify --use Rex::Misc::ShellBlock

然后你就可以这样远程运行多行 shell 代码了:

 use Rex::Misc::ShellBlock;
    
 task "myexec", sub {
    shell_block <<EOF;
 echo "hi"
 EOF
  
 };

查看上面链接中的文档,学习如何用这个模块运行 Perl, Python 和其他语言的代码。

如何在远程执行一个本地脚本?

如果你有一个本地脚本 'files/script',你可以用上面提到的 ShellBlock 模块在远端 运行它。向上面说的那样安装好模块后,用下面这样命令即可:

 use Rex::Misc::ShellBlock;
    
 task "myexec", sub {
     shell_block template('files/script');
 };

如何在远程用其他用户执行一个本地脚本?

在上例基础上,加上一个其他用户的要求,解决办法如下:


task "myexec", sub {
     sudo {
        command => sub {
           shell_block template('files/script');
        },
        user    => 'root'
     };
};

怎么检查远程运行命令的退出值?

Rex 会把远程运行的 run 或者 shell_block 语句的退出值存入 $? 变量。

如何利用 Rex 内置的日志记录器来标记 ERROR/WARN/INFO/DEBUG 消息?


   Rex::Logger::info("some message");           # for INFO  (green)
   Rex::Logger::info("some message", "warn");   # for WARN  (yellow)
   Rex::Logger::info("some message", "error");  # for ERROR (red)
comments powered by Disqus
Fork me on GitHub
Google Group / Twitter / GitHub / Mailinglist / irc.freenode.net #rex   -.ô.-   Disclaimer

D