Quickstart: Een Azure-service-principal maken voor Ansible
In deze quickstart maakt u een Azure-service-principal met AzureCLI of Azure PowerShell en verifieert u zich bij Azure vanuit Ansible.
In dit artikel leert u het volgende:
- Een Azure-service-principal maken met behulp van de Azure CLI
- Een Azure-service-principal maken met behulp van Azure PowerShell
- Een rol toewijzen aan de Azure-service-principal
- Belangrijke informatie ophalen uit de service-principal
- Omgevingsvariabelen instellen zodat Ansible de waarden van de service-principal kan ophalen
- De service-principal testen
Vereisten
- Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.
Ansible installeren: Voer een van de volgende opties uit:
- Ansible installeren en configureren op een virtuele Linux-machine
- Azure Cloud Shell configureren
Een Azure-service-principal maken
Een Azure-service-principal biedt u een toegewezen account voor het beheren van Azure-resources met Ansible.
Voer de volgende code uit om een Azure-service-principal te maken:
az ad sp create-for-rbac --name ansible \
--role Contributor \
--scopes /subscriptions/<subscription_id>
Notitie
Sla het wachtwoord op uit de uitvoer op een veilige locatie.
Een rol toewijzen aan de Azure-service-principal
Standaard hebben service-principals niet de toegang die nodig is voor het beheren van resources in Azure.
Voer de volgende opdracht uit om de rol Inzender toe te wijzen aan de service-principal:
az role assignment create --assignee <appID> \
--role Contributor \
--scope /subscriptions/<subscription_id>
Vervang <appID>
door de waarde die is opgegeven in de uitvoer van az ad sp create-for-rbac
de opdracht.
Notitie
Als u de beveiliging wilt verbeteren, wijzigt u het bereik van de roltoewijzing in een resourcegroep in plaats van een abonnement.
Informatie over de Azure-service-principal ophalen
Voor verificatie bij Azure met een service-principal hebt u de volgende informatie nodig:
- SubscriptionID
- Service Principal ApplicationId
- Wachtwoord voor service-principal
- TenantID
Voer de volgende opdrachten uit om informatie over de service-principal op te halen:
az account show --query '{tenantId:tenantId,subscriptionid:id}';
az ad sp list --display-name ansible --query '{clientId:[0].appId}'
Verifiëren bij Azure met de service-principal
Voer de volgende opdrachten uit om de vereiste omgevingsvariabelen op de Ansible-server te vullen:
export AZURE_SUBSCRIPTION_ID=<SubscriptionID>
export AZURE_CLIENT_ID=<ApplicationId>
export AZURE_SECRET=<Password>
export AZURE_TENANT=<TenantID>
Vervang , <ApplicationId>
, <Password>
en <TenantID>
door <SubscriptionID>
de waarden van uw service-principal-account.
Service-principalmachtigingen testen
Voer de volgende opdracht uit om een nieuwe Azure-resourcegroep te maken:
ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> location=<resource_group_location>"
Vervang <resource_group_name>
en <resource_group_location>
door de nieuwe resourcegroepwaarden.
[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | CHANGED => {
"changed": true,
"contains_resources": false,
"state": {
"id": "/subscriptions/<subscriptionID>/resourceGroups/azcli-test",
"location": "eastus",
"name": "azcli-test",
"provisioning_state": "Succeeded",
"tags": null
}
}
Voer de volgende opdracht uit om de Azure-resourcegroep te verwijderen:
ansible localhost -m azure_rm_resourcegroup -a "name=<resource_group_name> state=absent force_delete_nonempty=yes"
Vervang <resource_group_name>
door de naam van de resourcegroep.
[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | CHANGED => {
"changed": true,
"contains_resources": false,
"state": {
"id": "/subscriptions/subscriptionID>/resourceGroups/azcli-test",
"location": "eastus",
"name": "azcli-test",
"provisioning_state": "Succeeded",
"status": "Deleted",
"tags": null
}
}