Azure Resource Manager şablonlarıyla Linux sanal makinesi oluşturma

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Azure Resource Manager şablonu ve Azure Cloud Shell'den Azure CLI kullanarak Linux sanal makinesi (VM) oluşturmayı öğrenin. Windows sanal makinesi oluşturmak için bkz . Resource Manager şablonundan Windows sanal makinesi oluşturma.

Alternatif olarak, şablonu Azure portalından dağıtabilirsiniz. Şablonu portalda açmak için Azure'a Dağıt düğmesini seçin.

Button to deploy the Resource Manager template to Azure.

Şablonlara genel bakış

Azure Resource Manager şablonları, Azure çözümünüzün altyapısını ve yapılandırmasını tanımlayan JSON dosyalarıdır. 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. Şablonun biçimi ve nasıl oluşturulduğu hakkında daha fazla bilgi edinmek için bkz . Hızlı Başlangıç: Azure portalını kullanarak Azure Resource Manager şablonları oluşturma ve dağıtma. Kaynak türleri için JSON söz dizimini görüntülemek üzere bkz. Azure Resource Manager şablonlarında kaynak tanımlama.

Hızlı Başlangıç şablonu

Not

Sağlanan şablon varsayılan olarak bir Azure 2. Nesil VM oluşturur.

Not

Hızlı başlangıç şablonu kullanılırken varsayılan olarak yalnızca SSH kimlik doğrulaması etkinleştirilir. İstendiğinde, ~/.ssh/id_rsa.pub içeriği gibi kendi SSH ortak anahtarınızın değerini sağlayın.

SSH anahtar çifti yoksa Azure'daki Linux VM'leri için bir SSH anahtar çifti oluşturun ve kullanın.

Hızlı başlangıç şablonunu panonuza eklemek için Kopyala'ya tıklayın:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-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."
      }
    },
    "vmSize": {
      "type": "string",
      "defaultValue": "Standard_D2s_v3",
      "metadata": {
        "description": "description"
      }
    }
  },
  "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')]",
    "networkSecurityGroupName2": "[concat(variables('vNetSubnetName'), '-nsg')]"
  },
  "resources": [
    {
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2020-05-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": "2020-05-01",
      "name": "[variables('publicIPAddressName')]",
      "location": "[parameters('location')]",
      "properties": {
        "publicIPAllocationMethod": "Dynamic"
      },
      "sku": {
        "name": "Basic"
      }
    },
    {
      "comments": "Simple Network Security Group for subnet [variables('vNetSubnetName')]",
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2020-05-01",
      "name": "[variables('networkSecurityGroupName2')]",
      "location": "[parameters('location')]",
      "properties": {
        "securityRules": [
          {
            "name": "default-allow-22",
            "properties": {
              "priority": 1000,
              "access": "Allow",
              "direction": "Inbound",
              "destinationPortRange": "22",
              "protocol": "Tcp",
              "sourceAddressPrefix": "*",
              "sourcePortRange": "*",
              "destinationAddressPrefix": "*"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2020-05-01",
      "name": "[variables('vNetName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName2'))]"
      ],
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[variables('vNetAddressPrefixes')]"
          ]
        },
        "subnets": [
          {
            "name": "[variables('vNetSubnetName')]",
            "properties": {
              "addressPrefix": "[variables('vNetSubnetAddressPrefix')]",
              "networkSecurityGroup": {
                "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName2'))]"
              }
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2020-05-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": "2021-11-01",
      "name": "[variables('vmName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
      ],
      "properties": {
        "hardwareProfile": {
          "vmSize": "[parameters('vmSize')]"
        },
        "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": "0001-com-ubuntu-server-jammy",
            "sku": "22_04-lts-gen2",
            "version": "latest"
          },
          "osDisk": {
            "createOption": "fromImage"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
            }
          ]
        }
      }
    }
  ]
}

Ayrıca bir şablon indirebilir veya oluşturabilir ve parametresiyle --template-file yerel yolu belirtebilirsiniz.

Azure CLI ile hızlı başlangıç şablonu VM'sini oluşturma

Hızlı başlangıç şablonu aldıktan veya oluşturduktan sonra Azure CLI'yı kullanarak bu şablonla bir VM oluşturun.

Aşağıdaki komut, kullanıcıdan birkaç giriş parçası istemektedir. Bu modüller şunlardır:

  • Kaynak Grubunun Adı (resourceGroupName)
  • VM'yi barındıran Azure veri merkezinin konumu (konum)
  • VM ile ilgili kaynaklar için bir ad (projectName)
  • Yönetici kullanıcının kullanıcı adı (kullanıcı adı)
  • VM'nin terminale erişmek için ortak bir SSH anahtarı (anahtar)

Azure sanal makinesi oluşturmak için bir kaynak grubu gerekir. Hızlı başlangıç şablonları, işlemin bir parçası olarak kaynak grubu oluşturmayı içerir.

CLI betiğini çalıştırmak için CloudShell'i Aç'a tıklayın. Azure CloudShell'e erişiminiz olduğunda, komutu kopyalamak için Kopyala'ya tıklayın, kabuğa sağ tıklayın ve ardından Yapıştır'ı seçin.

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 deployment group create --resource-group $resourceGroupName --template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/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

Komuttaki son satırda yeni oluşturulan VM'nin genel IP adresi gösterilir. Sanal makineye bağlanmak için genel IP adresine ihtiyacınız vardır.

Sanal makineye bağlanma

Ardından SSH'yi vm'nize normal şekilde ekleyebilirsiniz. Önceki komuttan kendi genel IP adresinizi belirtin:

ssh <adminUsername>@<ipAddress>

Diğer şablonlar

Bu örnekte, temel bir Linux VM oluşturdunuz. Uygulama çerçeveleri içeren veya daha karmaşık ortamlar oluşturan daha fazla Resource Manager şablonu için Azure Hızlı Başlangıç Şablonları'na göz atın.

Şablon oluşturma hakkında daha fazla bilgi edinmek için dağıtmış olduğunuz kaynak türlerinin JSON söz dizimini ve özelliklerini görüntüleyin:

Sonraki adımlar