常见问题:
这里我们将维护一个常见问题列表和答案:
为什么run命令不格式化输出:
run命令在数组上下文例将返回一个数组:
如果i只想打印标准输出的内容到终端,你可以强制在标量上下文中调用run命令。
[root@node01 my-first-rex-project]# cat Rexfile
use Rex -feature => ['1.0'];
user "root";
private_key "/root/.ssh/id_rsa";
public_key "/root/.ssh/id_rsa.pub";
key_auth;
group myservers => "192.168.137.3";
desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
my $output = run "uptime";
say $output;
};
desc "Start Mysql Service";
task "start_mysql", group => "myservers", sub {
service "mysql" => "stop";
};
desc "df -h";
task "df -h",group =>"myservers", sub{
my @output = run "df -h";
say @output;
};
task "upload_file", group => "myservers", sub {
file "/etc/ntp.conf",
source => "ntp.conf"
};
[root@node01 my-first-rex-project]# rex "df -h"
[2017-04-25 14:14:18] WARN - Please use only the following characters for task names:
[2017-04-25 14:14:18] WARN - A-Z, a-z, 0-9 and _
[2017-04-25 14:14:18] WARN - Also the task should start with A-Z or a-z
[2017-04-25 14:14:18] WARN - You can disable this warning by setting feature flag: disable_taskname_warning
[2017-04-25 14:14:18] INFO - Running task df -h on 192.168.137.3
Filesystem Size Used Avail Use% Mounted on/dev/sda3 19G 11G 7.1G 60% /tmpfs 497M 0 497M 0% /dev/shm/dev/sda1 194M 29M 155M 16% /boot
[2017-04-25 14:14:30] INFO - All tasks successful on all hosts
[root@node01 my-first-rex-project]#
怎么获取当前任务运行在哪台服务器上?
[root@node01 my-first-rex-project]# cat Rexfile
use Rex -feature => ['1.0'];
user "root";
private_key "/root/.ssh/id_rsa";
public_key "/root/.ssh/id_rsa.pub";
key_auth;
group myservers => "192.168.137.3";
desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
my $output = run "uptime";
say $output;
};
desc "Start Mysql Service";
task "start_mysql", group => "myservers", sub {
service "mysql" => "stop";
};
desc "df -h";
task "df -h",group =>"myservers", sub{
my @output = run "df -h";
say @output;
my $current_server = connection->server;
print "$current_server=$current_server
";
};
task "upload_file", group => "myservers", sub {
file "/etc/ntp.conf",
source => "ntp.conf"
};
[root@node01 my-first-rex-project]# rex "df -h"
[2017-04-25 14:17:30] WARN - Please use only the following characters for task names:
[2017-04-25 14:17:30] WARN - A-Z, a-z, 0-9 and _
[2017-04-25 14:17:30] WARN - Also the task should start with A-Z or a-z
[2017-04-25 14:17:30] WARN - You can disable this warning by setting feature flag: disable_taskname_warning
[2017-04-25 14:17:30] INFO - Running task df -h on 192.168.137.3
Filesystem Size Used Avail Use% Mounted on/dev/sda3 19G 11G 7.1G 60% /tmpfs 497M 0 497M 0% /dev/shm/dev/sda1 194M 29M 155M 16% /boot
$current_server=192.168.137.3
[2017-04-25 14:17:41] INFO - All tasks successful on all hosts
怎么给任务传递参数?
rex
-H Execute a task on the given hosts (space delimited)
执行一个任务在一个给定的hosts(空格分割)
[root@node01 my-first-rex-project]# cat Rexfile
use Rex -feature => ['1.0'];
user "root";
private_key "/root/.ssh/id_rsa";
public_key "/root/.ssh/id_rsa.pub";
key_auth;
group myservers => "192.168.137.3";
desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
my $output = run "uptime";
say $output;
};
desc "Start Mysql Service";
task "start_mysql", group => "myservers", sub {
service "mysql" => "stop";
};
desc "df -h";
task "df -h",group =>"myservers", sub{
my $parameters = shift;
my $parameter1_value = $parameters->{parameter1};
my $parameter2_value = $parameters->{parameter2};
my @output = run "ps -ef | grep $parameter1_value | grep $parameter2_value";
say @output;
my $current_server = connection->server;
print "$current_server=$current_server
";
};
task "upload_file", group => "myservers", sub {
file "/etc/ntp.conf",
source => "ntp.conf"
};
[root@node01 my-first-rex-project]# rex "df -h" --parameter1=root --parameter2=sshd
[2017-04-25 14:28:08] WARN - Please use only the following characters for task names:
[2017-04-25 14:28:08] WARN - A-Z, a-z, 0-9 and _
[2017-04-25 14:28:08] WARN - Also the task should start with A-Z or a-z
[2017-04-25 14:28:08] WARN - You can disable this warning by setting feature flag: disable_taskname_warning
[2017-04-25 14:28:08] INFO - Running task df -h on 192.168.137.3
root 1211 1 0 02:05 ? 00:00:00 /usr/sbin/sshdroot 2884 1211 0 02:29 ? 00:00:00 sshd: root@pts/0 root 5629 1211 0 04:25 ? 00:00:00 sshd: root@pts/1 root 7903 1211 0 05:29 ? 00:00:00 sshd: root@notty root 7978 7903 0 05:29 ? 00:00:00 bash -c LC_ALL=C ; export LC_ALL; PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/pkg/bin:/usr/pkg/sbin; export PATH; ps -ef | grep root | grep sshd root 7987 7978 0 05:29 ? 00:00:00 grep sshd
$current_server=192.168.137.3
[2017-04-25 14:28:19] INFO - All tasks successful on all hosts