Предположим, у меня есть продукт, который я хочу установить на диск без SSD, если он существует. В противном случае я хочу, чтобы он пошел на диск C.
Например, следующая конфигурация предполагает установку Sql Server 2016 в расположение по умолчанию:
Configuration DevWorkstation
{
Import-DscResource –ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName SqlServerDsc
node localhost
{
WindowsFeature 'NetFramework45'
{
Name = 'NET-Framework-45-Core'
Ensure = 'Present'
}
SqlSetup 'InstallDefaultInstance'
{
InstanceName = 'MSSQLSERVER'
Features = 'SQLENGINE,SSMS'
SQLCollation = 'SQL_Latin1_General_CP1_CI_AS'
SourcePath = '\\fileserver\installs\en_sql_server_2016_developer_with_service_pack_1_x64_dvd_9548071'
SQLSysAdminAccounts = @('Administrators')
DependsOn = '[WindowsFeature]NetFramework45'
}
}
}
Однако я хотел бы сначала проверить, есть ли диск без SSD, и, если он есть, установить его там.
Насколько я понимаю, я не могу использовать код Powershell, потому что этот код выполняется во время компиляции. Мне нужно, чтобы он запускался во время настройки.
Как мне это сделать?
Используя опрашивающий сервер DSC службы автоматизации Azure, вы действительно не можете этого сделать. Как вы упомянули, компиляция файла DSC происходит на сервере автоматизации, и в нем нет сведений о сервере, к которому он будет применяться, поэтому он не может это учитывать. Во время компиляции вы предоставите диск для установка должна происходить, и это то, что будет использоваться. Здесь серверы DSC Pull терпят неудачу по сравнению с чем-то вроде Chef или Puppet, где эти инструменты имеют информацию на клиентских машинах и могут использовать ее во время компиляции.
На самом деле нет никакого способа обойти это с помощью сервера автоматизации, кроме использования согласованной буквы диска, а затем, когда вы создаете свою виртуальную машину Azure, убедитесь, что этот диск настроен так, как вы хотите (SSD или нет).
Другой вариант - вместо использования сервера автоматизации вы можете использовать расширение DSC виртуальной машины Azure, чтобы отправить файлы DSC на виртуальную машину и применить. Если вы сделаете это, вы потеряете все преимущества централизованного управления и отчетности для DSC, но ваш файл DSC скомпилирован на сервере, на котором он будет работать, поэтому вы можете учитывать локальные переменные. Видеть Вот для получения дополнительных сведений о расширении DSC.