共用方式為


將機器設定為預期狀態

注意

Azure 自動化 狀態設定 將於 2027 年 9 月 30 日淘汰,請依該日期轉換至 Azure 機器組態。 如需詳細資訊,請參閱 部落格文章 公告。 Azure Machine Configuration 服務結合 DSC 延伸模組、Azure 自動化狀態設定,以及客戶意見反應最常要求的功能。 Azure Machine Configuration 也包含混合機器支援 (透過已啟用 Arc 的伺服器提供)。

警告

Azure 自動化 DSC for Linux 已於 2023 年 9 月 30 日淘汰。 如需詳細資訊,請參閱公告

Azure Automation State Configuration 可讓您指定伺服器的組態,並且確定這些伺服器處於指定狀態一段時間。

  • 上架 VM 讓 Azure 自動化 DSC 管理
  • 將設定上傳至 Azure 自動化
  • 將設定編譯成節點設定
  • 將節點設定指派給受控節點
  • 檢查受控節點的合規性狀態

針對此教學課程,我們會使用簡單的 DSC 設定,以確保在 VM 上安裝 IIS。

必要條件

部分設定的支援

Azure 自動化狀態設定支援使用部分設定。 在此案例中,DSC 會設定為獨立管理多項設定,並從 Azure 自動化擷取各項設定。 不過,每個自動化帳戶只能指派一項設定給一個節點。 這表示如果您要針對節點使用兩個組態,則需要兩個自動化帳戶。

如需如何從提取服務註冊部分設定的詳細資料,請參閱部分設定的文件。

如需小組如何將設定作為程式碼使用,以共同管理伺服器的詳細資訊,請參閱了解 DSC 在 CI/CD 管線中的角色

登入 Azure

使用 Connect-AzAccount Cmdlet 登入您的 Azure 訂用 帳戶 ,並遵循螢幕上的指示。

Connect-AzAccount

建立設定並將其上傳至 Azure 自動化

在文字編輯器中輸入下列項目,並將其於本機儲存為 TestConfig.ps1

configuration TestConfig {
   Node WebServer {
      WindowsFeature IIS {
         Ensure               = 'Present'
         Name                 = 'Web-Server'
         IncludeAllSubFeature = $true
      }
   }
}

注意

Azure 自動化中的設定名稱必須限制為不超過 100 個字元。

在需要匯入多個模組以提供 DSC 資源的更進階案例中,請確定每個模組在設定中都有唯一的 Import-DscResource 行。

呼叫 Import-AzAutomationDscConfiguration Cmdlet,以將設定上傳至自動化帳戶中。

$importAzAutomationDscConfigurationSplat = @{
    SourcePath = 'C:\DscConfigs\TestConfig.ps1'
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Published = $true
}
Import-AzAutomationDscConfiguration @importAzAutomationDscConfigurationSplat

將設定編譯成節點設定

DSC 設定必須編譯成節點設定,才可以指派至節點。 請參閱 DSC 設定

呼叫 Start-AzAutomationDscCompilationJob Cmdlet,以將 TestConfig 設定編譯成自動化帳戶中名為 TestConfig.WebServer 的節點設定。

$startAzAutomationDscCompilationJobSplat = @{
    ConfigurationName = 'TestConfig'
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
}
Start-AzAutomationDscCompilationJob @startAzAutomationDscCompilationJobSplat

註冊 VM 以供 State Configuration 管理

您可以使用 Azure Automation State Configuration 來管理 Azure VM (傳統和 Resource Manager)、內部部署 VM、Linux 機器、AWS VM 和內部部署實體機器。 在本文中,我們將討論如何只註冊 Azure Resource Manager VM。 如需將其他類型的機器註冊的詳細資訊,請參閱 將機器上架以供 Azure Automation State Configuration 管理

呼叫 Register-AzAutomationDscNode Cmdlet,以使用 Azure 自動化狀態設定作為受控節點來註冊 VM。

$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat

指定設定模式設定

使用 Register-AzAutomationDscNode Cmdlet,以將 VM 註冊為受控節點,並指定設定屬性。 例如,您可藉由指定 ApplyOnly 作為 ConfigurationMode 屬性的值,以指定讓電腦的狀態只套用一次。 狀態設定不會在初始檢查之後嘗試套用設定。

$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
    ConfigurationMode = 'ApplyOnly'
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat```

You can also specify how often DSC checks the configuration state by using the
`ConfigurationModeFrequencyMins` property. For more information about DSC configuration settings,
see [Configuring the Local Configuration Manager][05].

```powershell
# Run a DSC check every 60 minutes
$registerAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    AzureVMName = 'DscVm'
    ConfigurationModeFrequencyMins = 60
}
Register-AzAutomationDscNode @registerAzAutomationDscNodeSplat```

## Assign a node configuration to a managed node

Now we can assign the compiled node configuration to the VM we want to configure.

```powershell
# Get the ID of the DSC node
$getAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Name = 'DscVm'
}
$node = Get-AzAutomationDscNode @getAzAutomationDscNodeSplat

# Assign the node configuration to the DSC node
$setAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    NodeConfigurationName = 'TestConfig.WebServer'
    NodeId = $node.Id
}
Set-AzAutomationDscNode @setAzAutomationDscNodeSplat

此動作會將名為 TestConfig.WebServer 的節點設定,指派至已註冊的 DSC 節點 DscVm。 根據預設,DSC 節點會每隔 30 分鐘檢查節點設定的合規性。 如需如何變更合規性檢查間隔的詳細資訊,請參閱設定本機組態管理員

檢查受控節點的合規性狀態

您可使用 Get-AzAutomationDscNodeReport Cmdlet,以取得受控節點合規性狀態的報告。

# Get the ID of the DSC node
$getAzAutomationDscNodeSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    Name = 'DscVm'
}
$node = Get-AzAutomationDscNode @getAzAutomationDscNodeSplat

# Get an array of status reports for the DSC node
$getAzAutomationDscNodeReportSplat = @{
    ResourceGroupName = 'MyResourceGroup'
    AutomationAccountName = 'myAutomationAccount'
    NodeId = $node.Id
}
$reports = Get-AzAutomationDscNodeReport @getAzAutomationDscNodeReportSplat

# Display the most recent report
$reports[0]

下一步