Maak een Azure-resourcegroep om de virtuele machines voor deze zelfstudie in op te slaan.
Belangrijk
De Azure-resourcegroep die u in deze stap u maakt, moet een naam hebben die volledig uit kleine letters bestaat. Anders mislukt het genereren van de dynamische voorraad.
Tags worden gebruikt om Azure-resources te organiseren en te categoriseren. Door de Azure-VM's een toepassingsrol toe te wijzen, kunt u de tags gebruiken als groepsnamen in de dynamische azure-inventaris.
Voer de volgende opdrachten uit om de VM-tags bij te werken:
Ansible gebruikt de naam en extensie van het inventarisbestand om te bepalen welke inventarisinvoegtoepassing moet worden gebruikt. Als u de invoegtoepassing dynamische voorraad van Azure wilt gebruiken, moet het bestand eindigen met azure_rm en een extensie hebben van ofyamlyml.
Voer de volgende opdracht uit om een query uit te voeren op de VM's in de resourcegroep:
Bash
ansible-inventory -i myazure_rm.yml --graph
Wanneer u de opdracht uitvoert, ziet u resultaten die vergelijkbaar zijn met de volgende uitvoer:
Beide VM's behoren tot de ungrouped groep. Dit is een onderliggend element van de all groep in de Ansible-inventaris.
Sleutelpunt:
De invoegtoepassing voor dynamische voorraad van Azure retourneert standaard wereldwijd unieke namen. Daarom kunnen de namen van de VM's extra tekens bevatten. U kunt dat gedrag uitschakelen door deze toe te voegen aan plain_host_names: yes de dynamische inventaris.
Door informatie op te halen uit Azure, wordt de dynamische inventaris ingevuld hostvars voor elke Virtuele Azure-machine. Deze hostvars zijn vervolgens om de lidmaatschappen van de VM-groep binnen de Ansible-inventaris te bepalen.
Groepslidmaatschap toewijzen met conditional_groups
Elke voorwaardelijke groep bestaat uit twee delen. De naam van de groep en de voorwaarde voor het toevoegen van een lid aan de groep.
Gebruik de eigenschap image.offer om een voorwaardelijk groepslidmaatschap te maken voor de linux-vm.
Open de myazure_rm.yml dynamische inventaris en voeg het volgende conditional_grouptoe:
yml
plugin:azure_rminclude_vm_resource_groups: -ansible-inventory-test-rgauth_source:autoconditional_groups: linux:"'ubuntu' in image.offer" windows:"'WindowsServer' in image.offer"
Voer de ansible-inventory opdracht uit met de --graph optie:
In de uitvoer ziet u dat de VM's niet meer aan de ungrouped groep zijn gekoppeld. In plaats daarvan wordt elke VIRTUELE machine toegewezen aan een nieuwe groep die is gemaakt door de dynamische inventaris.
Sleutelpunt:
Met voorwaardelijke groepen kunt u specifieke groepen binnen uw inventaris een naam geven en deze vullen met behulp van hostvars.
Groepslidmaatschap toewijzen met keyed_groups
Sleutelgroepen wijzen groepslidmaatschap op dezelfde manier toe als voorwaardelijke groepen, maar wanneer u een sleutelgroep gebruikt, wordt de groepsnaam ook dynamisch ingevuld.
Voeg de volgende keyed_group toe aan de myazure_rm.yml dynamische inventaris:
yml
plugin:azure_rminclude_vm_resource_groups: -ansible-inventory-test-rgauth_source:autoconditional_groups: linux:"'ubuntu' in image.offer" windows:"'WindowsServer' in image.offer"keyed_groups: - key:tags.applicationRole
Voer de ansible-inventory opdracht uit met de --graph optie:
In de uitvoer ziet u nog twee groepen _message_broker en _web_server. Met behulp van een sleutelgroep vult de applicationRole tag de groepsnamen en groepslidmaatschappen in.
Sleutelpunt:
Sleutelgroepen bevatten standaard een scheidingsteken. Als u het scheidingsteken wilt verwijderen, voegt u deze toe separator: "" onder de sleuteleigenschap.
Playbooks uitvoeren met groepsnaampatronen
Gebruik de groepen die door de dynamische inventaris zijn gemaakt om subgroepen te targeten.
Maak een playbook win_ping.yml met de volgende inhoud:
Wanneer u hierom wordt gevraagd, voert u de username en password voor de Virtuele Azure Windows-machine in.
Output
Enter local username: azureuser
Enter password:
PLAY [windows] **************************************************************************************************************************************
TASK [run win_ping] *********************************************************************************************************************************
ok: [win-vm_3211]
PLAY RECAP ******************************************************************************************************************************************
win-vm_3211 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Belangrijk
Als u de fout winrm or requests is not installed: No module named 'winrm'krijgt, installeert u pywinrm met de volgende opdracht: pip install "pywinrm>=0.3.0"
Maak een tweede playbook met de naam ping.yml met de volgende inhoud:
Informatie over het gebruik van de platformoverschrijdende Azure CLI om andere beheertaken die betrekking hebben op virtuele machines in Azure te maken, starten, stoppen en uit te voeren.
Meer informatie over het gebruik van Ansible voor het maken van vm's of virtuele-machineschaalsets op basis van een gegeneraliseerde installatiekopieën in De galerie met gedeelde installatiekopieën.