如何在多台機器上部署程式

如何在多台機器上部署程式

我需要在大約 40 台 Kubuntu 13.04 機器上安裝一些程序,並且想知道我必須採取哪些選項才能盡可能有效地完成安裝。

編輯:我已經設定了儲存庫,機器都是相同的克隆,沒有 LDAP 驗證或集中式伺服器。

答案1

任何配置管理軟體都可以,這就是它們的用途,我建議看看廚師。這是他們網頁上的簡介:

Chef 是一個將基礎設施轉換為程式碼的自動化平台。停止考慮實體和虛擬伺服器。對於 Chef,您真正的資產是使這些伺服器及其提供的服務栩栩如生的程式碼。自動化基礎架構可以加快您的上市時間,幫助您管理規模和複雜性,並保護您的系統。

無論您的網路是在雲端、現場還是混合網路中,Chef 都可以自動化您配置、部署和擴展伺服器和應用程式的方式,無論您管理 5 台伺服器、5,000 台伺服器還是 500,000 台伺服器。難怪 Facebook 和 Amazon 等公司選擇 Chef 來應對關鍵任務挑戰。

這個影片會有很大幫助: http://www.youtube.com/watch?v=0UXh5EnFZrM

首頁: http://www.opscode.com/chef/

答案2

只是為了擴展拉胡爾的非常好的答案,您可以使用這種方法輕鬆地設定對每台電腦的無密碼存取:

  1. 安裝sshpass在您的本機電腦上:

    sudo apt-get install sshpass
    

    這將允許您將密碼作為命令列參數傳遞:

     sshpass -p '<password>' ssh user@server
    
  2. 建立 ssh 金鑰

    ssh-keygen -t rsa
    

    您可以透過允許空密碼來簡化事情(本答案的其餘部分將假設您已經這樣做了,如果您的安全考慮禁止這樣做,請告訴我,我將進行相應修改)。

  3. 建立一個文件,其中包含您感興趣的所有 IP 及其各自的使用者名稱和密碼,每行一個:

    1.2.3.4 bob bobs_password
    11.22.33.44 hary harrys_password 
    

    現在,使用sshpass複製您的金鑰文件,並且——只要您使用空密碼——允許對所有電腦進行無密碼存取:

    while read ip user pass; do 
      sshpass -p "$pass" ssh ssh-copy-id -i ~/.ssh/id_rsa.pub $user@$ip;
    done < ips.txt
    
  4. 現在您已經設定了無密碼訪問,請在每台電腦上安裝您的軟體(假設可以$user運行apt-get,基本上就是$userroot

     while read ip user pass; do 
       ssh $user@$ip "apt-get install package; 
     done < ips.txt
    

答案3

為了長期目標

如果您想要自動化工具來集中管理網路上運行的各種 *nix 風格並管理配置的各個方面,那麼您可以查看:

  1. 木偶
  2. 廚師
  3. cfengine3

為了短期目標

apt-get如果您想要臨時解決方案只是透過或安裝某些軟體包yum,那麼您可以使用 shell 或 perl、python 腳本。

如果您已經設定了無密碼身份驗證,那麼您可以只使用以下腳本:

#!/usr/bin/env bash

Servers_list=/opt/servers_list
PackageName="package-name"

for Host in $(< $Servers_list )
do
    echo "Installing package on $Host"
    ssh "${Host}"  apt-get -y install "${PackageName}"

done

如果您沒有無密碼身份驗證,那麼您可以使用python 中的expect工具或模組。paramiko

相關內容