2015-10-02 26 views
0

我有一個從GitHub廚師烹飪書。它安裝SQL Server 2012標準版。我們的DBA升級了我們的數據庫代碼,以利用只能在SQL Server 2012企業版上找到的功能。由於該食譜用於生成我們的測試環境,因此我們現在必須修改此Cookbook以部署SQL Server 2012 Enterprise。如何升級Chef SQL Server Cookbook以使用Enterprise Edition?

望着helper.rb文件中的食譜,

require 'chef/mixin/shell_out' 

module SqlServer 
    class Helper 
    extend Chef::Mixin::ShellOut 

    def self.firewall_rule_enabled?(rule_name=nil) 
     cmd = shell_out("netsh advfirewall firewall show rule \"#{rule_name}\"") 
     cmd.stderr.empty? && (cmd.stdout =~ /Enabled:\s*Yes/i) 
    end 

    def self.sql_server_url(version, x86_64) 
     if x86_64 
     case version 
     when '2008R2' 
      'http://download.microsoft.com/download/D/1/8/D1869DEC-2638-4854-81B7-0F37455F35EA/SQLEXPR_x64_ENU.exe' 
     when '2012' 
      'http://download.microsoft.com/download/8/D/D/8DD7BDBA-CEF7-4D8E-8C16-D9F69527F909/ENU/x64/SQLEXPR_x64_ENU.exe' 
     end 
     else 
     case version 
     when '2008R2' 
      'http://download.microsoft.com/download/D/1/8/D1869DEC-2638-4854-81B7-0F37455F35EA/SQLEXPR32_x86_ENU.exe' 
     when '2012' 
      'http://download.microsoft.com/download/8/D/D/8DD7BDBA-CEF7-4D8E-8C16-D9F69527F909/ENU/x86/SQLEXPR_x86_ENU.exe' 
     end 
     end 
    end 

它似乎得到當我看就從

http://download.microsoft.com/download/8/D/D/8DD7BDBA-CEF7-4D8E-8C16-D9F69527F909/ENU/x64/SQLEXPR_x64_ENU.exe

安裝介質MSDN(我們有權訪問)我沒有看到企業版可以作爲.EXE下載作爲.ISO。

假設我可以完全訪問ISO,我該如何改變這個Cookbook從ISO部署而不是EXE?

回答

0

引用屬性從link

# Set these to specify the URL, checksum, and package name. Otherwise, the cookbook will 
# use default values based on the value of node['sql_server']['version'] and the 
# server architecture (x86 or x64). 

default['sql_server']['server']['url'] = nil 
default['sql_server']['server']['checksum'] = nil 
default['sql_server']['server']['package_name'] = nil 

文件,這樣你只需要設置一個包裝食譜到本地包裝這些值(例如內部HTTP服務器上)這個食譜安裝企業版本。

+0

但我已經是ISO ...我覺得菜譜期待一個EXE。我如何做出改變? – GWLlosa

+0

只需使用任何Iso讀取器來提取Exemon/msi文件,如Daemontool .... – Tensibai

1

重新寫的server.rb

下半年從回購

remote_file 'C:\LocalPath' do 
    source 
end 

安裝了ISO(你也可以用廚師內置安裝資源)

下載ISO
powershell_script 'mount_it' do 
    code <<-EOH 
    Mount-DiskImage -ImagePath "C:\PATH\TO\ISO\FILE" 
    EOH 
end 

使用MixLib::ShellOut並獲取驅動器名稱(如果您沒有使用驅動器號進行硬編碼安裝),請將該部分#####替換爲卷名稱。

output = Mixlib::ShellOut.new('(gwmi -Class Win32_LogicalDisk | Where-Object {$_.VolumeName -eq "#####"}).DeviceID') 
drive_name = output.run_command.stdout 

一旦你知道了ISO安裝在傳動,那麼你就可以找到安裝.EXE文件的本地路徑。

安裝使用windows_packagepowershell_script

+0

OMG,donwloading整個ISO?爲什麼不提取ISO以外的主廚食譜中的.exe文件? – Tensibai

+0

提取可能涉及合規性問題的第三方軟件。歡迎您將其添加到您發佈的答案中。很棒的工作,Tensibai。 –

+0

或使用您在那裏描述的相同方法...這是讀取ISO文件以獲取所需內容的問題。exe文件,我沒有看到轉移ISO的80%的內容是沒有用的興趣。 (在評論中已經討論了這個問題) – Tensibai

相關問題