2016-11-16 85 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" 
}