Distribuição em massa de pacotes para vários servidores Linux em diferentes continentes

1

Eu sou novo aqui e quero levantar uma questão interessante sobre a configuração remota em massa de servidores Linux.

Imagine que você tenha uma lista de endereços IP para 100 servidores com uma nova instalação do Ubuntu, publicamente acessível pela Internet, uma chave ssh já em authorized_keys e uma senha sudo para cada servidor. Descreva como você provisionaria esses servidores e instalaria o OpenVPN.

O Puppet não foi instalado nesses novos servidores, apenas tem o SSHD ativado.

    
por Nonstop 27.03.2016 / 15:23

1 resposta

1

A abordagem mais simples é ter uma lista com o nome do servidor / IP e a sudo password:

server1 pass1
server2 pass2
server3 pass3
...
server100 pass100

Em seguida, você pode iterar sobre esse arquivo, lendo o servidor e a senha em variáveis e usando ssh para executar o comando remoto no servidor:

while read server pass; do 
    ssh  "$server" sudo -S apt-get install network-manager-openvpn <<<"$pass"
done < file

A opção -S de sudo permite que você passe a senha da entrada padrão:

 -S, --stdin
             Write the prompt to the standard error and read the password
             from the standard input instead of using the terminal device.
             The password must be followed by a newline character.

O truque <<< é um truque bash (e alguns outros shells) chamado string aqui .

    
por 27.03.2016 / 16:10