さまざまな大陸の複数のLinuxサーバーにソフトウェアパッケージを大規模に展開

さまざまな大陸の複数のLinuxサーバーにソフトウェアパッケージを大規模に展開

私はここに初めて来て、Linuxサーバーの大規模なリモート構成について興味深い質問をしたいと思いました。

Ubuntuを新しくインストールし、インターネットから公的にアクセスでき、Authorized_keysにSSHキーがあり、各サーバーにsudoパスワードを持つ100個のサーバーのIPアドレスのリストがあると想像してください。これらのサーバーを構成し、OpenVPNをインストールする方法について説明します。

Puppetは新しいサーバーにはインストールされず、SSHDのみが有効になります。

答え1

最も簡単な方法は、sudoサーバー名/ IPとパスワードのリストを取得することです。

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(および他のシェル)トリックです。ここにある文字列

関連情報