2015-12-23 34 views
3

我的當前設置:如何覆蓋octopus-deploy的超市廚師食譜的tentacle_install_location路徑?

我創建一個食譜在我公司安裝八達通觸角部署到標準的虛擬機。我創建了一個名爲「octopus-deploy-mk6」的新的本地菜譜。 「mk6」是我們公司的名稱,我使用這個配方來定義我公司特定的安裝要求。我已經爲名爲「octopus-deploy」的超市社區食譜添加了Berksshelf依賴項。這裏是一個鏈接到「章魚部署」:

Octopus-deploy supermarket link

我包括通過berksshelf超市菜譜依賴於廚師回購/ metadata.rb文件聲明:

depends 'octopus-deploy', '~> 0.4.3'

而且我在 chef-repo/cookbooks/octopus-deploy-mk6/recipes/default.rb文件(注意,我發現不需要示例中的校驗和)的配方中將它放在下面的配方中:


    octopus_deploy_tentacle 'Tentacle' do 
     action :install 
     version '3.1.5' 
    end 

當我做「伯克斯安裝」「伯克斯更新」「刀菜譜上傳章魚部署-MK6」命令,它會安裝章魚觸鬚部署非常漂亮。配方實際上超出了我的預期。感謝布倫特蒙塔古(如果您恰好閱讀本文)創建食譜。

請隨時讓我知道如果我沒有做這個設置正確的,我對廚師很新。

這裏的問題:

我們安裝八達通部署觸角企業標準是在安裝它:「C:\ Program Files文件(x86)的\八達通\觸鬚」和超市食譜安裝它在「C:\ Program Files \ Octopus Deploy \ Tentacle」。雖然我個人更喜歡超市食譜選擇的目錄名,但是企業標準是將其放入x86目錄和Octopus子目錄中,並且我無法更改標準。 如何覆蓋默認的觸手安裝位置?

這個問題的簡單解決方案是使用「複製和粘貼重用」,並簡單地將整個社區食譜複製到我的章魚部署-mk6食譜中,然後更改下面提到的一個文件。不過,我寧願不這樣做,以便我可以在未來更新超市版本。

這是我到目前爲止已經調試:

我注意到,超市裏社區菜譜已在章魚部署/庫/ tentacle.rb文件下面的代碼:


    module OctopusDeploy 
    # A container to hold the tentacle values instead of attributes 
    module Tentacle 
    ... 
    def tentacle_install_location 
     'C:\Program Files\Octopus Deploy\Tentacle' 
    end 

我嘗試設置在我的廚師回購/ cookbooks /章魚部署-mk6 /食譜/默認。rb文件在安裝操作之前:


    OctopusDeploy.Tentacle.tentacle_install_location = 'C:\Program Files (x86)\Octopus\Tentacle' 

但它不能解決問題。我也嘗試添加一個屬性到廚師 - repo/cookbooks/octopus-deploy-mk6/attributes/default.rb文件,但它不起作用。根據我的理解,此屬性文件方法僅適用於覆蓋其他食譜設置的屬性(不覆蓋ruby方法/屬性)。

對此的任何幫助表示讚賞。我是Chef的新手,無法在Stackoverflow或Google上找到任何其他帖子來回答這個問題(我可能對Chef和Ruby來說太新了,無法知道要搜索的術語)。

回答

1

所以對於簡短的回答:「你不能」。

爲了更詳細地解釋,我們必須看看該輔助方法是如何被使用的。你可以用猴子補丁來覆蓋那個幫助者,它的語法和你所擁有的不同,但它無濟於事,所以我們繼續前進吧。該方法似乎只在the provider code中使用了兩次,並且兩次都是爲cwd設置了PowerShell代碼的一些片段。該路徑永遠不會傳遞給安裝程序,從我可以告訴的必須是實際創建目錄。安裝本身可能發生在here。要更改實際的安裝目標,您需要將其安裝到該資源的MSI安裝選項中。我不知道Octopus特別部署,但我猜你可以查找所需的msiexec標誌來完成此操作。不幸的是,由於這些代碼是如何編寫的,所以你必須分開食譜來在那裏進行更改。我會建議讓它使用資源屬性,然後將它作爲補丁提交回原始的食譜。

+0

謝謝你coderanger。我會分叉食譜,並提交拉請求。 –