• 如何在 Azure 中自定义 Windows 虚拟机


    若要以快速一致的方式配置虚拟机 (VM),通常需要某种形式的自动化。 自定义 Windows VM 的一种常用方法是使用适用于 Windows 的自定义脚本扩展。 本教程介绍如何执行下列操作:

    • 使用自定义脚本扩展安装 IIS
    • 创建使用自定义脚本扩展的 VM
    • 在应用扩展后查看正在运行的 IIS 站点

    本教程需要 Azure PowerShell 模块 3.6 或更高版本。 运行 Get-Module -ListAvailable AzureRM 即可查找版本。 如果需要升级,请参阅安装 Azure PowerShell 模块。如果在本地运行 PowerShell,则还需运行 Login-AzureRmAccount -EnvironmentName AzureChinaCloud 以创建与 Azure 的连接。

    自定义脚本扩展概述

    自定义脚本扩展在 Azure VM 上下载和执行脚本。 此扩展适用于部署后配置、软件安装或其他任何配置/管理任务。 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 Azure 门户。

    自定义脚本扩展与 Azure Resource Manager 模板集成,也可以使用 Azure CLI、PowerShell、Azure 门户或 Azure 虚拟机 REST API 来运行它。

    自定义脚本扩展适用于 Windows 和 Linux VM。

    创建虚拟机

    创建 VM 之前,需使用 New-AzureRmResourceGroup 创建资源组。 以下示例在“ChinaEast”位置创建名为“myResourceGroupAutomate”的资源组:

    PowerShell
    New-AzureRmResourceGroup -ResourceGroupName myResourceGroupAutomate -Location ChinaEast
    

    使用 Get-Credential 设置 VM 的管理员用户名和密码:

    PowerShell
    $cred = Get-Credential
    

    现在,可使用 New-AzureRmVM 创建 VM。 以下示例创建所需的虚拟网络组件、OS 配置,然后创建名为“myVM”的 VM:

    PowerShell
    # Create a subnet configuration
    $subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
        -Name mySubnet `
        -AddressPrefix 192.168.1.0/24
    
    # Create a virtual network
    $vnet = New-AzureRmVirtualNetwork `
        -ResourceGroupName myResourceGroupAutomate `
        -Location ChinaEast `
        -Name myVnet `
        -AddressPrefix 192.168.0.0/16 `
        -Subnet $subnetConfig
    
    # Create a public IP address and specify a DNS name
    $publicIP = New-AzureRmPublicIpAddress `
        -ResourceGroupName myResourceGroupAutomate `
        -Location ChinaEast `
        -AllocationMethod Static `
        -IdleTimeoutInMinutes 4 `
        -Name "myPublicIP"
    
    # Create an inbound network security group rule for port 3389
    $nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig `
        -Name myNetworkSecurityGroupRuleRDP  `
        -Protocol Tcp `
        -Direction Inbound `
        -Priority 1000 `
        -SourceAddressPrefix * `
        -SourcePortRange * `
        -DestinationAddressPrefix * `
        -DestinationPortRange 3389 `
        -Access Allow
    
    # Create an inbound network security group rule for port 80
    $nsgRuleWeb = New-AzureRmNetworkSecurityRuleConfig `
        -Name myNetworkSecurityGroupRuleWWW  `
        -Protocol Tcp `
        -Direction Inbound `
        -Priority 1001 `
        -SourceAddressPrefix * `
        -SourcePortRange * `
        -DestinationAddressPrefix * `
        -DestinationPortRange 80 `
        -Access Allow
    
    # Create a network security group
    $nsg = New-AzureRmNetworkSecurityGroup `
        -ResourceGroupName myResourceGroupAutomate `
        -Location ChinaEast `
        -Name myNetworkSecurityGroup `
        -SecurityRules $nsgRuleRDP,$nsgRuleWeb
    
    # Create a virtual network card and associate with public IP address and NSG
    $nic = New-AzureRmNetworkInterface `
        -Name myNic `
        -ResourceGroupName myResourceGroupAutomate `
        -Location ChinaEast `
        -SubnetId $vnet.Subnets[0].Id `
        -PublicIpAddressId $publicIP.Id `
        -NetworkSecurityGroupId $nsg.Id
    
    # Create a virtual machine configuration
    $vmConfig = New-AzureRmVMConfig -VMName myVM -VMSize Standard_DS2 | `
    Set-AzureRmVMOperatingSystem -Windows -ComputerName myVM -Credential $cred | `
    Set-AzureRmVMSourceImage -PublisherName MicrosoftWindowsServer `
        -Offer WindowsServer -Skus 2016-Datacenter -Version latest | `
    Add-AzureRmVMNetworkInterface -Id $nic.Id
    
    New-AzureRmVM -ResourceGroupName myResourceGroupAutomate -Location ChinaEast -VM $vmConfig
    

    创建资源和 VM 需要几分钟的时间。

    自动安装 IIS

    使用 Set-AzureRmVMExtension 安装自定义脚本扩展。 该扩展运行 powershell Add-WindowsFeature Web-Server 以安装 IIS Web 服务器,然后更新 Default.htm 页以显示 VM 的主机名:

    PowerShell
    Set-AzureRmVMExtension -ResourceGroupName myResourceGroupAutomate `
        -ExtensionName IIS `
        -VMName myVM `
        -Publisher Microsoft.Compute `
        -ExtensionType CustomScriptExtension `
        -TypeHandlerVersion 1.4 `
        -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path "C:\inetpub\wwwroot\Default.htm" -Value $($env:computername)"}' `
        -Location ChinaEast
    

    测试网站

    使用 Get-AzureRmPublicIPAddress 获取负载均衡器的公共 IP 地址。 以下示例获取前面创建的“myPublicIP”的 IP 地址:

    PowerShell
    Get-AzureRmPublicIPAddress `
        -ResourceGroupName myResourceGroupAutomate `
        -Name myPublicIP | select IpAddress
    

    然后,可将公共 IP 地址输入 Web 浏览器中。 网站随即显示,其中包括负载均衡器将流量分发到的 VM 的主机名,如下例所示:

    运行 IIS 网站

    后续步骤

    在本教程中,你在 VM 上自动执行了 IIS 安装。 你已了解如何:

    • 使用自定义脚本扩展安装 IIS
    • 创建使用自定义脚本扩展的 VM
    • 在应用扩展后查看正在运行的 IIS 站点

    转到下一教程,了解如何创建自定义 VM 映像。

    立即访问http://market.azure.cn

  • 相关阅读:
    2981 大整数加法
    1160 矩阵的最大值(指针专题)
    1159 最大的两个数(指针专题)
    1127 矩阵乘积
    1126 布尔矩阵的奇偶性
    1125 上三角矩阵的判断
    1124 两个有序数组合并
    1123 最佳校友
    1122 小明的调查作业
    1121 电梯
  • 原文地址:https://www.cnblogs.com/zangdalei/p/7872155.html
Copyright © 2020-2023  润新知