0

У меня есть поваренная книга повара от GitHub. Он устанавливает стандартную версию SQL Server 2012 Standard Edition. Наш DBA обновил наш код базы данных, чтобы использовать функции, которые можно найти только на SQL Server 2012 Enterprise Edition. Поскольку эта кулинарная книга используется для создания тестовых сред, мы должны теперь изменить эту кулинарную книгу для развертывания SQL Server 2012 Enterprise.Как обновить поваренную книгу Chef SQL Server для использования 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 (к которому у нас есть доступ) Я не вижу, что Enterprise Edition можно загрузить как .EXE, на как .ISO.

Как я могу изменить эту кулинарную книгу для развертывания из ISO вместо EXE, предполагая, что у меня есть полный доступ к ISO?

ответ

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-ридер для извлечения файла Exe/msi, например Daemontool .... – Tensibai

1

Перепишите вторую половину server.rb

Загрузить ISO из репо

remote_file 'C:\LocalPath' do 
    source 
end 

Смонтировать ISO (вы также можете использовать Chef встроенный в гору ресурс)

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 

После того, как вы знаете, диск ИСО монтирует на, то вы сможете найти локальный путь к файлу установки .EXE.

Установка с помощью windows_package или powershell_script блока

+0

OMG, загружает весь ISO? почему бы не извлечь .exe, который находится внутри ISO из рецепта шеф-повара? – Tensibai

+0

Извлечение стороннего программного обеспечения, которое может быть связано с проблемой соответствия. Вы можете добавить это к вашему ответу. Отличная работа, Тенсибай. –

+0

Или используя тот же метод, который вы описали там ... Это вопрос чтения файла ISO, чтобы получить необходимый.exe, я не вижу интереса к передаче ISO, который 80% контента бесполезен. (Уже говорил об этом в комментариях кстати) – Tensibai

Смежные вопросы