O artigo, cuja tradução estamos publicando hoje, é dedicado às tecnologias de execução simultânea de comandos em vários servidores Linux. Aqui falaremos sobre várias ferramentas conhecidas que implementam essa funcionalidade. Esse material é útil para administradores de sistema que, por exemplo, precisam verificar regularmente o status de muitos sistemas remotos. Supõe-se que o leitor já tenha vários servidores nos quais o acesso SSH está organizado. Além disso, ao trabalhar com várias máquinas simultaneamente, é muito útil configurar o acesso SSH a elas
por chave, sem uma senha . Essa abordagem, por um lado, melhora a segurança do servidor e, por outro lado, facilita o trabalho.

1. PSSH - SSH paralelo
O PSSH é um kit de ferramentas de linha de comando de código aberto escrito em Python e projetado para executar comandos SSH em paralelo em muitos sistemas Linux. Funciona rapidamente e é fácil de aprender. O PSSH inclui ferramentas como
parallel-ssh
paralelo, scp parallel-rsync
parallel-slurp
parallel-nuke
(para obter detalhes sobre essas ferramentas, consulte man).
Antes de instalar o
parallel-ssh
em um sistema Linux, você deve primeiro instalar o
pip
. Aqui está como isso é feito em diferentes distribuições:
$ sudo apt install python-pip python-setuptools #Debian/Ubuntu # yum install python-pip python-setuptools #RHEL/CentOS # dnf install python-pip python-setuptools #Fedora 22+
Em seguida, o
parallel-ssh
instalado usando o
pip
:
$ sudo pip install parallel-ssh
Em seguida, é necessário inserir os nomes de host ou endereços IP dos servidores Linux remotos e as informações da porta no
hosts
(na verdade, você pode nomear qualquer que seja). Aqui precisamos deste comando:
$ vim hosts
Aqui está um exemplo do conteúdo desse arquivo:
192.168.0.10:22 192.168.0.11:22 192.168.0.12:22
Depois que todo o necessário for inserido no arquivo, é hora de executar o
parallel-ssh
, passando para este utilitário o nome do arquivo usando a opção
-h
, bem como os comandos que precisam ser executados em todos os servidores cujos endereços estão no
hosts
. O sinalizador
-i
do utilitário é usado para exibir o que entra nos fluxos de saída e erro padrão após a conclusão dos comandos nos servidores.
O comando de inicialização
parallel-ssh
pode se parecer com o seguinte:
$ parallel-ssh -h hosts "uptime; df -h"
A figura a seguir mostra o uso do utilitário ao trabalhar com três servidores.
O utilitário paralelo-ssh executa comandos em vários servidores2. Pdsh - Utilitário Shell Paralelo Remoto
O Pdsh é, novamente, uma solução de código aberto, que é um shell para executar comandos em vários servidores Linux ao mesmo tempo.
Veja como instalar o
pdsh
em várias distribuições:
$ sudo apt install pdsh #Debian/Ubuntu # yum install pdsh #RHEL/CentOS # dnf install pdsh #Fedora 22+
Para executar comandos em vários servidores, os endereços desses servidores, como em
parallel-ssh
, devem ser adicionados ao arquivo, que também pode ser chamado de
hosts
. Então você precisa executar o
pdsh
no seguinte formato:
$ pdsh -w ^hosts -R ssh "uptime; df -h"
Aqui, o sinalizador
-w
é usado para indicar o arquivo com a lista de servidores, o sinalizador
-R
é usado para indicar o módulo de comando remoto (entre os módulos de comando remoto disponíveis estão
ssh
,
rsh
,
exec
;
rsh
usado por padrão). Observe o ícone
^
na frente do nome do arquivo da lista de servidores.
Aqui está a aparência do trabalho com essa equipe.
Executando comandos em vários servidores usando o pdshSe, quando você chamou
pdsh
, não especificou uma lista de comandos que precisam ser executados nos servidores, esse utilitário será iniciado no modo interativo. Detalhes sobre o
pdsh
podem ser encontrados na página de manual correspondente.
3. ClusterSSH
O ClusterSSH é uma ferramenta de linha de comando para administrar clusters de servidores. Ele inicia o console de administração e, para cada servidor, uma janela
xterm
separada. Depois disso, todos esses servidores podem executar os mesmos comandos ao mesmo tempo.
Instale o
clusterssh
:
$ sudo apt install clusterssh #Debian/Ubuntu # yum install clusterssh #RHEL/CentOS $ sudo dnf install clusterssh #Fedora 22+
Agora, para se conectar aos servidores, você precisa executar um comando do seguinte formulário:
$ clusterssh linode cserver contabo
Você pode usar este design:
$ clusterssh username@server1 username@server2 username@server3
Depois disso, você verá algo semelhante ao mostrado na figura a seguir.
Trabalhando com Vários Servidores Usando ClustersshOs comandos inseridos no console do administrador são executados em todos os servidores. Para executar comandos em um servidor separado, é necessário digitá-los em uma janela aberta para ele.
4. Ansible
O Ansible é uma ferramenta popular de código aberto para automatizar processos de TI. É usado para configurar e gerenciar sistemas, instalar aplicativos e resolver outros problemas.
Instale o
ansible
:
$ sudo apt install ansible #Debian/Ubuntu # yum install ansible #RHEL/CentOS $ sudo dnf install ansible #Fedora 22+
Depois disso, adicione os endereços dos servidores ao arquivo
/etc/ansible/hosts
.
$ sudo vim /etc/ansible/hosts
Aqui está um exemplo de um fragmento de um arquivo semelhante com vários sistemas unidos no grupo de
webservers
da
webservers
:
# Ex 2: A collection of hosts belonging to the 'webservers' group [webservers] 139.10.100.147 139.20.40.90 192.30.152.186
Agora, para obter as informações do comando
uptime
e descobrir quais usuários estão conectados aos hosts incluídos no grupo de
webservers
da
webservers
, você pode usar a seguinte construção:
$ ansible webservers -a "w " -u admin
Aqui, a opção
-a
é usada para especificar os argumentos transmitidos ao módulo, e o sinalizador
-u
permite especificar o nome de usuário padrão usado para conectar-se a servidores remotos via SSH.
Observe que a
ansible
linha de comando
ansible
permite executar comandos apenas um de cada vez.
Interação com vários servidores usando ferramentas ansibleSumário
Neste artigo, falamos sobre ferramentas projetadas para executar simultaneamente comandos em vários servidores executando o Linux. Se você está pensando em automatizar as tarefas de gerenciamento de vários servidores, esperamos que encontre aqui algo que combina com você.
Caros leitores! Você conhece algum utilitário útil que simplifique a administração de um grande número de servidores?