在远程服务器中运行命令的最佳方法是什么?我在考虑使用SSH,但是有更好的方法吗? 我使用Red Hat Linux,我想在其中一个服务器上运行该命令,指定我想让命令运行的其他服务器,并且它必须在指定的服务器中执行完全相同的操作。 Puppet无法提供帮助,但我可以将其他工具与Puppet结合起来为我做这份工作。
答案 0 :(得分:1)
您的解决方案几乎肯定会以某种身份参与ssh
。
您可能需要一些东西来帮助管理多个服务器上的命令执行;对于类似的事情,ansible是一个很好的选择。
例如,如果我想在一堆服务器上安装libvirt
并确保libvirtd
正在运行,我可能会将此类配置传递给ansible-playbook
:
- hosts: all
tasks:
- yum:
name: libvirt
state: installed
- service:
name: libvirtd
state: running
enabled: true
这将ssh到我的“库存”中的所有服务器(一个文件 - 或命令 - 提供带有服务器列表的ansible),安装libvirt
包,启动libvirtd
,然后安排服务在启动时自动启动。
或者,如果我想在一堆服务器上运行puppet apply
,我可以使用ansible
命令运行ad-hoc命令而无需配置文件:
ansible all -m command -a 'puppet apply'
答案 1 :(得分:1)
您似乎无需输入密码即可登录其他服务器。我假设这是基于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也能做到这一点。