Azure

使用 Azure 自動化 DSC 時,如果存在非 SSD 驅動器,是否可以在非 SSD 驅動器上安裝產品?

  • April 25, 2018

假設我有一個產品要安裝在非 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 程式碼,因為該程式碼在編譯期間執行。我需要它在配置期間執行。

我該怎麼做?

使用 Azure 自動化 DSC 拉取伺服器,您無法真正做到這一點。正如您所提到的,DSC 文件的編譯發生在自動化伺服器上,它沒有將要應用到的伺服器的詳細資訊,因此無法將其考慮在內。在編譯時,您將為安裝發生,這就是將要使用的。與 Chef 或 Puppet 之類的工具相比,這就是 DSC Pull 伺服器失敗的地方,這些工具確實在客戶端機器上擁有資訊,並且可以在編譯時使用這些資訊。

使用自動化伺服器並沒有真正的解決方法,除了使用一致的驅動器號,然後在建構 Azure VM 時確保該驅動器配置為您想要的方式(SSD 與否)。

另一種選擇是不使用自動化伺服器,而是使用 Azure VM DSC 擴展將 DSC 文件推送到 VM 並應用。如果這樣做,您將失去 DSC 集中管理和報告的所有好處,但您的 DSC 文件是在將要執行的伺服器上編譯的,因此可以考慮局部變數。有關 DSC 擴展的更多詳細資訊,請參見此處

引用自:https://serverfault.com/questions/907687