Gyakorlat – Előfizetés-hatókörű erőforrás üzembe helyezése
Fontos
Ennek a gyakorlatnak az elvégzéséhez saját Azure-előfizetés szükséges, amely költségekkel járhat. Ha még nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes fiókot.
A Project Teddybear már javában működik, és az R&D csapata arra vár, hogy hozzáférést adjon az új Azure-előfizetéshez. Már létrehozta az előfizetést, de mielőtt hozzáférést adna a csapatnak, gondoskodnia kell arról, hogy csak olyan virtuális gépeket telepítsen, amelyek megfelelnek a csapat szabályzatainak. A csapat azt mondta, hogy nem szeretne F vagy G sorozatú virtuális gépeket üzembe helyezni.
Ebben a gyakorlatban létrehoz egy Bicep-sablont, amely a csapat szabályzatai alapján konfigurálja az előfizetést.
A folyamat során a következőt fogja elvégezni:
- Hozzon létre egy Bicep-sablont, amelyet egy előfizetés hatókörében szeretne üzembe helyezni.
- Adjon hozzá egy Azure Policy-definíciót és -hozzárendelést.
- Helyezze üzembe a sablont, és ellenőrizze az eredményt.
Ehhez a gyakorlathoz rendelkeznie kell engedéllyel az előfizetés-hatókörű erőforrások üzembe helyezéséhez. Ha nem tudja teljesíteni ezt a követelményt a jelenlegi Azure-fiókjával, ingyenes próbaverziót kaphat, és létrehozhat egy új Azure-előfizetést és -bérlőt. Másik lehetőségként kihagyhatja a gyakorlat üzembe helyezési lépéseit.
Ez a gyakorlat a Visual Studio Code Bicep-bővítményét használja. Telepítse ezt a bővítményt a Visual Studio Code-ban.
Előfizetés-hatókörű sablon létrehozása
Nyissa meg a Visual Studio Code-ot.
Hozzon létre egy main.bicep nevű új fájlt.
Mentse az üres fájlt, hogy a Visual Studio Code betöltse a Bicep-eszközt.
Választhatja a Fájlmentés>másként lehetőséget, vagy a Ctrl+S billentyűkombinációt a Windowsban (⌘+S macOS rendszeren). Ne feledje, hogy hová mentette a fájlt. Előfordulhat például, hogy létre szeretne hozni egy szkriptmappát , amelybe mentené.
Adja hozzá a következő tartalmat a main.bicep fájlhoz. Hamarosan üzembe helyezi a sablont. Célszerű a másolás és beillesztés helyett manuálisan begépelni, hogy az eszköz hogyan segít a Bicep-fájlok írásában.
targetScope = 'subscription'
Ez a kódsor tájékoztatja a Bicepet, hogy a sablon egy előfizetési hatókörben lesz üzembe helyezve.
Szabályzatdefiníció hozzáadása
Az imént hozzáadott sor alatt adja hozzá a következő változódefiníciót:
var policyDefinitionName = 'DenyFandGSeriesVMs'
A fájl alján adja hozzá a következő Azure Policy-definíciót:
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-01' = { name: policyDefinitionName properties: { policyType: 'Custom' mode: 'All' parameters: {} policyRule: { if: { allOf: [ { field: 'type' equals: 'Microsoft.Compute/virtualMachines' } { anyOf: [ { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_F*' } { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_G*' } ] } ] } then: { effect: 'deny' } } } }
Figyelje meg, hogy a szabályzatdefiníció csak azokra az erőforrásokra vonatkozik, ahol:
- Az erőforrás típusa egyenlő .
Microsoft.Compute/virtualMachines
- A
sku.name
tulajdonság vagy a következővelStandard_F
kezdődik: vagyStandard_G
.
Amikor olyan erőforrást próbál létrehozni, amely megfelel ezeknek a feltételeknek, az Azure megtagadja az erőforrás létrehozását.
Figyelmeztetés
Legyen óvatos, amikor a megtagadási szabályzat effektust használja a szabályzatdefiníciókhoz, különösen olyan széles hatókörökben, mint az előfizetések és a felügyeleti csoportok. Ha a definíció nem megfelelően lett létrehozva, váratlan hatásokkal járhat, amelyek kimaradásokhoz vezethetnek. Érdemesebb a naplózási szabályzat effektusával kezdeni, majd csak akkor váltson a megtagadási effektusra, ha már látta, hogy az egy adott időszak alatt jól működik.
A szabályzatdefiníciót az előfizetés hatókörében hozza létre. Ez azt jelenti, hogy a definíció üzembe helyezése után az előfizetés összes erőforráscsoportjában elérhető lesz.
- Az erőforrás típusa egyenlő .
A szabályzat hozzárendelése
A szabályzatdefiníciók csak az alkalmazásuk után lépnek érvénybe. Ebben a lépésben egy második előfizetés-hatókörű erőforrást fog üzembe helyezni, amely a szabályzatdefiníciót alkalmazza az előfizetésre.
policyDefinitionName
A változódefiníció alatt adja hozzá a következő változódefiníciót:var policyAssignmentName = 'DenyFandGSeriesVMs'
A fájl alján, a szabályzatdefiníciós erőforrás alatt adja hozzá a következő szabályzat-hozzárendelést:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Figyelje meg, hogy nem konfigurálja explicit módon a szabályzat-hozzárendelést úgy, hogy a teljes előfizetésre vonatkozzanak. A Bicep ezt megérti, mivel a sablon az előfizetés hatókörében lesz üzembe helyezve.
Mentse a fájl módosításait.
A sablon ellenőrzése
A sablonnak a következőképpen kell kinéznie:
targetScope = 'subscription'
var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
allOf: [
{
field: 'type'
equals: 'Microsoft.Compute/virtualMachines'
}
{
anyOf: [
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_F*'
}
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_G*'
}
]
}
]
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
name: policyAssignmentName
properties: {
policyDefinitionId: policyDefinition.id
}
}
Ha nem, másolja ki a példát, vagy módosítsa a sablont a példának megfelelően.
A sablon üzembe helyezése
Ha a sablont az Azure-ban szeretné üzembe helyezni, be kell jelentkeznie az Azure-fiókjába a Visual Studio Code termináljában. Győződjön meg arról, hogy telepítette az Azure CLI-eszközöket .
Válassza a Terminál menü Új terminál pontját. A terminálablak általában a képernyő alsó felében nyílik meg.
Ha a terminálablak jobb oldalán látható rendszerhéj bash, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.
Ha nem bash-rendszerhéjjelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a Git Bash lehetőséget.
A terminálhéjak listájában válassza a bash lehetőséget.
A terminálban lépjen arra a könyvtárra, ahová a sablont mentette. Ha például a sablont a sablonok mappájába mentette, használhatja ezt a parancsot:
cd templates
A Bicep telepítése
Futtassa a következő parancsot a Bicep legújabb verziójának biztosításához:
az bicep install && az bicep upgrade
Bejelentkezés az Azure-ba az Azure CLI használatával
A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:
az login
A megnyíló böngészőben jelentkezzen be az Azure-fiókjába.
A Visual Studio Code terminál megjeleníti a fiókhoz társított előfizetések listáját.
A listában keresse meg a gyakorlathoz használni kívánt előfizetést.
Ha kihagyta a listát a bejelentkezésből, az alábbi kódrészlet használatával ismét listázhatja az előfizetéseket.
az account list --output table
Állítsa be az alapértelmezett előfizetést az ebben a munkamenetben futtatott összes Azure CLI-parancshoz.
az account set --subscription "Your Subscription Name or ID"
A sablon Azure-ban való üzembe helyezéséhez jelentkezzen be az Azure-fiókjába a Visual Studio Code terminálból. Győződjön meg arról, hogy telepítette az Azure PowerShellt.
Válassza a Terminál menü Új terminál pontját. A terminálablak általában a képernyő alsó felében nyílik meg.
Ha a terminálablak jobb oldalán látható rendszerhéj PowerShell vagy pwsh, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.
Ha nem PowerShell vagy pwsh rendszerhéj jelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a PowerShellt.
A terminálhéjak listájában válassza a PowerShellt vagy a pwsh-t.
A terminálban lépjen arra a könyvtárra, ahová a sablont mentette. Ha például a sablont a sablonok mappájába mentette, használhatja ezt a parancsot:
Set-Location -Path templates
A Bicep parancssori felület telepítése
A Bicep Azure PowerShellből való használatához telepítse a Bicep CLI-t.
Bejelentkezés az Azure-ba az Azure PowerShell használatával
A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:
Connect-AzAccount
A megnyíló böngészőben jelentkezzen be az Azure-fiókjába.
A gyakorlathoz használni kívánt előfizetés azonosítójának lekéréséhez futtassa a következő parancsot:
Get-AzSubscription
Az előfizetések azonosítói a második oszlopban találhatók. Másolja ki a második oszlopot. Úgy néz ki, mint cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.
Állítsa be az alapértelmezett előfizetést az ebben a munkamenetben futtatott Összes Azure PowerShell-parancshoz.
Set-AzContext -SubscriptionId {Your subscription ID}
A sablon üzembe helyezése az Azure-ban
A Visual Studio Code terminálban helyezze üzembe a sablont az alábbi Azure CLI-parancsokkal:
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="sub-scope-"$today
az deployment sub create \
--name $deploymentName \
--location westus \
--template-file $templateFile
Figyelje meg, hogy az előfizetés-hatókörű üzembe helyezést a az deployment sub create
parancs használatával hozza létre ahelyett, hogy azt a az deployment group create
parancsot használna, amelyet esetleg használna.
A Visual Studio Code terminálban helyezze üzembe a sablont az alábbi Azure PowerShell-parancsokkal:
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "sub-scope-$today"
New-AzSubscriptionDeployment `
-Name $deploymentName `
-Location westus `
-TemplateFile $templateFile
Figyelje meg, hogy előfizetés-hatókörű üzembe helyezést hoz létre a New-AzSubscriptionDeployment
parancsmaggal, nem pedig a New-AzResourceGroupDeployment
használt parancsmaggal.
Azt is megfigyelheti, hogy kifejezetten megadja az üzembe helyezés nevét és helyét. Az Azure ezeket az információkat használja az üzembehelyezési metaadatok tárolására.
Tipp.
Az üzemelő példány neve tartalmazza a mai dátumot. Így kevésbé valószínű, hogy véletlenül ugyanazt a nevet fogja használni, mint egy másik üzembe helyezés.
Az üzembe helyezés befejezése eltarthat egy-két percig, majd megjelenik egy sikeres üzembe helyezés.
Feljegyzés
Ha az AuthorizationFailed kóddal ellátott hibaüzenet jelenik meg, valószínűleg nincs engedélye az előfizetés-hatókörű erőforrások üzembe helyezésére. Kérje meg az Azure-rendszergazdát, hogy adjon önnek engedélyeket. Ha nem tudja teljesíteni ezt a követelményt a jelenlegi Azure-fiókjával, ingyenes próbaverziót kaphat, és létrehozhat egy új Azure-előfizetést és -bérlőt.
Az üzemelő példány ellenőrzése
Az előfizetés-hatókörű üzemelő példányokat az Azure Portalon tekintheti meg. Ez hasznos lehet annak ellenőrzéséhez, hogy az üzembe helyezés sikeresen befejeződött-e, és hogy megvizsgálja az eredményeket.
Nyissa meg az Azure Portalt.
A bal oldali panelen válassza az Előfizetések lehetőséget.
Válassza ki előfizetését.
A Keresőmezőbe írja be az Üzembe helyezéseket, majd válassza az Üzembe helyezések menüpontot.
Az Üzembe helyezés neve oszlopban válassza ki az alhatókörrel kezdődő üzembe helyezést, hogy lássa, milyen erőforrások lettek üzembe helyezve.
Az üzembe helyezés részleteinek kiválasztásával bontsa ki. Ebben az esetben a két Azure Policy-erőforrás szerepel a listán.
Az erőforrások eltávolítása
Sikeresen üzembe helyezte az előfizetés-hatókörű erőforrásokat. A létrehozott szabályzaterőforrásokat az alábbi parancsok futtatásával távolíthatja el:
subscriptionId=$(az account show --query 'id' --output tsv)
az policy assignment delete --name 'DenyFandGSeriesVMs' --scope "/subscriptions/$subscriptionId"
az policy definition delete --name 'DenyFandGSeriesVMs' --subscription $subscriptionId
$subscriptionId = (Get-AzContext).Subscription.Id
Remove-AzPolicyAssignment -Name 'DenyFandGSeriesVMs' -Scope "/subscriptions/$subscriptionId"
Remove-AzPolicyDefinition -Name 'DenyFandGSeriesVMs' -SubscriptionId $subscriptionId
A következő gyakorlatban ugyanazokat a szabályzaterőforrásokat fogja újra üzembe helyezni. Ezek újra létrejönnek, de utána újra megtisztíthatja őket.