什么是 Azure Automation State Configuration?
- 10 分钟
可以使用 Azure Automation State Configuration 来确保群集区域中的虚拟机(VM)处于一致状态,同时安装相同的软件以及相同的配置。
在本单元中,你将了解 Azure 自动化的特性和功能,查看 PowerShell Desired State Configuration(DSC)的声明性模型,并了解其优势。
Azure Automation State Configuration 是基于 PowerShell 构建的 Azure 服务。 它使你能够一致地部署、可靠地监视和自动更新所有资源的所需状态。 Azure 自动化提供了用于定义配置并将其应用到真实虚拟机和虚拟机的工具。
为何使用 Azure Automation State Configuration?
为运行服务的服务器手动维护正确且一致的配置可能比较困难且容易出错。 Azure Automation State Configuration 使用 PowerShell DSC 来帮助应对这些挑战。 它集中管理 DSC 项目和 DSC 进程。
Azure Automation State Configuration 具有内置拉取服务器。 你可将节点目标设置为此拉取服务器,使其从此拉取服务器自动接收配置,符合所需状态,并报告回其符合性。 可以在云中或本地将虚拟或物理 Windows 或 Linux 计算机定向到目标。
可以通过配置 Azure Automation State Configuration,使用 Azure Monitor 日志来查看节点的合规性,从而发送相关数据。
什么是 PowerShell DSC?
PowerShell DSC 是 Azure Automation State Configuration 用于配置、部署和控制系统的声明性管理平台。 声明性编程语言将意图(想做什么)与执行(怎么做)分开。 您指定所需状态,然后让 DSC 完成工作以实现目标。 当 DSC 资源可用时,无需了解如何实现或部署功能。 相反,你可以关注你的部署结构。
如果已在使用 PowerShell,则可能想知道为什么需要 DSC。 请考虑以下示例。
若要在 Windows 服务器上创建共享,可以使用以下 PowerShell 命令:
# Create a file share
New-SmbShare -Name MyFileShare -Path C:\Shared -FullAccess User1 -ReadAccess User2
此脚本非常简单且易于理解。 但是,如果在生产环境中使用此脚本,将遇到几个问题。 考虑脚本多次运行或 User2
已拥有完全访问权限而不是只读访问权限时可能发生的情况。
此方法不是幂等的。 幂等性描述一个操作,无论运行一次还是运行 10,001 次,其效果都相同。 若要在 PowerShell 中实现幂等性,需要添加逻辑和错误处理。 如果文件共享不存在,请创建它。 如果共享确实存在,则无需创建它。 如果 User2
存在但没有读取访问权限,则添加读取访问权限。
PowerShell 脚本如下所示:
$shareExists = $false
$smbShare = Get-SmbShare -Name $Name -ErrorAction SilentlyContinue
if($smbShare -ne $null)
{
Write-Verbose -Message "Share with name $Name exists"
$shareExists = $true
}
if ($shareExists -eq $false)
{
Write-Verbose "Creating share $Name to ensure it is Present"
New-SmbShare @psboundparameters
}
else
{
# Need to call either Set-SmbShare or *ShareAccess cmdlets
if ($psboundparameters.ContainsKey("ChangeAccess"))
{
#...etc., etc., etc
}
}
其他未考虑的特殊情况只有在出现问题时才会曝光。 DSC 会自动处理意外情况。 使用 DSC,可以描述结果,而不是实现结果的过程。
以下 DSC 代码片段演示了一个示例:
Configuration Create_Share
{
Import-DscResource -Module xSmbShare
# A node describes the VM to be configured
Node $NodeName
{
# A node definition contains one or more resource blocks
# A resource block describes the resource to be configured on the node
xSmbShare MySMBShare
{
Ensure = "Present"
Name = "MyFileShare"
Path = "C:\Shared"
ReadAccess = "User1"
FullAccess = "User2"
Description = "This is an updated description for this share"
}
}
}
前面的示例使用模块 xSmbShare
,该模块告知 DSC 如何 检查文件共享的状态。 DSC 资源工具包包含 100 多个资源模块,包括用于安装 IIS 站点的资源模块。 可以在本模块末尾的“摘要”单元中找到 DSC 资源工具包的链接。
在下一单元中,你将详细了解 PowerShell DSC 代码结构。
什么是 LCM?
本地配置管理器(LCM)是 Windows作系统上的 Windows Management Framework (WMF)的一个组件。 LCM 负责更新节点(如 VM)的状态,以匹配所需状态。 每次 LCM 运行时,它都会完成以下步骤:
- 获取:获取节点的当前状态。
- 测试:使用已编译的 DSC 脚本(.mof 文件)将节点的当前状态与所需状态进行比较。
- 设置:更新节点,以匹配 .mof 文件中所述的所需状态。
将 VM 注册到 Azure 自动化时,将配置 LCM。
DSC 中的推送和拉取体系结构
每个节点上的 LCM 可以采用两种模式运行。
推送模式:管理员手动向一个或多个节点发送或 推送配置。 LCM 确保每个节点上的状态与配置指定的内容匹配。
拉取模式: 请求服务器 保存配置信息。 每个节点上的 LCM 每隔 15 分钟定期轮询请求服务器,以获取最新的配置详细信息。 下图中将这些请求表示为步骤 1。 在步骤 2 中,拉取服务器将有关任何配置更改的详细信息发送回每个节点。
在拉取模式下,每个节点都必须向请求服务注册。
这两种模式都有优点:
- 推送模式易于设置。 它不需要自己的专用基础结构,并且可以在笔记本电脑上运行。 推送模式有助于测试 DSC 的功能。 还可以使用推送模式将新映像的计算机恢复到基线所需状态。
- 拉取模式在跨越大量计算机的企业部署中非常有用。 LCM 会定期轮询请求服务器,并确保节点处于所需状态。 如果外部工具或团队应用了导致单个计算机上的配置偏移的修补程序,则这些计算机将快速恢复与已设置的配置一致。 此过程可帮助你实现对安全和监管义务的持续合规性状态。
支持的平台和操作系统
Azure 自动化 DSC 由 Azure 云服务、其他云提供商、本地基础结构或所有这些环境的混合支持。
Azure 自动化 DSC 支持以下操作系统:
- Windows
- Server 2022
- Server 2019
- Server 2016
- Server 2012 R2
- Server 2012
- Server 2008 R2 SP1
- 11
- 10
- 8.1
- 7
- Linux
- DSC Linux 扩展支持 PowerShell DSC 文档中列出的所有 Linux 分发版。
PowerShell DSC 安装在 Azure Automation DSC 支持的所有 Linux 计算机上。
DSC 对 Windows 的要求
对于 Windows 计算机,Azure Desired State Configuration (DSC) VM 扩展使用 WMF 来管理 Windows 功能版本,例如 Windows PowerShell DSC 和 Windows 远程管理(WinRM)。 Azure DSC 支持 WMF 4.0 及更高版本,因此 Windows 计算机必须运行 Windows Server 2008 R2 SP1、Windows 7 或更高版本。
首次调用 Azure DSC 扩展时,它会在所有 Windows 版本(Windows Server 2016 及更高版本除外)上安装与 OS 兼容的 WMF 版本。 Windows Server 2016 及更高版本已安装最新版本的 WMF。 安装 WMF 后,计算机需要重启。
WinRM 在运行 Windows Server 2012 或更高版本和 Windows 7 或更高版本的计算机节点上启用。
Windows 版本 1809 及更高版本中提供了对 DSC 代理的代理支持。 旧版 Windows 的 DSC 不支持代理。
其他 DSC 要求
如果节点位于专用网络中,DSC 需要以下端口和 URL 才能与 Azure 自动化通信:
- 端口:出站互联网访问仅需要 TCP 443
- 全局 URL:*.azure-automation.net
- US Gov 弗吉尼亚州的全局 URL*.azure-automation.us
- 代理服务:https://
<workspaceId>
.agentsvc.azure-automation.net