练习 - 设置 DSC 并配置所需状态
在本练习中,你将创建 Azure 自动化帐户并上传 PowerShell DSC。 然后,将现有 VM 载入 Azure 自动化。 最后,你将检查 VM 是否缺少 IIS。 如果是,你将运行代码以在 VM 上安装和配置 IIS。
创建 VM
首先从 Windows Server 2022 映像部署新 VM。
在右侧的 Azure Cloud Shell 窗格中,运行以下命令以创建用户名并生成随机密码:
USERNAME=azureuser PASSWORD=$(openssl rand -base64 32)
在 Cloud Shell 中运行以下命令以创建 VM:
az vm create \ --resource-group "<rgn>[Sandbox resource group name]</rgn>" \ --name myVM \ --image win2019datacenter \ --admin-username $USERNAME \ --admin-password $PASSWORD
创建 VM 和支持资源需要几分钟时间。 如果 VM 已成功创建,应会看到如下所示的输出:
{ "fqdns": "", "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM", "___location": "eastus", "macAddress": "00-0D-3A-36-BA-28", "powerState": "virtual machine running", "privateIpAddress": "10.0.0.4", "publicIpAddress": "104.40.69.56", "resourceGroup": "myResourceGroup" }
复制此输出中的
publicIpAddress
并保存它。 在本练习的后面部分,你将使用此地址访问 VM。在 Cloud Shell 中运行以下命令,为 Web 流量打开 VM 的端口 80:
az vm open-port \ --port 80 \ --resource-group "<rgn>[Sandbox resource group name]</rgn>" \ --name myVM
在 Web 浏览器中访问 VM
http://[public-ip]
的公共 IP 地址。 尽管端口 80 处于打开状态,你的连接应会超时,并显示This site can't be reached
。 发生此错误的原因是未在 VM 上部署 IIS。 我们将在本练习的后面部分解决此问题。
创建 Azure 自动化帐户
使用用于激活沙盒的同一帐户登录到 Azure 门户 。
在 Azure 门户资源菜单或 主页 上,选择“ 创建资源”。 此时会显示“创建资源”窗格。
在 搜索服务和市场 文本框中,输入 自动化,然后选择 Enter 以查看搜索结果。
在 自动化 搜索结果中,选择由Microsoft发布的 自动化 Azure 服务。
选择 创建。 此时会显示“ 创建自动化帐户 ”窗格。
为每个设置输入以下值。
设置 价值 订阅 礼宾服务订阅 资源组 在下拉列表中选择现有资源组 名称 输入自动化帐户的名称。 建议使用 [你的姓名首字母缩写]-automation-account。 在本练习中看到 [your-automation-account-name] 时,使用此名称。 区域 接受默认位置 选择“审核 + 创建”,然后选择“创建”。 请等待自动化帐户完成部署。
部署完成后,选择“转到资源”。 此时将显示资源的“自动化帐户”窗格。
创建 DSC 配置脚本
在 Cloud Shell 中运行以下命令以启动 PowerShell 会话:
pwsh
在 PowerShell 提示符下运行以下命令,在代码编辑器中打开名为 MyDscConfiguration.ps1 的新文件:
code $HOME/MyDscConfiguration.ps1
在文件中输入以下代码块。 此代码创建配置以安装 IIS(如果尚未安装)。 然后,代码运行脚本来编译配置。
Configuration MyDscConfiguration { Node "localhost" { WindowsFeature MyFeatureInstance { Ensure = 'Present' Name = 'Web-Server' } } }
选择 Ctrl+S 将文件保存到主目录中,然后选择 Ctrl+Q 关闭编辑器。
在 Azure Cloud Shell 中的 PowerShell 会话中,输入以下代码(替换为
[your-automation-account-name]
自动化帐户资源的名称),将 DSC 脚本上传到 Azure 自动化帐户。Import-AzAutomationDscConfiguration ` -Published ` -ResourceGroupName <rgn>[Sandbox resource group name]</rgn> ` -SourcePath $HOME/MyDscConfiguration.ps1 ` -Force ` -AutomationAccountName [your-automation-account-name]
该命令应生成如下所示的输出:
ResourceGroupName : <rgn>[Sandbox resource group name]</rgn> AutomationAccountName : [your-automation-account-name] Location : eastus State : Published Name : MyDscConfiguration Tags : {} CreationTime : 6/25/21 5:44:36 PM +00:00 LastModifiedTime : 6/25/21 5:44:36 PM +00:00 Description : Parameters : {} LogVerbose : False
添加所需的模块(可选)
上传 DSC 配置脚本后,导入 DSC 进程所需的任何 PowerShell 模块。 我们的配置不需要任何其他模块,因此可以跳过此步骤。 如果你需要将模块导入或添加到自动化帐户中,可以通过 Azure 门户访问你的自动化帐户。 在此处,选择左侧“共享资源”标题中的“模块”,然后选择“添加模块”。
编译 DSC 脚本
在 Azure 门户中,仍应显示 Azure 自动化帐户的 “概述 ”窗格。
在“自动化帐户”菜单中的“配置管理”下,选择“状态配置”(DSC)。 自动化帐户的 状态配置(DSC) 窗格出现。
选择“ 配置 ”选项卡。验证是否显示 配置 MyDscConfiguration ,然后选择它。 此时会显示 “MyDscConfiguration 配置”窗格。
在命令栏中,选择“ 编译”。
在 “编译 DSC 配置 ”对话框中,选择“ 是”。
检查通知( “通知 ”图标位于页面标题中的全局控件中)。 等待编译作业显示状态为已完成,这可能需要几分钟时间。
注释
可能需要刷新才能查看状态更改。 若要刷新,请在 Azure 门户的左上角痕迹导航路径中,选择自动化帐户。 此时会显示 “状态配置”(DSC) 窗格。 在顶部菜单栏中,选择“ 刷新”。 然后,从列表中选择 MyDscConfiguration 配置以返回到 MyDscConfiguration 窗格。 在 “编译作业 ”选项卡下, “状态 ”现在应显示为 “已完成”。
编译完成后,关闭 MyDscConfiguration 窗格。 此时将显示“State configuration (DSC)”。
将 VM 注册到 Azure 自动化帐户
在“[your-automation-account-name]”的“State configuration (DSC)”窗格上,选择“节点”选项卡。在命令栏中,选择“添加”。 此时会显示自动化帐户的 “虚拟机 ”窗格。
选择在本练习的第一个任务中创建的 VM(myVM)。 在网络中传播配置和 VM 可能需要 10 分钟的时间。 如果未列出 VM,请等待几分钟,然后在命令栏中选择“ 刷新 ”,直到出现。
在命令栏中,选择“ 连接”。 此时会显示 “注册 ”窗格。
为每个设置输入以下值。
设置 价值 节点配置名称 从下拉列表中选择 MyDscConfiguration.localhost 刷新频率 30 配置模式频率 15 配置模式 ApplyAndMonitor 允许模块覆盖 选中复选框 如果需要,请重新启动节点 选中复选框 重新启动后的操作 ContinueConfiguration 选择“确定”。
等待 VM 连接。 此流程可能需要几分钟时间。 连接 myVM 后,在门户左上角的面包屑导航路径中,选择您的自动化帐户以关闭 注册 和 虚拟机 窗格。 自动化帐户的状态配置 (DSC) 窗格将显示。
在命令栏中,选择“ 刷新”。
验证节点 myVM 是否显示在列表中,并且其状态是否 合规。
验证是否已在 VM 上安装 IIS
在您的网页浏览器中,前往 http://[public-ip]
,其中 [public-ip]
是您之前在本练习中记录的公共 IP 地址。
应会看到默认的 IIS 网页。
祝贺! 已成功部署 IIS。 Azure 自动化使用上传到 Azure 自动化帐户的 PowerShell DSC 脚本。