簡體   English   中英

共享和自動流浪盒

[英]Shared and automated vagrant box

我正在考慮使用Vagrant開發Django應用程序,但我有點困惑,我不確定我想做什么甚至是可能的。

我成功安裝了lucid32盒子並創建了一個新的“實例”,包括Vagrantfile,一些共享目錄和轉發端口。

  • 第一個問題是,在團隊中工作時,這似乎不是我的最佳選擇。 我們如何(例如我和其他10位開發人員)共享這個盒子,以便共享它的每個變化? 例如,如果在6個月內我們需要postgresql,我需要讓它工作而不必安裝postgresql 11次。

  • 另外,如何在盒子啟動時啟動(例如:postgresql,django,this-service等)? 我不認為我有ssh登錄並手動啟動n次所有n事情,我需要每次。

  • 最后:如果木偶和廚師之類的東西完全取代手動安裝(例如通過pip或apt-get),我不太清楚。 是這樣嗎?

謝謝。
我很抱歉英語不好。 :-)

我想說你選擇的Vagrant已經是你正在尋找的一個良好的開端,但現在你需要深入挖掘Chef或Puppet,以進一步自動化你的配置過程。

我想你的場景中的一個很好的選擇是首先將Vagrantfile和相應的Puppet清單作為項目的一部分置於版本控制之下。 此外,有關此計算機的所有配置也應放入版本控制和/或通過某種工件存儲庫提供。

其次,如果對其他團隊成員做好准備,則需要在需要檢查的團隊中建立更改(至少應該存活更長時間)的團隊規則。

關於你的第二個問題並回到我的開場白:Puppet(我喜歡)或廚師是你的首選工具,將來可以為你和你的同事節省很多工作。 我會堅持Puppet,因為我不知道廚師太好了。

使用puppet,您可以管理所需的所有內容,安裝軟件包,更改配置以及確保某些服務正在運行,或者通常系統具有您希望的狀態。 更好的是,如果你或其他團隊成員對他/她的盒子做了一些惡意攻擊,你可以回滾你的Vagrantfile / Puppet清單中的更改,輸入

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配置更改為您已簽入和/或發布到可以到達的地方(也可能是放入與Vagrantfile相同的文件夾中,然后在/ 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(和Chef也可以)管理幾乎所有你需要的東西(用戶,cron作業,包,服務,文件......),對於這些問題來說它是一個很好的選擇,你甚至可以使用它如果您願意,稍后可以配置暫存或測試環境的配置。 他們對Puppet有更多的選擇,通過語言指南閱讀應該會讓你知道你還能做些什么。

希望我能幫忙:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM