EC2 上配置管理的常用策略是什麼?
在不使用第三方雲配置服務的情況下,關於 EC2 配置管理主題的常見模式/策略或白皮書有哪些?特別是關於如何在啟動時配置和提供新實例,程式碼部署策略等……
我已經將我們從數十篇博文中引導 EC2 的方法捆綁在一起。仍在進行中,但我們使用cloud-init將實例連接到我們的Puppet master,使用 Puppet 將所有包配置為該實例將扮演的角色,並使用 Webistrano(Capistrano 的 GUI)將我們的程式碼部署到伺服器。
如果您建構自己的機器映像,您幾乎可以建構任何您想要的系統,但我們希望使用公開可用的官方 Ubuntu 映像,這些映像沒有安裝配置管理軟體。
因此,我們使用 cloud-init 來引導一個實例。Cloud-init 是Ubuntu和 Amazon Linux AMI 上的一個包。它允許通過 EC2 的“使用者數據”元數據選項在創建實例時將各種數據傳遞給實例。通過 user-data 傳入的數據在實例啟動時由 cloud-init 執行,可以採用多種形式,例如 shell 腳本、cloud-config yaml 等。
這篇文章展示了一個使用 cloud-init 的範例,類似於我們這樣做的方式:http: //www.atlanticdynamic.com/you-should-be-using-cloud-init/
這是我們的版本:
#cloud-config apt_update: true apt_upgrade: true packages: - puppet puppet: conf: agent: server: "puppet.example.com" certname: "%i.web.cluster1.eu-west-1.ec2"
一旦實例啟動,它將安裝 Puppet 並將其連接到我們的 Puppet master。一旦您允許它連接到主伺服器(簽署其證書),實例將自動開始配置自己。master 將在 nodes.pp 文件中使用正則表達式來匹配實例的證書名稱,從而為其分配一個角色。然後,master 可以將目錄發送給 puppet 代理,後者使用它來配置自己。
啟動幾分鐘後,實例就可以使用了。如果我們需要將任何程式碼部署到節點,我們不會使用 Puppet,而是使用 Webistrano。目前我們手動將節點添加到 Webistrano 的配置中,但我們打算使用 MCollective 根據節點元數據自動完成。