Azure
使用 Azure 自動化 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 程式碼,因為該程式碼在編譯期間執行。我需要它在配置期間執行。
我該怎麼做?
使用 Azure 自動化 DSC 拉取伺服器,您無法真正做到這一點。正如您所提到的,DSC 文件的編譯發生在自動化伺服器上,它沒有將要應用到的伺服器的詳細資訊,因此無法將其考慮在內。在編譯時,您將為安裝發生,這就是將要使用的。與 Chef 或 Puppet 之類的工具相比,這就是 DSC Pull 伺服器失敗的地方,這些工具確實在客戶端機器上擁有資訊,並且可以在編譯時使用這些資訊。
使用自動化伺服器並沒有真正的解決方法,除了使用一致的驅動器號,然後在建構 Azure VM 時確保該驅動器配置為您想要的方式(SSD 與否)。
另一種選擇是不使用自動化伺服器,而是使用 Azure VM DSC 擴展將 DSC 文件推送到 VM 並應用。如果這樣做,您將失去 DSC 集中管理和報告的所有好處,但您的 DSC 文件是在將要執行的伺服器上編譯的,因此可以考慮局部變數。有關 DSC 擴展的更多詳細資訊,請參見此處。