Quickstart: Een Azure Blueprint definiëren en toewijzen met Azure CLI
Als u leert hoe u blauwdrukken maakt en toewijst, kunnen er algemene patronen worden gedefinieerd voor de ontwikkeling van herbruikbare en snel implementeerbare configuraties op basis van Azure Resource Manager-sjablonen (ARM-sjablonen), beleid, beveiliging en meer. In deze zelfstudie leert u hoe u Azure Blueprints gebruikt om algemene taken uit te voeren met betrekking tot het maken, publiceren en toewijzen van een blauwdruk binnen uw organisatie, zoals:
Vereisten
- Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
- Als u deze nog niet eerder Azure Blueprints gebruikt, registreert u de resourceprovider via Azure CLI met
az provider register --namespace Microsoft.Blueprint.
Azure Cloud Shell gebruiken
Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde opdrachten van Cloud Shell gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.
Om Azure Cloud Shell op te starten:
| Optie | Voorbeeld/koppeling |
|---|---|
| Selecteer Nu proberen in de rechterbovenhoek van een codeblok. Als u Uitproberen selecteert, wordt de code niet automatisch gekopieerd naar Cloud Shell. | ![]() |
| Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. | ![]() |
| Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. | ![]() |
Om de code in dit artikel in Azure Cloud Shell uit te voeren:
Start Cloud Shell.
Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.
Plak de code in de Cloud Shell-sessie door CTRL+Shift+V te selecteren in Windows en Linux of door Cmd+Shift+V op macOS te selecteren.
Selecteer Invoeren om de code uit te voeren.
De Blueprint-extensie toevoegen
De extensie moet worden toegevoegd om Azure CLI in te schakelen voor het beheren van blauwdrukdefinities en -toewijzingen. Deze extensie werkt overal waar Azure CLI kan worden gebruikt, met inbegrip van bash in Windows 10, Cloud Shell (zowel zelfstandige als in de portal), de Azure CLI Docker-installatiekopie, of lokaal geïnstalleerd.
Controleer of de meest recente versie van Azure CLI is geïnstalleerd (minimaal 2.0.76). Als deze nog niet is geïnstalleerd, volgt u deze instructies op.
In de gewenste Azure CLI-omgeving kunt u deze importeren met de volgende opdracht:
# Add the Blueprint extension to the Azure CLI environment az extension add --name blueprintControleer of de extensie is geïnstalleerd en of deze de verwachte versie heeft (ten minste 0.1.0):
# Check the extension list (note that you may have other extensions installed) az extension list # Run help for extension options az blueprint -h
Een blauwdruk maken
De eerste stap bij het definiëren van een standaardpatroon voor naleving bestaat uit het samenstellen van een blauwdruk uit de beschikbare resources. U maakt een blauwdruk met de naam MyBlueprint om de rol en de beleidstoewijzingen voor het abonnement te configureren. Vervolgens voegt u een resourcegroep en een ARM-sjabloon toe en voegt u een roltoewijzing aan de resourcegroep toe.
Notitie
Wanneer u de Azure CLI gebruikt, wordt het object blauwdruk eerst gemaakt. Voor elk artefact dat wordt toegevoegd en parameters bevat, moeten de parameters vooraf worden gedefinieerd in de eerste blauwdruk.
Maak het eerste blauwdruk object. De parameter parameters accepteert een JSON-bestand dat alle blauwdrukparameters bevat. De parameters worden tijdens het toewijzen ingesteld en gebruikt door de artefacten die in latere stappen worden toegevoegd.
JSON-bestand - blueprintparms.json
{ "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_ZRS", "Premium_LRS" ], "metadata": { "displayName": "storage account type.", "description": null } }, "tagName": { "type": "string", "metadata": { "displayName": "The name of the tag to provide the policy assignment.", "description": null } }, "tagValue": { "type": "string", "metadata": { "displayName": "The value of the tag to provide the policy assignment.", "description": null } }, "contributors": { "type": "array", "metadata": { "description": "List of AAD object IDs that is assigned Contributor role at the subscription", "strongType": "PrincipalId" } }, "owners": { "type": "array", "metadata": { "description": "List of AAD object IDs that is assigned Owner role at the resource group", "strongType": "PrincipalId" } } }Azure CLI-opdracht
# Login first with az login if not using Cloud Shell # Create the blueprint object az blueprint create \ --name 'MyBlueprint' \ --description 'This blueprint sets tag policy and role assignment on the subscription, creates a ResourceGroup, and deploys a resource template and role assignment to that ResourceGroup.' \ --parameters blueprintparms.jsonNotitie
Gebruik de bestandsnaam blueprint.json bij het importeren van uw blauwdrukdefinities. Deze bestandsnaam wordt gebruikt bij het aanroepen van az blueprint import.
Het blauwdrukobject wordt standaard gemaakt in het standaardabonnement. Als u de beheergroep wilt opgeven, gebruikt u de parameter beheergroep. Als u het abonnement wilt opgeven, gebruikt u de parameter abonnement.
Voeg de resourcegroep voor de opslagartefacten toe aan de definitie.
az blueprint resource-group add \ --blueprint-name 'MyBlueprint' \ --artifact-name 'storageRG' \ --description 'Contains the resource template deployment and a role assignment.'Voeg de roltoewijzing toe aan het abonnement. In het volgende voorbeeld worden de principal-identiteiten aan wie de opgegeven rol is verleend, geconfigureerd voor een parameter die wordt ingesteld tijdens de blauwdruktoewijzing. In dit voorbeeld wordt de ingebouwde rol van Inzender met een GUID van
b24988ac-6180-42a0-ab88-20f7382dd24cgebruikt.az blueprint artifact role create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'roleContributor' \ --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c' \ --principal-ids "[parameters('contributors')]"Voeg de beleidstoewijzing toe aan het abonnement. In dit voorbeeld wordt het ingebouwde beleid Tag met standaardwaarde op resourcegroepen toepassen met een GUID van
49c88fc8-6fd1-46fd-a676-f12d1d3a4c71gebruikt.JSON-bestand - artifacts\policyTags.json
{ "tagName": { "value": "[parameters('tagName')]" }, "tagValue": { "value": "[parameters('tagValue')]" } }Azure CLI-opdracht
az blueprint artifact policy create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'policyTags' \ --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \ --display-name 'Apply tag and its default value to resource groups' \ --description 'Apply tag and its default value to resource groups' \ --parameters artifacts\policyTags.jsonNotitie
Wanneer u
az blueprintop een Mac gebruikt, vervangt u door\voor/parameterwaarden die het pad bevatten. In dit geval wordt de waarde voor parametersartifacts/policyTags.json.
Voeg nog een beleidstoewijzing toe voor de Storage-tag (gebruik hierbij de parameter storageAccountType opnieuw) aan het abonnement. Deze aanvullende beleidstoewijzingsartefact laat zien dat een in de blauwdruk gedefinieerde parameter door meer dan één artefact kan worden gebruikt. In dit voorbeeld wordt storageAccountType gebruikt voor het instellen van een tag op de resourcegroep. Deze waarde geeft informatie over het opslagaccount dat in de volgende stap wordt gemaakt. In dit voorbeeld wordt het ingebouwde beleid Tag met standaardwaarde op resourcegroepen toepassen met een GUID van
49c88fc8-6fd1-46fd-a676-f12d1d3a4c71gebruikt.JSON-bestand-artifacts\policyStorageTags.json
{ "tagName": { "value": "StorageType" }, "tagValue": { "value": "[parameters('storageAccountType')]" } }Azure CLI-opdracht
az blueprint artifact policy create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'policyStorageTags' \ --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \ --display-name 'Apply storage tag to resource group' \ --description 'Apply storage tag and the parameter also used by the template to resource groups' \ --parameters artifacts\policyStorageTags.jsonNotitie
Wanneer u
az blueprintop een Mac gebruikt, vervangt u door\voor/parameterwaarden die het pad bevatten. In dit geval wordt de waarde voor parametersartifacts/policyStorageTags.json.
Voeg een sjabloon toe onder resourcegroep. De parameter template voor een ARM-sjabloon bevat de normale JSON-onderdelen van de sjabloon. De sjabloon maakt ook opnieuw gebruik van de blauwdrukparameters storageAccountType, tagName en tagValue door ze allemaal door te geven aan de sjabloon. De blauwdrukparameters zijn voor de sjabloon beschikbaar door de parameter parameters te gebruiken. Binnen de sjabloon-JSON wordt dat sleutel-waardepaar gebruikt om de waarde in te voeren. De namen van de blauwdruk- en sjabloonparameters kunnen dezelfde zijn.
JSON ARM-sjabloonbestand - artifacts\templateStorage.json
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountTypeFromBP": { "type": "string", "metadata": { "description": "Storage Account type" } }, "tagNameFromBP": { "type": "string", "defaultValue": "NotSet", "metadata": { "description": "Tag name from blueprint" } }, "tagValueFromBP": { "type": "string", "defaultValue": "NotSet", "metadata": { "description": "Tag value from blueprint" } } }, "variables": { "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]" }, "resources": [{ "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", "apiVersion": "2016-01-01", "tags": { "[parameters('tagNameFromBP')]": "[parameters('tagValueFromBP')]" }, "location": "[resourceGroup().location]", "sku": { "name": "[parameters('storageAccountTypeFromBP')]" }, "kind": "Storage", "properties": {} }], "outputs": { "storageAccountSku": { "type": "string", "value": "[variables('storageAccountName')]" } } }Parameterbestand voor JSON ARM-sjabloon - artifacts\templateStorageParams.json
{ "storageAccountTypeFromBP": { "value": "[parameters('storageAccountType')]" }, "tagNameFromBP": { "value": "[parameters('tagName')]" }, "tagValueFromBP": { "value": "[parameters('tagValue')]" } }Azure CLI-opdracht
az blueprint artifact template create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'templateStorage' \ --template artifacts\templateStorage.json \ --parameters artifacts\templateStorageParams.json \ --resource-group-art 'storageRG'Notitie
Wanneer u
az blueprintop een Mac gebruikt, vervangt u door\voor/parameterwaarden die het pad bevatten. In dit geval wordt de waarde voor de sjabloonartifacts/templateStorage.jsonen parametersartifacts/templateStorageParams.json.
Voeg een roltoewijzing toe onder resourcegroep. Net als bij de vorige vermelding van een roltoewijzing wordt in het onderstaande voorbeeld de definitie-id van de rol Eigenaar gebruikt en krijgt deze een andere parameter van de blauwdruk. In dit voorbeeld wordt de ingebouwde rol van Eigenaar met een GUID van
8e3af657-a8ff-443c-a75c-2fe8c4bcb635gebruikt.az blueprint artifact role create \ --blueprint-name 'MyBlueprint' \ --artifact-name 'roleOwner' \ --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635' \ --principal-ids "[parameters('owners')]" \ --resource-group-art 'storageRG'
Een blauwdruk publiceren
Nu de artefacten zijn toegevoegd aan de blauwdruk, is het tijd om deze te publiceren. Als de blauwdruk wordt gepubliceerd, kan deze worden toegewezen aan een abonnement.
az blueprint publish --blueprint-name 'MyBlueprint' --version '{BlueprintVersion}'
De waarde voor {BlueprintVersion} is een reeks letters, cijfers en afbreekstreepjes (geen spaties of andere speciale tekens) met een maximale lengte van twintig tekens. Gebruik iets unieks en informatiefs als v20200605-135541.
Een blauwdruk toewijzen
Nadat een blauwdruk is gepubliceerd met Azure CLI, kan deze worden toegewezen aan een abonnement. Wijs de blauwdruk die u hebt gemaakt toe aan een van de abonnementen in uw beheergroephiërarchie. Als de blauwdruk is opgeslagen in een abonnement, kan deze alleen aan dat abonnement worden toegewezen. De parameter blauwdruknaam vermeldt de blauwdruk die moet worden toegewezen. Als u de parameters naam, locatie, identiteit, vergrendeling en blauwdruk wilt opgeven, gebruikt u de overeenkomende Azure CLI-parameters op de az blueprint assignment create-opdracht of geeft u deze op in het JSON-bestand parameters.
Voer de blauwdrukimplementatie uit door deze toe te wijzen aan een abonnement. Als voor de parameters inzenders en eigenaren voor de roltoewijzing een matrix van objectIds van de principals vereist is, gebruikt u Azure Active Directory Graph API om de objectIds op te halen voor gebruik in de parameters voor uw eigen gebruikers, groepen of service-principals.
JSON-bestand - blueprintAssignment.json
{ "storageAccountType": { "value": "Standard_GRS" }, "tagName": { "value": "CostCenter" }, "tagValue": { "value": "ContosoIT" }, "contributors": { "value": [ "7be2f100-3af5-4c15-bcb7-27ee43784a1f", "38833b56-194d-420b-90ce-cff578296714" ] }, "owners": { "value": [ "44254d2b-a0c7-405f-959c-f829ee31c2e7", "316deb5f-7187-4512-9dd4-21e7798b0ef9" ] } }Azure CLI-opdracht
az blueprint assignment create \ --name 'assignMyBlueprint' \ --location 'westus' \ --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \ --parameters blueprintAssignment.jsonDoor een gebruiker toegewezen beheerde identiteit
Een blauwdruktoewijzing kan ook gebruikmaken van een door een gebruiker toegewezen beheerde identiteit. In dit geval wordt de parameter identiteit-type ingesteld op UserAssigned en geeft de parameter gebruiker-toegewezen-identiteiten de identiteit op. Vervang
{userIdentity}door de naam van de door de gebruiker toegewezen beheerde identiteit.az blueprint assignment create \ --name 'assignMyBlueprint' \ --location 'westus' \ --identity-type UserAssigned \ --user-assigned-identities {userIdentity} \ --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \ --parameters blueprintAssignment.jsonDe door een gebruiker toegewezen beheerde identiteit kan in elk abonnement en in elke resourcegroep aanwezig zijn waarvoor de gebruiker die de blauwdruk toewijst, is gemachtigd.
Belangrijk
De door een gebruiker toegewezen beheerde identiteit wordt niet beheerd door Azure Blueprints. Gebruikers zijn verantwoordelijk voor het toewijzen van voldoende rollen en machtigingen, anders mislukken de blauwdruktoewijzingen.
Resources opschonen
De toewijzing van een blauwdruk ongedaan maken
U kunt een blauwdruk uit een abonnement verwijderen. Het verwijderen wordt vaak uitgevoerd als de artefactresources niet langer nodig zijn. Wanneer een blauwdruk wordt verwijderd, blijven de artefacten die als onderdeel van die blauwdruk zijn toegewezen, achter. Als u een blauwdruktoewijzing wilt verwijderen, gebruikt u de opdracht az blueprint assignment delete:
az blueprint assignment delete --name 'assignMyBlueprint'
Volgende stappen
In deze quickstart hebt u een blauwdruk gemaakt, toegewezen en verwijderd met Azure CLI. Ga verder met het artikel over de levenscyclus van blauwdrukken voor meer informatie over Azure Blueprints.


