簡體   English   中英

通過 Azure 資源管理器應用多個 DSC

[英]Apply multiple DSCs through Azure Resource Manager

是否可以通過 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
  • 一個用於 IIS + ASP.Net 的 DSC
  • 一個 DSC 來創建 Site1
  • 另一個 DSC 來創建 Site2
  • 在 Dev 中將 Site1 和 Site2 部署到一台機器上
  • 在生產中部署到單獨的機器,甚至可能在可用性集中......
  • (准備將來使用單獨的容器)

有一些方法可以解決這個問題,我使用的一種簡單而有用的方法是嵌套配置,將所有 DSC 配置混合到一個配置中。

您正在創建沒有任何特定節點的配置。 然后使用對所需配置進行分組的節點創建配置。

這個簡單的例子可以作為我正在談論的內容的指南。 有關更多詳細信息,請參閱 [MS 文檔]] 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": "VMConfig"
}

另一種方法是在同一台機器上執行多個 ARM DSC 擴展。 這里的技巧是始終使用相同的名稱,因為只能執行一個 DSC 擴展。

這種方法的警告是,機器上以前的配置會被覆蓋。 從功能角度來看,結果可能是相同的,但如果您希望 DSC 本地管理器更正錯誤的配置,則只能使用最新的配置。

DSC 目前只允許單個配置,因此如果您將 2 個 DSC 擴展部署到同一個 VM(我不確定它是否真的可以工作),第二個配置將覆蓋第一個。

您可能會堆疊 DSC 和 CustomScript 但由於 DSC 可以運行腳本,我不確定您為什么需要這樣做...

你的場景是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM