Vps

自動化伺服器部署

  • December 5, 2013

我發現我經常為我的許多客戶設置幾乎相同的伺服器和 VPS,這可能非常耗時。通常,每次部署之間唯一變化的是要服務的不同網站。有沒有一種簡單的方法可以自動完成所有這些工作,並擺脫設置 56 台相同伺服器的無聊單調?

到目前為止我部署的伺服器只有 Ubuntu,但我可能會開始使用其他 linux 作業系統甚至 Windows。到目前為止,我已經看過 Capistrano,但它似乎專注於編寫小的 ruby​​ 程序來完成這項工作,而我根本沒有任何知識

Puppet聽起來非常適合您嘗試做的事情,但需要注意的是,目前尚不支持 Windows。

在您的情況下,您將根據所有機器上相同的包來定義一個伺服器節點。然後,您將各個主機定義為從 Server 繼承的節點,並為其設置特定的獨特事物。

Puppet 是聲明性的——它允許你根據每個盒子應該擁有的資源來描述你的盒子。因此,如果您願意ssh- 您為該資源編寫一個類 - 在該類中您可以包含有關如何在 FreeBSD 和 Ubuntu 上呼叫 ssh 略有不同的邏輯。它還知道yum在 Redhat 和apt-get基於 Debian 的發行版以及portsBSD 中使用。現在,在您的伺服器節點中,您將有一行類似include ssh- 並且 puppet 會做正確的事情並將 SSH 放在機器上,而您不必記住那是 Ubuntu、Redhat 還是 FreeBSD。

好的是所有伺服器的東西都放在一個地方——如果你在任何時候添加到伺服器節點定義,所有機器都會相應地更新它們的配置。

現在,我只使用 Puppet 管理三個盒子 - 但它已經得到了回報。在花了一周時間設置了一個我們將在實驗中用於刺激展示的盒子後,結果發現顯卡驅動程序在我安裝的 Ubuntu 版本(8.04)中太舊了。我必須安裝最新的 Ubuntu (9.04),但之後我只需要 apt-get 並執行 puppet - 我花了一周時間設置的所有東西都恢復了。

Puppet 確實有一點學習曲線,但我成功地避免了學習 Ruby——我知道我正在使用它,因為那是 puppet 的編寫方式——但到目前為止,我已經成功地修改了中的範例wiki 上的文件和食譜。另一個缺點是 puppet 第一次做事確實需要更長的時間。好處是您在所有機器上更改的所有內容都儲存在一個地方 - 將 puppet 配置保存在版本控制系統中是標準做法 - 因此您可以隨時回顧並查看過去是如何設置伺服器的- 或回滾一些不成功的更改。

最後,這是一個快速影片,它做了一個簡單的木偶展示,讓我快速入門。

引用自:https://serverfault.com/questions/465