我會說你選擇的Vagrant已經是你尋找的好開始,但是現在你需要深入研究一下Chef或Puppet,以便進一步自動化你的配置過程。
我想你的場景中的一個好選擇是首先將Vagrantfile和相應的Puppet清單放在版本控制下作爲項目的一部分。另外,關於這臺機器的所有配置也應該放入版本控制和/或通過某種工件存儲庫提供。
其次,如果團隊成員認爲已經準備好了,那麼在環境中建立規則(至少應該長期居住的環境)需要檢查。
關於你的第二個問題,回到我的開頭:Puppet(我喜歡)或Chef是你的首選工具,可以爲你和你的同事在將來節省很多工作。我會在這裏堅持木偶,因爲我不知道廚師太好。
使用puppet,您可以管理所需的所有內容,安裝軟件包,更改配置並確保某些服務正在運行,或者通常系統具有您希望的狀態。更妙的是,如果您或其他團隊成員提出了一些惡意chages他/她的箱子,你可以回滾在Vagrantfile /木偶表現,類型的變化
vagrant destroy && vagrant up
和盒子很容易被帶回最新的版本狀態。
例如,採取以下清單文件:
package { "mysql-server-5.1":
ensure => present
}
file { "/etc/mysql/my.cnf":
owner => "root",
content => "http://myrepository.local/myProject/configurations/mysql/my.cnf",
require => Package["mysql-server-5.1"]
}
service { "mysql":
ensure => running,
subscribe => File["/etc/mysql/my.cnf"],
require => File["/etc/mysql/my.cnf"]
}
這樣做是什麼,它首先檢查的操作系統在你的盒子包裝機構(例如姓名假設最近的Ubuntu)如果包「mysql-server-5。1「,如果沒有安裝它,通過'require'屬性,第二個指令將在第一個指令之後執行(並且只有在它工作的時候),才能將MySQL配置更改爲您也檢查過的配置和/或發佈到你可以到達的地方(這也可以放在與流浪文件相同的文件夾中,然後在/ vagrant下面的框中)。最後一步,只有在改變配置工作,將確保「MySQL的」服務啓動並運行,或者得到重新啓動,如果它時,已更改配置已經正在運行
現在,您可以連接這體現在您的Vagrantfile:
Vagrant::Config.run do |config|
config.vm.box = "lucid32"
config.vm.box_url = "http://files.vagrantup.com/lucid32.box"
config.vm.define "node1" do |cfg|
cfg.vm.network "10.23.5.11"
cfg.vm.provision :puppet do |puppet|
puppet.manifests_path = "manifests"
puppet.manifest_file = "node1.pp"
end
end
end
除了像這樣對環境做出「嘗試性的東西」之外的所有變化,所有團隊成員都保證只需輕點指尖即可輕鬆完成相同的設置和再現。
我個人喜歡用手工在盒子上試用東西,當我找到正確的設置和配置時,將它翻譯成Puppet清單,以備日後使用和與團隊成員共享。由於Puppet(和廚師也)可以管理幾乎所有你需要的東西(用戶,cron作業,包,服務,文件,...),這對於確切的問題是一個很好的選擇,你甚至可以如果您願意,可以稍後使用這些配置來設置登臺或測試環境。他們有更多的選擇與木偶,並通過the language guide讀應該給你一個好主意,你可以用它做更多。
希望我可以幫助:)
感謝您的幫助。 – Donovan 2012-01-21 00:56:00
+1不錯的完整答案 – steveax 2012-05-23 23:16:22
這是一個**偉大的答案**! – Robert 2014-01-20 21:52:36