Azure Resource Manager şablonları ile Linux sanal makinesi oluşturmaHow to create a Linux virtual machine with Azure Resource Manager templates

Bir Azure Resource Manager şablonu ve Azure Cloud shell'den Azure CLI kullanarak bir Linux sanal makinesini (VM) oluşturmayı öğrenin.Learn how to create a Linux virtual machine (VM) by using an Azure Resource Manager template and the Azure CLI from the Azure Cloud shell. Bir Windows sanal makine oluşturmak için bkz: bir Resource Manager şablonundan bir Windows sanal makine oluşturma.To create a Windows virtual machine, see Create a Windows virtual machine from a Resource Manager template.

Şablonlara genel bakışTemplates overview

Azure Resource Manager şablonları altyapı ve Azure çözümünüzü yapılandırmasını tanımlayan JSON dosyalarıdır.Azure Resource Manager templates are JSON files that define the infrastructure and configuration of your Azure solution. Bir şablon kullanarak çözümünü yaşam döngüsü boyunca defalarca dağıtabilir ve kaynaklarınızın tutarlı bir durumda dağıtıldığından emin olabilirsiniz.By using a template, you can repeatedly deploy your solution throughout its lifecycle and have confidence your resources are deployed in a consistent state. Biçimi şablon ve nasıl oluşturulacağı hakkında daha fazla bilgi için bkz: hızlı başlangıç: Oluşturma ve Azure portalını kullanarak Azure Resource Manager şablonlarını dağıtma.To learn more about the format of the template and how you construct it, see Quickstart: Create and deploy Azure Resource Manager templates by using the Azure portal. Kaynak türleri için JSON söz dizimini görüntülemek üzere bkz. Azure Resource Manager şablonlarında kaynak tanımlama.To view the JSON syntax for resources types, see Define resources in Azure Resource Manager templates.

Sanal makine oluşturmaCreate a virtual machine

Bir Azure sanal makinesi oluşturma genellikle iki adımları içerir:Creating an Azure virtual machine usually includes two steps:

  1. Bir kaynak grubu oluşturun.Create a resource group. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.An Azure resource group is a logical container into which Azure resources are deployed and managed. Bir sanal makineden önce bir kaynak grubu oluşturulmalıdır.A resource group must be created before a virtual machine.
  2. Sanal makine oluşturur.Create a virtual machine.

Aşağıdaki örnek, bir VM oluşturur. bir Azure Hızlı Başlangıç şablonu.The following example creates a VM from an Azure Quickstart template. Yalnızca SSH kimlik doğrulaması, bu dağıtım için izin verilir.Only SSH authentication is allowed for this deployment. İstendiğinde içeriğini gibi kendi SSH ortak anahtarı değerini girin ~/.ssh/id_rsa.pub.When prompted, provide the value of your own SSH public key, such as the contents of ~/.ssh/id_rsa.pub. SSH anahtar çifti oluşturmak için ihtiyacınız varsa bkz oluşturmak ve azure'da Linux VM'ler için SSH anahtar çifti kullanma.If you need to create an SSH key pair, see How to create and use an SSH key pair for Linux VMs in Azure. Şablonun bir kopyasını şu şekildedir:Here is a copy of the template:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "projectName": {
      "type": "string",
      "metadata": {
        "description": "Specifies a name for generating resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the location for all resources."
      }
    },
    "adminUsername": {
      "type": "string",
      "metadata": {
        "description": "Specifies a username for the Virtual Machine."
      }
    },
    "adminPublicKey": {
      "type": "string",
      "metadata": {
        "description": "Specifies the SSH rsa public key file as a string. Use \"ssh-keygen -t rsa -b 2048\" to generate your SSH key pairs."
      }
    }
  },
  "variables": {
    "vNetName": "[concat(parameters('projectName'), '-vnet')]",
    "vNetAddressPrefixes": "10.0.0.0/16",
    "vNetSubnetName": "default",
    "vNetSubnetAddressPrefix": "10.0.0.0/24",
    "vmName": "[concat(parameters('projectName'), '-vm')]",
    "publicIPAddressName": "[concat(parameters('projectName'), '-ip')]",
    "networkInterfaceName": "[concat(parameters('projectName'), '-nic')]",
    "networkSecurityGroupName": "[concat(parameters('projectName'), '-nsg')]"
  },
  "resources": [
    {
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2018-11-01",
      "name": "[variables('networkSecurityGroupName')]",
      "location": "[parameters('location')]",
      "properties": {
        "securityRules": [
          {
            "name": "ssh_rule",
            "properties": {
              "description": "Locks inbound down to ssh default port 22.",
              "protocol": "Tcp",
              "sourcePortRange": "*",
              "destinationPortRange": "22",
              "sourceAddressPrefix": "*",
              "destinationAddressPrefix": "*",
              "access": "Allow",
              "priority": 123,
              "direction": "Inbound"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2018-11-01",
      "name": "[variables('publicIPAddressName')]",
      "location": "[parameters('location')]",
      "properties": {
        "publicIPAllocationMethod": "Dynamic"
      },
      "sku": {
        "name": "Basic"
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2018-11-01",
      "name": "[variables('vNetName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[variables('vNetAddressPrefixes')]"
          ]
        },
        "subnets": [
          {
            "name": "[variables('vNetSubnetName')]",
            "properties": {
              "addressPrefix": "[variables('vNetSubnetAddressPrefix')]"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2018-11-01",
      "name": "[variables('networkInterfaceName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks', variables('vNetName'))]",
        "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
      ],
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig1",
            "properties": {
              "privateIPAllocationMethod": "Dynamic",
              "publicIPAddress": {
                "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]"
              },
              "subnet": {
                "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vNetName'), variables('vNetSubnetName'))]"
              }
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2018-10-01",
      "name": "[variables('vmName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "Standard_D2s_v3"
        },
        "osProfile": {
          "computerName": "[variables('vmName')]",
          "adminUsername": "[parameters('adminUsername')]",
          "linuxConfiguration": {
            "disablePasswordAuthentication": true,
            "ssh": {
              "publicKeys": [
                {
                  "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
                  "keyData": "[parameters('adminPublicKey')]"
                }
              ]
            }
          }
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "Canonical",
            "offer": "UbuntuServer",
            "sku": "18.04-LTS",
            "version": "latest"
          },
          "osDisk": {
            "createOption": "fromImage"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
            }
          ]
        }
      }
    }
  ],
  "outputs": {
    "adminUsername": {
      "type": "string",
      "value": "[parameters('adminUsername')]"
    }
  }
}

CLI betiği çalıştırmak için seçin deneyin Azure Cloud Shell'i açmak için.To run the CLI script, Select Try it to open the Azure Cloud shell. Betik yapıştırmak için kabuk sağ tıklayın ve ardından yapıştırın:To paste the script, right-click the shell, and then select Paste:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
echo "Enter the location (i.e. centralus):" &&
read location &&
echo "Enter the project name (used for generating resource names):" &&
read projectName &&
echo "Enter the administrator username:" &&
read username &&
echo "Enter the SSH public key:" &&
read key &&
az group create --name $resourceGroupName --location "$location" &&
az group deployment create --resource-group $resourceGroupName --template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/101-vm-sshkey/azuredeploy.json --parameters projectName=$projectName adminUsername=$username adminPublicKey="$key" &&
az vm show --resource-group $resourceGroupName --name "$projectName-vm" --show-details --query publicIps --output tsv

Son Azure CLI komutu yeni oluşturulan VM'nin genel IP adresini gösterir.The last Azure CLI command shows the public IP address of the newly created VM. Sanal makineye bağlanmak için genel IP adresi gereklidir.You need the public IP address to connect to the virtual machine. Bu makalenin sonraki bölüme bakın.See the next section of this article.

Önceki örnekte, Github'da depolanmış bir şablon belirtildi.In the previous example, you specified a template stored in GitHub. Ayrıca indirin veya bir şablon oluşturmak ve ile yerel bir yol belirtin --template-file parametresi.You can also download or create a template and specify the local path with the --template-file parameter.

Bazı ek kaynaklar aşağıda verilmiştir:Here are some additional resources:

Sanal makineye bağlanmaConnect to virtual machine

Normal olarak sanal makinenize yönelik SSH kullanabilirsiniz.You can then SSH to your VM as normal. Önceki komutta kendi genel IP adresi sağlayın:Provide you own public IP address from the preceding command:

ssh <adminUsername>@<ipAddress>

Sonraki adımlarNext steps

Bu örnekte, temel bir Linux VM oluşturdunuz.In this example, you created a basic Linux VM. Daha karmaşık ortamları oluşturun ya da uygulama çerçeveleri içeren daha fazla için Resource Manager şablonları, Gözat Azure hızlı başlangıç şablonları.For more Resource Manager templates that include application frameworks or create more complex environments, browse the Azure Quickstart templates.

Şablonları oluşturma hakkında daha fazla bilgi için JSON söz dizimi ve dağıttığınız kaynak türleri için özellikleri görüntüleyin:To learn more about creating templates, view the JSON syntax and properties for the resources types you deployed: