2013-10-21 76 views
0

我的一般目標是我的團隊成員通常會將git repo克隆到cd中,然後鍵入vagrant up。特別是,我不希望他們必須安裝除vagrant和VM runner(即VirtualBox)之外的任何東西。執行腳本爲流浪者設置安全(或另一個提供者)?

爲了理所當然,我把它包含在一個子樹中。這很容易運行,例如,source ansible/hacking/env-setup。但是,我希望這是儘可能的防彈和標準化。

有沒有辦法讓vagrant up運行類似上面的腳本來啓用供應者(在主機上)?或者我是否需要將其封裝在shell腳本中?如果你想通過shell腳本獲得vagrant up的理由,Vagrant會自動遍歷源代碼樹以找到適當的Vagrantfile - 因此我的目標開發人員/設計人員不需要考慮Vagrantfile的位置。 ]

回答

0

至少在我的評論中提到,至少可以通過在Vagrant.configure塊中執行shell環境配置來解決此問題。對於ansible,目前是以下工作(假設你在一個目錄把ansible旁邊的Vagrantfile稱爲ansible):

curr_dir = Dir.pwd 
ENV['PYTHONPATH'] = "#{curr_dir}/ansible/lib:#{ENV['PYTHONPATH']}" 
ENV['PATH'] = "#{curr_dir}/ansible/bin:#{ENV['PATH']}" 
ENV['ANSIBLE_LIBRARY'] = "#{curr_dir}/ansible/library" 

注意,ansible/hacking/env-setup腳本還設置了MANPATH。這顯然是有限的效用!

1

你可以做這樣的事情,我還沒有完全測試這個,因爲我不使用ansible ......但你應該明白我的意思:

Vagrant.configure("2") do |config| 
    ansible_installed = `ansible-playbook --version` rescue nil 
    if !ansible_installed 
     `export DEBIAN_FRONTEND=noninteractive; sudo apt-get -y install ansible` 
    end 
end 

它可能會要求他們密碼以及...但這不應該是一次性的問題。

+0

我會給你一個投票 - 因爲我一直沒有想到我應該檢查它是否已安裝...我也會在OS X上(也許是Windows)的人,一般來說,我想避免在虛擬機之外安裝內容。我想我可以通過在ruby腳本中設置shell變量來處理這個問題,但我需要確保它們保留在子shell中。 –

相關問題