2016-11-16 57 views
0

是否可以通過Azure資源管理器將多個DSC配置應用於一個虛擬機?通過Azure資源管理器應用多個DSC

目前我使用的是這樣的:

{ 
     "apiVersion": "2015-06-15", 
     "dependsOn": [ 
     "[concat('Microsoft.Compute/virtualMachines/', variables('vm_name'))]" 
     ], 
     "location": "[resourceGroup().location]", 
     "name": "DSCSetup", 
     "properties": { 
     "publisher": "Microsoft.Powershell", 
     "type": "DSC", 
     "typeHandlerVersion": "2.20", 
     "autoUpgradeMinorVersion": true, 
     "settings": { 
      "modulesUrl": "[concat('https://', variables('sa_name'), '.blob.core.windows.net/.../dsc.ps1.zip')]", 
      "configurationFunction": "dsc.ps1\\Main", 
      "properties": { 
      "MachineName": "[variables('vm_name')]", 
      "UserName": "[parameters('vm_user')]" 
      } 
     }, 
     "protectedSettings": {} 
     }, 
     "type": "extensions" 
    } 

如果沒有,你可以自動合併多個DSC的?

的情況是:

  • 擁有多DSC的
  • 一個DSC爲IIS + ASP.Net
  • 一個DSC創建站點1
  • 另一個DSC創建站點2
  • 在開發部署站點1和Site2到一臺機器
  • 在生產部署到單獨的機器,甚至可用集...
  • (準備使用在未來單獨的容器)

回答

1

DSC只允許在目前一個單一的配置,因此,如果您部署2個DSC擴展到同一個虛擬機(我不知道它實際上將工作)第二個配置會覆蓋第一個配置。

你也許可以疊加DSC和CustomScript但由於DSC可運行腳本,我不知道爲什麼你會永遠需要做的......

什麼是你的方案?

+0

我想通過「功能」來分離DSC,所以一個是IIS + ASP.NET,接下來會創建IIS網站。然後,我可以爲兩臺虛擬機重新使用相同的IIS + ASP.NET DSC,並簡單地將它們擴展到兩個IIS網站。順便說一句:它是不允許應用多個DSC擴展,我試圖... – david

+0

嗯...我想多瞭解你的情況,我認爲這是有道理的,雖然有麻煩包纏我的頭。如果你想聊天,請給我發電子郵件 - bmoore @ microsoft ... –

0

這裏有一些方法,我使用的一個簡單而有用的是嵌套配置

您正在創建沒有任何特定節點的配置。然後創建具有組合所需配置節點的配置。

這個簡單的例子可以作爲我正在談論的指南。有關更多詳細信息,請參閱[MS doc]] 1

Configuration WindowsUpdate 
{ 
    Import-DscResource -ModuleName PSDesiredStateConfiguration 

    Service ModulesInstaller { 
     Name = "TrustedInstaller" 
     DisplayName = "Windows Modules Installer" 
     StartupType = "Disabled" 
     State = "Stopped" 
    } 

} 

Configuration ServerManager 
{ 
    Import-DscResource -ModuleName PSDesiredStateConfiguration 

    Registry DoNotOpenServerManagerAtLogon { 
     Ensure = "Present" 
     Key = "HKLM:\SOFTWARE\Microsoft\ServerManager" 
     ValueName = "DoNotOpenServerManagerAtLogon" 
     ValueData = 1 
     DependsOn = "[Registry]NoAutoUpdate" 
    }  
} 


Configuration VMConfig 
{ 
    Node localhost 
    { 
     WindowsUpdate NestedConfig1 {} 

     ServerManager NestedConfig2 {} 
    } 
} 

採用這種方法很容易讓我對每個DSC分機號碼來進行機器進入配置,這只是一個配置我想申請的組成。

"publisher": "Microsoft.Powershell", 
"type": "DSC", 
"typeHandlerVersion": "2.20", 
"configuration": { 
    "url": "[concat(parameters('_artifactsLocation'), '/Configuration.zip')]", 
    "script": "Configuration.ps1", 
    "function": "FrontEndVM" 
}