运行 远程服务器中的命令
Run a command in remote server
在远程服务器中 运行 命令的最佳方式是什么?我正在考虑使用 SSH,但还有比这更好的方法吗?
我使用了 Red Hat Linux,我想 运行 其中一台服务器中的命令,指定我想要的其他服务器有我的命令 运行,并且它必须执行完全相同的操作服务器中指定的东西。 Puppet 不能单独提供帮助,但我可以将其他一些工具与 Puppet 结合起来为我完成这项工作。
您的解决方案几乎肯定会在某种程度上涉及 ssh
。
您可能需要一些东西来帮助管理命令在多台服务器上的执行; ansible 是这样的一个很好的选择。
例如,如果我想在一堆服务器上安装 libvirt
并确保 libvirtd
是 运行ning,我可能会将这样的配置传递给 ansible-playbook
:
- hosts: all
tasks:
- yum:
name: libvirt
state: installed
- service:
name: libvirtd
state: running
enabled: true
这将通过 ssh 连接到我的 "inventory" 中的所有服务器(一个文件——或命令——为 ansible 提供服务器列表),安装 libvirt
包,启动 libvirtd
,然后设置服务开机自动启动。
或者,如果我想在一堆服务器上 运行 puppet apply
,我可以只使用 ansible
命令来 运行 和 ad-hoc不需要配置文件的命令:
ansible all -m command -a 'puppet apply'
看来您不用输入密码也能登录到其他服务器。我假设这是基于 SSH 密钥,如下所述:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-ssh-configuration-keypairs.html
您说另一个脚本正在生成服务器列表。您现在可以使用以下简单脚本来遍历列表:
for server in `./server-list-script`; do
echo $server:
ssh username@$server mkdir /etc/dir/test123
done >logfile 2>&1
文件"logfile" 将收集输出。我很确定 Puppet 也能做到这一点。
在远程服务器中 运行 命令的最佳方式是什么?我正在考虑使用 SSH,但还有比这更好的方法吗? 我使用了 Red Hat Linux,我想 运行 其中一台服务器中的命令,指定我想要的其他服务器有我的命令 运行,并且它必须执行完全相同的操作服务器中指定的东西。 Puppet 不能单独提供帮助,但我可以将其他一些工具与 Puppet 结合起来为我完成这项工作。
您的解决方案几乎肯定会在某种程度上涉及 ssh
。
您可能需要一些东西来帮助管理命令在多台服务器上的执行; ansible 是这样的一个很好的选择。
例如,如果我想在一堆服务器上安装 libvirt
并确保 libvirtd
是 运行ning,我可能会将这样的配置传递给 ansible-playbook
:
- hosts: all
tasks:
- yum:
name: libvirt
state: installed
- service:
name: libvirtd
state: running
enabled: true
这将通过 ssh 连接到我的 "inventory" 中的所有服务器(一个文件——或命令——为 ansible 提供服务器列表),安装 libvirt
包,启动 libvirtd
,然后设置服务开机自动启动。
或者,如果我想在一堆服务器上 运行 puppet apply
,我可以只使用 ansible
命令来 运行 和 ad-hoc不需要配置文件的命令:
ansible all -m command -a 'puppet apply'
看来您不用输入密码也能登录到其他服务器。我假设这是基于 SSH 密钥,如下所述:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-ssh-configuration-keypairs.html
您说另一个脚本正在生成服务器列表。您现在可以使用以下简单脚本来遍历列表:
for server in `./server-list-script`; do
echo $server:
ssh username@$server mkdir /etc/dir/test123
done >logfile 2>&1
文件"logfile" 将收集输出。我很确定 Puppet 也能做到这一点。