使用 Azure Automation DSC 时,如果存在非 SSD 驱动器,是否可以将产品安装在非 SSD 驱动器上?

使用 Azure Automation DSC 时,如果存在非 SSD 驱动器,是否可以将产品安装在非 SSD 驱动器上?

假设我有一个产品,我想将其安装在非 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 代码,因为该代码在编译期间运行。我需要它在配置期间运行。

我该怎么做?

答案1

使用 Azure Automation DSC Pull 服务器实际上无法做到这一点。正如您所提到的,DSC 文件的编译发生在自动化服务器上​​,并且它没有要应用到的服务器的详细信息,因此无法将其考虑在内。在编译时,您将提供一个驱动器以进行安装,这就是将要使用的驱动器。这就是 DSC Pull 服务器与 Chef 或 Puppet 等相比的不足之处,这些工具确实有关于客户端计算机的信息,并且可以在编译时使用这些信息。

除了使用一致的驱动器号并在构建 Azure VM 时确保此驱动器按照您想要的方式配置(是否为 SSD)之外,使用自动化服务器实际上没有其他解决方法。

另一种选择是,您可以使用 Azure VM DSC 扩展将 DSC 文件推送到 VM 并应用,而不是使用自动化服务器。如果这样做,您将失去 DSC 集中管理和报告的所有好处,但您的 DSC 文件是在将要运行的服务器上编译的,因此可以考虑本地变量。请参阅这里有关 DSC 扩展的更多详细信息。

相关内容