[玩转系统] 如何在 Azure ARM 模板中应用 Azure DSC 配置
作者:精品下载站 日期:2024-12-14 13:00:25 浏览:13 分类:玩电脑
如何在 Azure ARM 模板中应用 Azure DSC 配置
如果您要通过 ARM 模板部署 Azure Windows 虚拟机 (VM) 并且需要配置 Windows,那么本文适合您。在本教程中,你将了解如何使用 ARM 模板的所需状态配置 (DSC) 扩展,通过单个模板无缝部署和配置 Azure VM 规模集。
在 Azure 中部署 VM(或 VM 规模集)时,您只是不部署 VM。总是有许多其他任务需要执行,例如配置磁盘、网络等。但工程师通常还需要执行操作系统级别的配置,例如安装软件、Windows 功能等。操作系统级别是 PowerShell 和所需状态配置 (DSC) 脚本派上用场的地方。
大多数人认为 ARM 模板适合部署 Azure 基础设施。 ARM 模板非常适合部署 VM、网络和其他 Azure 资源,但它也可以调用将在 VM 上自动运行的脚本来配置 VM。
ARM 模板具有可选的扩展处理程序,允许您扩展 ARM 模板的功能。我们在本文中感兴趣的扩展配置文件是 Azure DSC 扩展处理程序。
Azure DSC 扩展是一个 ARM 模板扩展,可在刚刚部署在 ARM 模板中的 VM 上下载并运行 DSC 脚本。该扩展是打包使用 ARM 模板部署 VM 时所需的所有配置后任务的好方法。
在本教程中,你将了解如何通过模板执行 ARM 部署,通过 Azure DSC 扩展调用 DSC 脚本。您将使用 PowerShell 来调用模板,但此处解释的许多概念也适用于通过其他方式调用 ARM 模板部署。
在你开始之前
本文是一个教程,将引导您逐步完成一组任务。如果您打算继续,请确保您满足以下先决条件。
- 一个 Azure 资源组,用于保存您将创建的所有资源。本教程将使用AzureDSCDemo。
- Azure 存储帐户 - 本教程将使用 azuredscdemostorage
- Azure Key Vault - 您将使用它来提取敏感信息,例如 ARM 部署中 VM 规模集的管理员用户名和密码。本教程将使用名为 AzureDSCDemoKv 的密钥保管库。请务必在密钥保管库中的访问策略下选中模板部署的 Azure 资源管理器,以授予 ARM 部署访问权限。
- Azure PowerShell 模块并经过身份验证 - 本教程使用 v3.4
- 在 Windows 10 上 - 创建 DSC zip 文件无法在 MacOS 或 Linux 上运行。
您可以在此处找到本教程使用的所有文件。
创建 DSC Zip 文件
在应用 DSC 配置之前,您必须先有一个要应用的 DSC 脚本。在本教程中,您将使用一个超级简单的 DSC 脚本来安装单个 Windows 功能。
您可以在下面看到,此 DSC 脚本确保在运行它的计算机上安装 Web-Server
Windows 功能。本地计算机将是稍后部署的 Azure VM 规模集。继续并将其保存为 iis_setup.ps1。在此示例中,它将保存在我的 demo 文件夹中。
Configuration iis_setup {
Param ()
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node 'localhost'
{
WindowsFeature WebServerRole
{
Name = "Web-Server"
Ensure = "Present"
}
}
}
创建 DSC 脚本后,下一步是将其压缩。 Azure DSC 需要此 ZIP 文件,因为在创建更高级的 DSC 脚本时,它允许你使用它打包依赖资源。
创建所需 DSC zip 文件的最简单方法是使用 Publish-AzVmDscConfiguration
PowerShell cmdlet。您可以在下面看到如何打包 DSC 脚本,创建一个名为 iis_setup.zip 的文件。
Publish-AzVMDscConfiguration .\iis_setup.ps1 -OutputArchivePath '.\iis_setup.zip'
Publish-AzVmDscConfiguration
cmdlet 不仅会压缩 DSC 脚本,还会在存档中创建一个名为 dscmetadata.json 的文件。在此示例中,它将仅包含一个 Modules
节点。如果 DSC 脚本包含任何依赖模块,它会从本地计算机复制这些模块,将它们包含在 ZIP 文件中,并将它们添加到 Modules
JSON 节点。
{"Modules":[""]}
您可能想手动压缩 DSC 脚本或使用 Compress-Archive
cmdlet。这不行!根据我的经验,Publish-AzVmDscConfiguration
会压缩文件并创建所需的 dscmetada.json 文件。
将 DSC Zip 文件获取到 Azure
现在您已经创建了 DSC zip 文件,现在需要将其放到 ARM 模板最终可以下载的位置。 ARM 部署并不关心 DSC 包所在的位置。只要能访问就OK了。但在本教程中,您将把它上传到 Azure 存储容器。
假设您已经创建了一个存储帐户,请运行以下 PowerShell 代码来创建一个名为 envsetupscripts 的存储容器,并将 iis_setup.zip 文件上传到存储帐户。
$storageAccountName = 'azuredscdemostorage'
$resourceGroupName = 'AzureDSCDemo'
$dscZipFilePath = '.\iis_setup.zip'
$storageContainerName = 'envsetupscripts'
$StorageAccount = Get-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName
# Create, and store, new container
$StorageAccount | New-AzStorageContainer -Name $storageContainerName
$Container = $StorageAccount | Get-AzStorageContainer
# Upload single file
$Container | Set-AzStorageBlobContent -File $dscZipFilePath
如果 DSC 配置可以公开访问,则存储该文件的另一个好位置是与 GitHub 存储库中此类项目的其他文件一起存储。
创建存储帐户 SAS 令牌
由于 DSC 存档存储在私有存储帐户上,因此您需要为管道提供下载它的方法。一种方法是创建临时 SAS 令牌。
$context = (Get-AzStorageAccount -ResourceGroupName '*AzureDSCDemo*' -AccountName '*azuredscdemostorage*').context
$sasToken = New-AzStorageAccountSASToken -Context $context -Service Blob -ResourceType Service,Container,Object -Permission r
有关创建 SAS 令牌的更多信息,请务必查看如何生成 Azure SAS 令牌以访问存储帐户一文。
添加密钥保管库机密
由于部署 VM 规模集的 ARM 模板需要定义 VM 的管理员用户名和密码,因此不要将这些内容以纯文本形式保留在模板本身或参数文件中,这一点很重要。相反,你应该将它们存储在安全位置,例如 Azure Key Vault。
在本教程中,添加三个密钥 - DefaultAdminUsername、DefaultAdminPassword(针对虚拟机)以及刚刚创建的 SAS 令牌,另存为 SASToken。
$kvName = '*AzureDSCDemoKv*'
$vmAdminUserNameSec = ConvertTo-SecureString -String 'adam' -AsPlainText -Force
$vmAdminPasswordSec = ConvertTo-SecureString -String 'I like azure.' -AsPlainText -Force
$encSasToken = ConvertTo-SecureString -String 'I like azure.' -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $kvName -Name DefaultAdminUsername -SecretValue $vmAdminUserNameSec
Set-AzKeyVaultSecret -VaultName $kvName -Name DefaultAdminPassword -SecretValue $vmAdminPasswordSec
Set-AzKeyVaultSecret -VaultName $kvName -Name SASToken -SecretValue $encSasToken
创建 ARM 模板参数文件
ARM 模板参数文件没什么特别的。本教程只是使用它向模板传递所需的参数。如果您想了解有关参数文件的更多信息,请查看创建参数文件 Microsoft 文档。
该参数文件中有一些需要注意的事项。
storageAccountSasToken
- 这是运行 ARM 部署时将以交互方式填充的参数。这里没有特意提供任何价值。adminUsername
和adminPassword
- 这两个参数由部署读取之前在 Azure Key Vault 中创建的两个机密来填充。
请务必将 [您的订阅 ID] 替换为您的实际 Azure 订阅 ID。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"value": "azuredscdemostorage"
},
"setupScriptContainerName": {
"value": "envsetupscripts"
},
"storageAccountSasToken": {
"value": ""
},
"vmssInstanceCount": {
"value": 2
},
"vmSize": {
"value": "Standard_D1"
},
"adminUsername": {
"reference": {
"keyVault": {
"id": "/subscriptions/[your subscription id]/resourceGroups/AzureDSCDemo/providers/Microsoft.KeyVault/vaults/AzureDSCDemoKv"
},
"secretName": "DefaultAdminUsername"
}
},
"adminPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/[your subscription id]/resourceGroups/AzureDSCDemo/providers/Microsoft.KeyVault/vaults/AzureDSCDemoKv"
},
"secretName": "DefaultAdminPassword"
}
}
}
}
创建 ARM 模板
让我们重点关注适用于 DSC 的内容,而不是涵盖提供示例 VM 规模集的整个 ARM 模板。您可以在下面看到如何为 VM 规模集设置 extensionProfile
的工作示例。
应该指出此代码的一些重要功能。
forceUpdateTag
- 如果您打算更改 DSC 配置文件并进行测试,此属性非常重要。默认情况下,DSC 不会尝试重新应用新配置。该属性的值并不重要,只要它与上一个属性不同即可。完成测试后,您可以将其删除。url
- 这是指向 DSC zip 文件的 URL。 DSC 扩展并不关心它在哪里,只要它可以从此 URL 下载即可。在此示例中,DSC 存档位于私有 Azure 存储帐户上,名为 iis_setup.zip,位于名为 envsetupscripts 的存储容器中。以下示例使用参数,但主要结构为:https://[storage_account_name].blob.core.windows.net/envsetupscripts/iis_setup.zip
script
- 这是 DSC 存档中包含的 DSC 脚本的名称。function
- 这是 DSC 脚本文件内部配置的名称。configurationUrlSasToken
- 这是之前创建的 SAS 令牌。管道将使用它来对存储帐户进行身份验证以下载 DSC 存档。
"extensionProfile": {
"extensions": [
{
"name": "Microsoft.Powershell.DSC",
"properties": {
"publisher": "Microsoft.Powershell",
"type": "DSC",
"typeHandlerVersion": "2.9",
"autoUpgradeMinorVersion": true,
"forceUpdateTag": "3",
"settings": {
"configuration": {
"url": "[concat('https://',parameters('storageAccountName'),'.blob.core.windows.net/',parameters('setupScriptContainerName'),'/',variables('iisDSCSetupArchiveFileName'))]",
"script": "iis_setup.ps1",
"function": "iis_setup"
}
},
"protectedSettings": {
"configurationUrlSasToken": "[parameters('storageAccountSasToken')]"
}
}
}
]
}
部署 Azure 资源
创建 DSC 脚本并与创建的 ARM 模板和参数文件一起上传后,您就可以对其进行测试了。
运行 New-AzResourceGroupDeployment
命令,提供模板、模板参数文件、资源组名称和生成的 SAS 令牌,如下所示。此命令将启动部署并配置 ARM 模板中定义的所有资源,包括运行我们在本教程中关注的 DSC 扩展。
New-AzResourceGroupDeployment -TemplateFile ./vmss.json -TemplateParameterFile ./vmss.parameters.json -ResourceGroupName AzureDSCDemo -storageAccountSasToken $sasToken -Verbose
部署完成后,您可以检查规模集中的任何 VM,您会发现Web-Server Windows 功能已安装!
清理
完成本教程后,请记住删除与所有资源一起创建的资源组,这样您就不会被收取费用!
Get-AzResourceGroup -Name AzureDSCDemo | Remove-AzResourceGroup
故障排除
如果您遇到 DSC 扩展的任何问题,位于虚拟机上的 C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\2.80.0.0 中的扩展日志可能会提供一些线索这是怎么回事。
资源
- Azure DSC 扩展设置
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag