Azure erőforrások telepítése és kezelése a PowerShell Az moduljával

A modern IT infrastruktúra gerincét egyre inkább a felhőalapú szolgáltatások, mint az Azure, képezik. A dinamikusan változó igények, a gyors telepítés és a konzisztens konfigurációk biztosítása azonban manuálisan szinte lehetetlen. Itt jön képbe az automatizálás, és azon belül is a PowerShell Az modulja, amely a Microsoft Azure platformjának hatékony és rugalmas programozható felületét biztosítja. Ez a cikk átfogó útmutatót nyújt az Az modul telepítésétől kezdve a komplex erőforrások kezelésén át egészen a fejlett automatizálási technikákig.

Miért a PowerShell Az Modul?

A PowerShell egy robusztus parancssori felület (CLI) és szkriptnyelv, amelyet a Microsoft fejlesztett ki a rendszerfelügyeleti feladatok automatizálására. Az Az modul a PowerShell parancsmagok gyűjteménye, kifejezetten az Azure erőforrások kezelésére tervezve. Miért érdemes ezt választani?

  • Automatizálás és Szkriptelés: Lehetővé teszi komplex feladatok szkriptelését, minimalizálva az emberi hibákat és felgyorsítva a telepítési és konfigurációs folyamatokat.
  • Konzisztencia: Biztosítja, hogy az erőforrások mindig ugyanazzal a konfigurációval települjenek, ami elengedhetetlen a nagy méretű vagy sokféle környezetben.
  • Hatékonyság: Gyorsan és hatékonyan kezelhet nagyszámú Azure erőforrást.
  • Integráció: Könnyedén integrálható CI/CD (Continuous Integration/Continuous Deployment) pipeline-okba, automatizálva a fejlesztési és üzembe helyezési folyamatokat.
  • Rugalmasság: Széles körű funkcionalitást kínál, a virtuális gépektől a hálózatokon át az adatbázisokig szinte minden Azure szolgáltatást támogat.

Az Az Modul Telepítése és Beállítása

Mielőtt belevágnánk az Azure erőforrások kezelésébe, telepítenünk kell az Az modult. Győződjünk meg róla, hogy a PowerShell 5.1-es vagy újabb verziója fut a rendszerünkön Windows operációs rendszer esetén, illetve PowerShell Core (7.x) Linuxon vagy macOS-en.

Telepítési Lépések:

  1. Indítsa el a PowerShellt rendszergazdaként: Ez elengedhetetlen a modul sikeres telepítéséhez.
  2. Telepítse az Az modult: Futtassa a következő parancsot:
    Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force

    A -Scope CurrentUser azt jelenti, hogy csak az aktuális felhasználó számára települ a modul. Ha minden felhasználó számára elérhetővé szeretné tenni, használja a -Scope AllUsers paramétert (ekkor lehet, hogy további engedélyekre lesz szükség). A -Force paraméter felülírja a már meglévő verziót vagy figyelmeztetéseket.

  3. Ellenőrizze a telepítést:
    Get-Module -Name Az -ListAvailable

    Ennek meg kell jelennie a telepített Az modul listájában.

  4. Modul Frissítése: Időről időre érdemes frissíteni a modult, hogy hozzáférjünk a legújabb funkciókhoz és hibajavításokhoz:
    Update-Module -Name Az -Force

Bejelentkezés Azure-ba:

Miután telepítettük az Az modult, be kell jelentkeznünk az Azure fiókunkba. Ehhez használjuk a Connect-AzAccount parancsmagot:

Connect-AzAccount

Ez egy böngészőablakot nyit meg, ahol bejelentkezhet az Azure hitelesítő adataival. Sikeres bejelentkezés után a PowerShell konzolon megjelenik az alapértelmezett Azure előfizetés adatai.

Több Előfizetés Kezelése:

Ha több Azure előfizetéssel rendelkezik, kiválaszthatja azt, amellyel dolgozni szeretne:

Get-AzContext           # Megjeleníti az aktuális és elérhető kontextusokat
Select-AzSubscription -SubscriptionName "Az Ön előfizetésének neve"
# Vagy GUID azonosítóval:
Select-AzSubscription -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Alapvető Azure Erőforrások Kezelése

Az Azure erőforrások kezelésének alapja az erőforráscsoportok használata, amelyek logikai tárolók a kapcsolódó erőforrások számára.

Erőforráscsoportok Kezelése:

  • Létrehozás:
    New-AzResourceGroup -Name "MyResourceGroup" -Location "WestEurope"

    A -Name paraméter az erőforráscsoport nevét, a -Location pedig a földrajzi elhelyezkedését adja meg.

  • Lekérdezés:
    Get-AzResourceGroup -Name "MyResourceGroup"
    Get-AzResourceGroup               # Összes erőforráscsoport lekérdezése
  • Törlés:
    Remove-AzResourceGroup -Name "MyResourceGroup" -Force

    A -Force paraméter automatikusan megerősíti a törlést.

Virtuális Gépek (VMs) Kezelése:

A virtuális gépek az egyik leggyakrabban használt Azure szolgáltatás. A PowerShell az Az modullal lehetővé teszi a VM-ek teljes életciklusának kezelését.

Egy egyszerű VM létrehozása:

$resourceGroupName = "MyVMResourceGroup"
$location = "WestEurope"
$vmName = "MyWebAppVM"
$adminUsername = "azureuser"
$adminPassword = (ConvertTo-SecureString "P@ssw0rd1234!" -AsPlainText -Force)

# Erőforráscsoport létrehozása, ha még nem létezik
if (-not (Get-AzResourceGroup -Name $resourceGroupName -ErrorAction SilentlyContinue)) {
    New-AzResourceGroup -Name $resourceGroupName -Location $location
}

# Virtuális hálózat és alhálózat létrehozása
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Location $location -Name "MyVNet" -AddressPrefix "10.0.0.0/16"
$subnetConfig = Add-AzVirtualNetworkSubnetConfig -Name "MySubnet" -AddressPrefix "10.0.0.0/24" -VirtualNetwork $vnet
$vnet | Set-AzVirtualNetwork

# Nyilvános IP-cím létrehozása
$publicIp = New-AzPublicIpAddress -ResourceGroupName $resourceGroupName -Location $location -Name "MyVMIP" -AllocationMethod Dynamic

# Hálózati biztonsági csoport (NSG) létrehozása és szabály hozzáadása (pl. RDP)
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroupName -Location $location -Name "MyVMNSG"
Add-AzNetworkSecurityRuleConfig -Name "RDP" -NetworkSecurityGroup $nsg -Priority 100 -Direction Inbound -Access Allow -Protocol Tcp -SourceAddressPrefix "*" -SourcePortRange "*" -DestinationAddressPrefix "*" -DestinationPortRange 3389 | Set-AzNetworkSecurityGroup

# Hálózati interfész (NIC) létrehozása
$nic = New-AzNetworkInterface -ResourceGroupName $resourceGroupName -Location $location -Name "MyVMNic" -SubnetId $subnetConfig.Id -PublicIpAddressId $publicIp.Id -NetworkSecurityGroupId $nsg.Id

# VM konfigurációjának beállítása
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_DS1_v2" | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential (New-Object System.Management.Automation.PSCredential($adminUsername, $adminPassword)) | Set-AzVMSourceImage -Publisher "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2019-Datacenter" -Version "latest" | Add-AzVMNetworkInterface -Id $nic.Id

# VM létrehozása
New-AzVM -ResourceGroupName $resourceGroupName -Location $location -VM $vmConfig

Ez egy komplexebb példa, amely megmutatja, hogyan lehet a kapcsolódó erőforrásokat (VNet, Subnet, Public IP, NSG, NIC) is konfigurálni a VM létrehozása előtt. A Set-AzVMSourceImage parancsmaggal megadhatjuk az operációs rendszert, a Set-AzVMOperatingSystem pedig a Windows vagy Linux specifikus beállításokat.

VM Kezelése:

  • Elindítás: Start-AzVM -ResourceGroupName "MyVMResourceGroup" -Name "MyWebAppVM"
  • Leállítás: Stop-AzVM -ResourceGroupName "MyVMResourceGroup" -Name "MyWebAppVM" -Force
  • Újraindítás: Restart-AzVM -ResourceGroupName "MyVMResourceGroup" -Name "MyWebAppVM"
  • Törlés: Remove-AzVM -ResourceGroupName "MyVMResourceGroup" -Name "MyWebAppVM" -Force

Tárhely Fiókok (Storage Accounts) Kezelése:

Az Azure Storage robusztus és skálázható tárhelymegoldást kínál különböző típusú adatok (blobok, fájlok, táblák, üzenetsorok) tárolására.

  • Létrehozás:
    New-AzStorageAccount -ResourceGroupName "MyResourceGroup" -Name "mystorageaccount001" -Location "WestEurope" -SkuName "Standard_LRS" -Kind "StorageV2"

    A -SkuName paraméter a replikáció típusát (pl. LRS, GRS), a -Kind pedig a fiók típusát (pl. StorageV2 a legtöbb felhasználásra) határozza meg.

  • Blob konténer létrehozása és fájl feltöltése:
    $storageAccount = Get-AzStorageAccount -ResourceGroupName "MyResourceGroup" -Name "mystorageaccount001"
    $ctx = $storageAccount.Context
    New-AzStorageContainer -Name "myblobs" -Context $ctx
    Set-AzStorageBlobContent -Container "myblobs" -File "C:pathtoyourfile.txt" -Blob "mydata.txt" -Context $ctx

Haladó Funkciók és Automatizálás

Azure Resource Manager (ARM) Sablonok és PowerShell

Az ARM sablonok (Infrastructure as Code) lehetővé teszik az Azure infrastruktúra kódként történő definiálását JSON formátumban. A PowerShell Az moduljával telepíthetjük ezeket a sablonokat, biztosítva a konzisztens és ismételhető telepítéseket.

  • ARM sablon telepítése:
    New-AzResourceGroupDeployment -ResourceGroupName "MyResourceGroup" -TemplateFile "C:pathtoyourtemplate.json" -TemplateParameterFile "C:pathtoyourparameters.json"

    A -TemplateFile paraméter megadja a JSON sablonfájl elérési útját, a -TemplateParameterFile pedig a paramétereket tartalmazó fájlt. Használhatja a -TemplateParameterObject paramétert is, ha közvetlenül PowerShell objektumként szeretné átadni a paramétereket.

Azure Automation

Az Azure Automation egy felhőalapú szolgáltatás, amely lehetővé teszi a hosszú ideig futó, ismétlődő feladatok automatizálását. PowerShell runbookokat futtathatunk benne, amelyek az Az modult használják az Azure erőforrások kezelésére.

  • Hozzon létre egy Automation fiókot és egy PowerShell runbookot.
  • A runbookban importálja az Az modulokat (például Import-Module Az.Compute, Import-Module Az.Storage).
  • Használja a Connect-AzAccount -Identity parancsot a Managed Identity alapú hitelesítéshez a runbookon belül, ami biztonságosabb, mint a jelszavak kezelése.

CI/CD Integráció

A PowerShell szkriptek kulcsfontosságúak a CI/CD pipeline-okba való integrációban, legyen szó Azure DevOpsról vagy GitHub Actionsről. Egy CI/CD folyamatban a PowerShell szkriptek felelhetnek az infrastruktúra telepítéséért, az alkalmazás telepítéséért, a konfigurációk frissítéséért vagy a tesztek futtatásáért.

  • Például egy Azure DevOps pipeline-ban a Azure PowerShell task segítségével futtathat PowerShell szkripteket.
  • GitHub Actions esetén használhatja az azure/login@v1 actiont a bejelentkezéshez, majd egy run lépésben futtathatja a PowerShell szkriptjét.

Gyakori Feladatok és Tippek

Listázás és Szűrés:

Szinte minden Get-Az parancsmag képes listázni az erőforrásokat. A Where-Object (rövidítve Where) parancsmaggal szűrheti az eredményeket:

Get-AzVM | Where-Object {$_.ResourceGroupName -eq "MyVMResourceGroup" -and $_.Location -eq "WestEurope"}

Kimenet Formázása:

A PowerShell kimenetét könnyen formázhatja a jobb olvashatóság érdekében:

  • Táblázat: Get-AzResourceGroup | Format-Table Name, Location
  • Listázás: Get-AzVM -Name "MyWebAppVM" | Format-List *
  • JSON/CSV: Get-AzStorageAccount | ConvertTo-Json | Set-Content "storage_accounts.json"

Hibakezelés:

Mindig kezelje a hibákat a szkriptjeiben, hogy azok robusztusabbak legyenek:

Try {
    New-AzResourceGroup -Name "ExistingResourceGroup" -Location "WestEurope" -ErrorAction Stop
} Catch {
    Write-Error "Hiba történt az erőforráscsoport létrehozásakor: $($_.Exception.Message)"
}

Moduláris Szkriptelés:

Nagyobb projekteknél bontsa a szkripteket kisebb, újrafelhasználható modulokra vagy funkciókra. Ez javítja az olvashatóságot és a karbantarthatóságot.

Biztonság és Engedélyek (RBAC)

Az Azure erőforrások kezelésekor a biztonság kiemelten fontos. A szerepköralapú hozzáférés-vezérlés (RBAC) lehetővé teszi, hogy pontosan szabályozza, ki férhet hozzá melyik erőforráshoz, és milyen jogosultságokkal.

A PowerShell-lel hozzárendelhet szerepköröket felhasználókhoz, csoportokhoz vagy szolgáltatásnevekhez:

New-AzRoleAssignment -SignInName "[email protected]" -RoleDefinitionName "Contributor" -ResourceGroupName "MyResourceGroup"

Szolgáltatásnevek (Service Principals) és Felügyelt Identitások (Managed Identities):

Automatizált szkriptek vagy alkalmazások számára javasolt a szolgáltatásnevek vagy még inkább a felügyelt identitások használata hitelesítésre, mivel ezek biztonságosabbak, mint a felhasználói jelszavak tárolása. A Connect-AzAccount támogatja a szolgáltatásnévvel történő bejelentkezést:

Connect-AzAccount -ServicePrincipal -TenantId "your-tenant-id" -ApplicationId "your-app-id" -CertificateThumbprint "your-cert-thumbprint"

vagy titkos kulccsal:

Connect-AzAccount -ServicePrincipal -TenantId "your-tenant-id" -ApplicationId "your-app-id" -Credential (New-Object System.Management.Automation.PSCredential("your-app-id", (ConvertTo-SecureString "your-secret" -AsPlainText -Force)))

Hibaelhárítás és Jó Gyakorlatok

Részletes Hibalogok:

A $ErrorActionPreference változó beállítása Stop értékre segít a hibák korai felismerésében és kezelésében. Használja a -Debug és -Verbose paramétereket a parancsmagokkal a részletesebb kimenetért.

Verziókövetés:

A PowerShell szkripteket is kezelje verziókövető rendszerben (pl. Git), ahogy a többi kódot. Ez biztosítja a változások nyomon követhetőségét és a csapatmunka hatékonyságát.

Idempotencia:

Írjon idempotens szkripteket, azaz olyanokat, amelyek többszöri futtatás esetén is ugyanazt az eredményt produkálják anélkül, hogy hibát generálnának vagy duplikálnák az erőforrásokat. Ellenőrizze az erőforrások létezését a létrehozás előtt, és csak akkor hajtsa végre a műveletet, ha szükséges.

PowerShell profil:

A PowerShell profil ($PROFILE) fájljában tárolhatja azokat a parancsokat, amelyekre a PowerShell indításakor szükség van, például aliasokat, funkciókat, vagy a gyakran használt változókat.

Összefoglalás

Az Azure erőforrások telepítése és kezelése a PowerShell Az moduljával kulcsfontosságú készség minden felhőmérnök és rendszergazda számára. A modul hatalmas rugalmasságot és vezérlést biztosít, lehetővé téve a komplex infrastruktúrák automatizált, konzisztens és hatékony felügyeletét. A bevezető telepítéstől az ARM sablonok és CI/CD pipeline-ok használatáig a PowerShell az Az modullal egy nélkülözhetetlen eszköz, amely jelentősen növeli a termelékenységet és csökkenti a hibák esélyét az Azure felhőben. Fejlessze szkriptelési készségeit, és fedezze fel az automatizálásban rejlő hatalmas potenciált!

Leave a Reply

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük