Zřízení virtuálního počítače s Linuxem pomocí Bicep
Základním prvkem šablony Bicep je resource
, který určuje prostředek Azure. Každý prostředek obsahuje sadu obecných vlastností a vlastností specifických pro prostředky. Například šablona použitá v následujícím příkladu popisuje virtuální síť Azure. Zatímco vlastnosti názvu a umístění jsou obecné, addressPrefix
je specifické pro prostředek. Řetězec Microsoft.Network/virtualNetworks@2021-05-01
vedle prostředku určuje jeho verzi rozhraní API a virtualNetwork
položka představuje symbolický název, který poskytuje způsob, jak odkazovat na prostředek v rámci šablony.
Kromě elementu resource
obsahuje následující ukázková šablona také element parametru, který umožňuje přiřadit název virtuální síti během nasazování. Pokud v tuto chvíli nepřiřazujete název, použije se výchozí hodnota lnx-bcp-vnet
. Element popisu je příkladem dekorátoru, jak je označeno úvodním @
znakem. Jejím účelem je popsat roli parametru a její výstup se zobrazí vedle textového pole parametru, když pomocí webu Azure Portal zkontrolujete nebo nasadíte odpovídající šablonu Azure Resource Manageru. Pomocí následujícího příkladu kódu zřiďte virtuální počítač s Linuxem pomocí Bicep:
@description('Name of the virtual network')
param virtualNetworkName string = 'lnx-bcp-vnet'
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
addressPrefix
]
}
}
}
Nasazení virtuálního počítače s Linuxem pomocí šablon Bicep
Práce s Bicep zahrnuje vytváření a nasazování šablon. Ke zjednodušení a vylepšení prostředí pro vytváření použijte Visual Studio Code s rozšířením Bicep. Stejné rozšíření také podporuje nasazení založená na Bicep. Pokud dáváte přednost aktivaci nasazení z příkazového řádku nebo jako součást skriptované úlohy, můžete rozhraní příkazového řádku Bicep nainstalovat a použít jako samostatný nástroj nebo ho použít přímo z relace Azure CLI. Azure CLI nainstaluje rozhraní příkazového řádku Bicep automaticky během prvního vyvolání libovolného az bicep
příkazu. Chcete-li však provést ruční instalaci Bicep, spusťte az bicep install
.
Proces zřizování virtuálního počítače Azure s Linuxem pomocí Bicep obvykle zahrnuje následující posloupnost kroků vysoké úrovně:
- Identifikace vhodné image virtuálního počítače
- Určete vhodnou velikost virtuálního počítače.
- Vytvoření šablony Bicep
- Zahajte nasazení šablony Bicep.
Když nasadíte šablony Bicep, úloha označovaná jako transpilace je automaticky převede na ekvivalentní šablony Azure Resource Manageru. Převod mezi formáty Bicep a Azure Resource Manager můžete provést také spuštěním bicep build
příkazů a bicep decompile
příkazů.
Pokud chcete identifikovat vhodnou image a velikost virtuálního počítače, postupujte podle kroků popsaných v předchozích lekcích tohoto modulu. Tato lekce se zaměřuje na úlohy specifické pro Bicep.
Vytvoření šablony Bicep
Pokud chcete vytvořit šablonu Bicep, začněte spuštěním relace editoru Visual Studio Code s nainstalovaným rozšířením Bicep. Dále vytvořte soubor s názvem main.bicep. Do souboru přidejte následující obsah a uložte změnu:
Poznámka:
Názvy souborů, které zvolíte pro soubory Bicep, jsou libovolné, i když je vhodné zvolit název, který odpovídá obsahu nebo účelu souboru. Pro příponu souboru byste měli použít .bicep .
@description('The name of your virtual machine')
param vmName string = 'lnx-bcp-vm'
@description('Username for the virtual machine')
param adminUsername string
@description('Type of authentication to use on the virtual machine')
@allowed([
'sshPublicKey'
'password'
])
param authenticationType string = 'password'
@description('SSH Key or password for the virtual machine')
@secure()
param adminPasswordOrKey string
@description('Unique DNS Name for the Public IP used to access the virtual machine')
param dnsLabelPrefix string = toLower('${vmName}-${uniqueString(resourceGroup().id)}')
@description('The allowed Linux distribution and version for the VM')
@allowed([
'Ubuntu-2204'
])
param ubuntuOSVersion string = 'Ubuntu-2204'
@description('Location for all resources')
param location string = resourceGroup().location
@description('The size of the VM')
param vmSize string = 'Standard_F4s'
@description('Name of the virtual network')
param virtualNetworkName string = 'lnx-bcp-vnet'
@description('Name of the subnet in the virtual network')
param subnetName string = 'subnet0'
@description('Name of the network security group')
param networkSecurityGroupName string = 'lnx-bcp-nsg'
var imageReference = {
'Ubuntu-2204': {
publisher: 'Canonical'
offer: '0001-com-ubuntu-server-jammy'
sku: '22_04-lts-gen2'
version: 'latest'
}
}
var publicIPAddressName = '${vmName}-pip'
var networkInterfaceName = '${vmName}-nic'
var osDiskType = 'Standard_LRS'
var subnetAddressPrefix = '10.3.0.0/24'
var addressPrefix = '10.3.0.0/16'
var linuxConfiguration = {
disablePasswordAuthentication: true
ssh: {
publicKeys: [
{
path: '/home/${adminUsername}/.ssh/authorized_keys'
keyData: adminPasswordOrKey
}
]
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2021-05-01' = {
name: networkInterfaceName
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
subnet: {
id: subnet.id
}
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIPAddress.id
}
}
}
]
networkSecurityGroup: {
id: networkSecurityGroup.id
}
}
}
resource networkSecurityGroup 'Microsoft.Network/networkSecurityGroups@2021-05-01' = {
name: networkSecurityGroupName
location: location
properties: {
securityRules: [
{
name: 'ssh'
properties: {
priority: 1000
protocol: 'Tcp'
access: 'Allow'
direction: 'Inbound'
sourceAddressPrefix: '*'
sourcePortRange: '*'
destinationAddressPrefix: '*'
destinationPortRange: '22'
}
}
]
}
}
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-05-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
addressPrefix
]
}
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2021-05-01' = {
parent: virtualNetwork
name: subnetName
properties: {
addressPrefix: subnetAddressPrefix
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
resource publicIPAddress 'Microsoft.Network/publicIPAddresses@2021-05-01' = {
name: publicIPAddressName
location: location
sku: {
name: 'Basic'
}
properties: {
publicIPAllocationMethod: 'Dynamic'
publicIPAddressVersion: 'IPv4'
dnsSettings: {
domainNameLabel: dnsLabelPrefix
}
idleTimeoutInMinutes: 4
}
}
resource vm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
name: vmName
location: location
properties: {
hardwareProfile: {
vmSize: vmSize
}
storageProfile: {
osDisk: {
createOption: 'FromImage'
managedDisk: {
storageAccountType: osDiskType
}
}
imageReference: imageReference[ubuntuOSVersion]
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface.id
}
]
}
osProfile: {
computerName: vmName
adminUsername: adminUsername
adminPassword: adminPasswordOrKey
linuxConfiguration: ((authenticationType == 'password') ? null : linuxConfiguration)
}
securityProfile: json('null')
}
}
output adminUsername string = adminUsername
output fqdn string = publicIPAddress.properties.dnsSettings.fqdn
output sshCommand string = 'ssh ${adminUsername}@${publicIPAddress.properties.dnsSettings.fqdn}'
Poznámka:
Tato šablona je založená na obsahu šablon Azure Pro rychlý start úložiště GitHub.
Zahájení nasazení šablony Bicep
Po uložení souboru main.bicep můžete pokračovat v nasazení založeném na šabloně. Nejprve na místním počítači spusťte relaci Azure CLI a spusťte az login
ověření. Budete muset zadat přihlašovací údaje uživatele s dostatečnými oprávněními ke zřízení prostředků ve vašem předplatném Azure. V dalším kroku změňte aktuální adresář na adresář, ve kterém se nachází soubor main.bicep . Případně můžete spustit relaci Prostředí Bash služby Azure Cloud Shell a tento soubor nahrát do svého domovského adresáře v prostředí Azure Cloud Shell.
Potom spuštěním následujícího příkazu z ověřené relace Azure CLI vytvořte skupinu prostředků, která bude obsahovat všechny prostředky, které jsou součástí následného nasazení:
az group create --name rg-lnx-bcp --location eastus
Než budete pokračovat, můžete se ujistit, že používáte nejnovější verzi rozhraní příkazového řádku Bicep spuštěním následujícího příkazu:
az bicep upgrade
Nakonec spusťte následující příkaz:
az deployment group create --resource-group rg-lnx-bcp --template-file main.bicep --parameters adminUsername=azureuser
Poznámka:
Tento příkaz zahrnuje --parameters
přepínač, který v tomto případě nastaví název místního správce pro virtuální počítač Azure, který nasazujete. Azure CLI vás vyzve k zadání odpovídajícího hesla, protože výchozí hodnota parametru adminPasswordOrKey
není nastavená.
Virtuální počítač Azure by měl začínat krátce, obvykle během několika minut. Pokud se k němu chcete připojit, identifikujte plně kvalifikovaný název domény (FQDN) přidružený k jeho síťovému rozhraní tak, že zkontrolujete výstup, který nasazení vygeneruje. Případně můžete použít shCommand
hodnotu. Po zobrazení výzvy zadejte nově nastavené heslo pro ověření při navazování připojení SSH.
Pokud jste nezaznamenali výstupní hodnoty nasazení Bicep, můžete je znovu zobrazit spuštěním následujícího příkazu:
az deployment group show \
--resource-group rg-lnx-bcp \
--name main \
--query properties.outputs
Výstup ve formátu JSON by měl vypadat podobně jako v následujícím obsahu:
{
"adminUsername": {
"type": "String",
"value": "azureuser"
},
"fqdn": {
"type": "String",
"value": "lnx-bcp-vm-example.eastus.cloudapp.azure.com"
},
"sshCommand": {
"type": "String",
"value": "ssh azureuser@lnx-bcp-vm-example.eastus.cloudapp.azure.com"
}
}