练习 - 设置 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 中运行以下命令,打开 VM 的端口 80 以获得 Web 流量:
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
。 发生此错误是因为 IIS 未部署到 VM 上。 我们稍后将在本练习中解决此问题。
创建 Azure 自动化帐户
使用激活沙盒时所用的同一帐户登录 Azure 门户。
在 Azure 门户资源菜单上或在“主页”中,选择“创建资源”。 此时会显示“创建资源”窗格。
在“搜索服务和市场”文本框中,输入“自动化”,然后选择 Enter 来查看搜索结果。
在“自动化”搜索结果中,选择 Microsoft 发布的自动化 Azure 服务。
选择“创建”。 此时将显示“创建自动化帐户”窗格。
为每个设置输入以下值。
设置 值 订阅 Concierge 订阅 资源组 在下拉列表中选择现有资源组 名称 为你的自动化帐户输入一个名称。 建议使用 [你的姓名首字母缩写]-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 自动化帐户的“概述”窗格应该仍会显示。
在“自动化帐户”菜单中的“配置管理”下,选择“State configuration (DSC)”。 此时将显示自动化帐户的“State configuration (DSC)”窗格。
选择“配置”选项卡。确定显示“MyDscConfiguration”配置,然后选择它。 此时将显示“MyDscConfiguration”配置窗格。
在命令栏中,选择“编译”。
在“编译 DSC 配置”对话框中选择“是”。
查看通知(“通知”图标位于页眉的全局控件中)。 等待编译作业“状态”显示为“已完成”,这可能需要几分钟时间。
注意
可能需要刷新才能看到状态更改。 若要刷新,请在 Azure 门户的左上角痕迹导航路径中,选择你的自动化帐户。 此时将显示“State configuration (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”后,在门户左上方的痕迹导航路径中,选择自动化帐户以关闭“注册”和“虚拟机”窗格。 此时将显示自动化帐户的“State configuration (DSC)”窗格。
在命令栏中,选择“刷新”。
验证节点 myVM 是否显示在列表中,并且其状态是否为“符合”。
验证是否已在 VM 上安装了 IIS
在 Web 浏览器中,转到 http://[public-ip]
,其中 [public-ip]
是本练习中先前记录的公共 IP 地址。
应看到默认的 IIS 网页。
祝贺你! 你已成功部署了 IIS。 Azure 自动化使用上传到 Azure 自动化帐户的 PowerShell DSC 脚本。