将软件包大规模部署到不同大陆的多个 Linux 服务器

将软件包大规模部署到不同大陆的多个 Linux 服务器

我是新来的,想提出一个关于 Linux 服务器大规模远程配置的有趣问题。

想象一下,您获得了 100 台服务器的 IP 地址列表,这些服务器全新安装了 Ubuntu,可通过 Internet 公开访问,authorized_keys 中已有 ssh 密钥,以及每台服务器的 sudo 密码。描述如何配置这些服务器并安装 OpenVPN。

这些新服务器上没有安装 Puppet,只是启用了 SSHD。

答案1

最简单的方法是获得一个包含服务器名称/IP 和sudo密码的列表:

server1 pass1
server2 pass2
server3 pass3
...
server100 pass100

然后,您可以迭代该文件,将服务器和密码读入变量并使用ssh在服务器上运行远程命令:

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

选项-S允许sudo您从标准输入传递密码:

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

<<<是一个 bash(以及其他一些 shell)技巧,称为这里的字符串

相关内容