4 ferramentas para executar comandos em vários servidores Linux simultaneamente

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 servidores

2. 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 pdsh

Se, 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 Clusterssh

Os 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 ansible

Sumá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?

Source: https://habr.com/ru/post/pt426849/


All Articles