Zelfstudie: Een VM of virtuele-machineschaalset maken vanuit de galerie met gedeelde installatiekopieën van Azure met behulp van Ansible
Belangrijk
Ansible 2.9 (of hoger) is vereist om de voorbeeldplaybooks in dit artikel uit te voeren.
Shared Image Gallery is een service waarmee u eenvoudig aangepaste beheerde installatiekopieën kunt beheren, delen en organiseren. Deze functie is nuttig voor scenario's waarin veel afbeeldingen worden onderhouden en gedeeld. Aangepaste installatiekopieën kunnen worden gedeeld tussen abonnementen en tussen Microsoft Entra-tenants. Installatiekopieën kunnen ook worden gerepliceerd naar meerdere regio's voor snellere schaalaanpassing van implementaties.
In dit artikel leert u het volgende:
- Een gegeneraliseerde VM en aangepaste installatiekopieën maken
- Een gedeelde installatiekopiegalerie maken
- Een gedeelde installatiekopieën en versie van installatiekopieën maken
- Een virtuele machine maken met behulp van de gegeneraliseerde installatiekopieën
- Een virtuele-machineschaalset maken met behulp van de gegeneraliseerde installatiekopieën
- Informatie ophalen over de galerie met gedeelde installatiekopieën, installatiekopieën en versies.
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
- Configureer Azure Cloud Shell en maak een virtuele machine met Ansible als u geen toegang hebt tot een virtuele Linux-machine.
De voorbeeldplaybooks ophalen
Er zijn twee manieren om de volledige set voorbeeldplaybooks op te halen:
- Download de SIG-map en sla deze op uw lokale computer op.
- Maak een nieuw bestand voor elke sectie en kopieer het voorbeeldplaybook erin.
Het vars.yml
bestand bevat de variabelen die worden gebruikt door alle voorbeeldplaybooks voor deze zelfstudie. U kunt het bestand bewerken om unieke namen en waarden op te geven.
In het eerste voorbeeldplaybook 00-prerequisites.yml
wordt gemaakt wat nodig is om deze zelfstudie te voltooien:
- Een resourcegroep, een logische container waarin Azure-resources worden geïmplementeerd en beheerd.
- Een virtueel netwerk; Subnet; openbaar IP-adres en netwerkinterfacekaart voor de virtuele machine.
- Een virtuele bronmachine, die wordt gebruikt voor het maken van de gegeneraliseerde installatiekopieën.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Create resource group if doesn't exist
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: "{{ resource_group }}"
name: "{{ virtual_network_name }}"
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: "{{ resource_group }}"
name: "{{ subnet_name }}"
address_prefix: "10.0.1.0/24"
virtual_network: "{{ virtual_network_name }}"
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: "{{ resource_group }}"
allocation_method: Static
name: "{{ ip_name }}"
- name: Create virtual network interface cards for VM A and B
azure_rm_networkinterface:
resource_group: "{{ resource_group }}"
name: "{{ network_interface_name }}"
virtual_network: "{{ virtual_network_name }}"
subnet: "{{ subnet_name }}"
- name: Create VM
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "{{ source_vm_name }}"
admin_username: testuser
admin_password: "Password1234!"
vm_size: Standard_B1ms
network_interfaces: "{{ network_interface_name }}"
image:
offer: UbuntuServer
publisher: Canonical
sku: 16.04-LTS
version: latest
Het playbook uitvoeren met ansible-playbook
ansible-playbook 00-prerequisites.yml
Controleer in Azure Portal de resourcegroep die u hebt vars.yml
opgegeven om de nieuwe virtuele machine en de verschillende resources te zien die u hebt gemaakt.
De VIRTUELE machine generaliseren en een aangepaste installatiekopieën maken
In het volgende playbook 01a-create-generalized-image.yml
generaliseert u de bron-VM die u in de vorige stap hebt gemaakt en maakt u vervolgens een aangepaste installatiekopieën op basis daarvan.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Generalize VM
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "{{ source_vm_name }}"
generalized: yes
- name: Create custom image
azure_rm_image:
resource_group: "{{ resource_group }}"
name: "{{ image_name }}"
source: "{{ source_vm_name }}"
Het playbook uitvoeren met ansible-playbook
ansible-playbook 01a-create-generalized-image.yml
Controleer uw resourcegroep en controleer of testimagea
deze wordt weergegeven.
De galerie met gedeelde installatiekopieën maken
De galerie met installatiekopieën is de opslagplaats voor het delen en beheren van afbeeldingen. Met de voorbeeldplaybookcode in 02-create-shared-image-gallery.yml
de resourcegroep wordt een galerie met gedeelde installatiekopieën gemaakt.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Create shared image gallery
azure_rm_gallery:
resource_group: "{{ resource_group }}"
name: "{{ shared_gallery_name }}"
location: "{{ location }}"
description: This is the gallery description.
Het playbook uitvoeren met ansible-playbook
ansible-playbook 02-create-shared-image-gallery.yml
U ziet nu een nieuwe galerie in myGallery
uw resourcegroep.
Een gedeelde installatiekopieën en versie van installatiekopieën maken
In het volgende playbook 03a-create-shared-image-generalized.yml
maakt u een definitie van een installatiekopieën en een versie van de installatiekopieën.
Definities van installatiekopieën bevatten het installatiekopietype (Windows of Linux), opmerkingen bij de release en minimale en maximale geheugenvereisten. De versie van de installatiekopieën is de versie van de installatiekopieën. Met galerie, definitie van installatiekopieën en installatiekopieën kunt u afbeeldingen ordenen in logische groepen.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Create shared image
azure_rm_galleryimage:
resource_group: "{{ resource_group }}"
gallery_name: "{{ shared_gallery_name }}"
name: "{{ shared_image_name }}"
location: "{{ location }}"
os_type: linux
os_state: generalized
identifier:
publisher: myPublisherName
offer: myOfferName
sku: mySkuName
description: Image description
- name: Create or update a simple gallery image version.
azure_rm_galleryimageversion:
resource_group: "{{ resource_group }}"
gallery_name: "{{ shared_gallery_name }}"
gallery_image_name: "{{ shared_image_name }}"
name: "{{ shared_image_version }}"
location: "{{ location }}"
publishing_profile:
end_of_life_date: "2020-10-01t00:00:00+00:00"
exclude_from_latest: yes
replica_count: 3
storage_account_type: Standard_LRS
target_regions:
- name: West US
regional_replica_count: 1
- name: East US
regional_replica_count: 2
storage_account_type: Standard_ZRS
managed_image:
name: "{{ image_name }}"
resource_group: "{{ resource_group }}"
register: output
- debug:
var: output
Het playbook uitvoeren met ansible-playbook
ansible-playbook 03a-create-shared-image-generalized.yml
Uw resourcegroep heeft nu een definitie van een installatiekopieën en een installatiekopieënversie voor uw galerie.
Een VIRTUELE machine maken op basis van de gegeneraliseerde installatiekopieën
Voer ten slotte uit 04a-create-vm-using-generalized-image.yml
om een virtuele machine te maken op basis van de gegeneraliseerde installatiekopieën die u in de vorige stap hebt gemaakt.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Create VM using shared image
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "{{ vm_name }}"
vm_size: Standard_DS1_v2
admin_username: adminUser
admin_password: PassWord01
managed_disk_type: Standard_LRS
image:
id: "/subscriptions/{{ lookup('env', 'AZURE_SUBSCRIPTION_ID') }}/resourceGroups/{{ resource_group }}/providers/Microsoft.Compute/galleries/{{ shared_gallery_name }}/images/{{ shared_image_name }}/versions/{{ shared_image_version }}"
Het playbook uitvoeren met ansible-playbook
ansible-playbook 04a-create-vm-using-generalized-image.yml
Een virtuele-machineschaalset maken op basis van de gegeneraliseerde installatiekopieën
U kunt ook een virtuele-machineschaalset maken op basis van de gegeneraliseerde installatiekopieën. Voer 05a-create-vmss-using-generalized-image.yml
dit uit.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Create a virtual machine scale set using a shared image
azure_rm_virtualmachinescaleset:
resource_group: "{{ resource_group }}"
name: "{{ vmss_name }}"
vm_size: Standard_DS1_v2
admin_username: adminUser
admin_password: PassWord01
capacity: 2
virtual_network_name: "{{ virtual_network_name }}"
upgrade_policy: Manual
subnet_name: "{{ subnet_name }}"
managed_disk_type: Standard_LRS
image:
id: "/subscriptions/{{ lookup('env', 'AZURE_SUBSCRIPTION_ID') }}/resourceGroups/{{ resource_group }}/providers/Microsoft.Compute/galleries/{{ shared_gallery_name }}/images/{{ shared_image_name }}/versions/{{ shared_image_version }}"
Het playbook uitvoeren met ansible-playbook
ansible-playbook 05a-create-vmss-using-generalized-image.yml
Informatie over de galerie ophalen
U kunt informatie krijgen over de galerie, de definitie van de installatiekopieën en de versie door deze uit te voeren 06-get-info.yml
.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Get Shared Image Gallery information
azure_rm_gallery_info:
resource_group: "{{ resource_group }}"
name: "{{ shared_gallery_name }}"
- name: Get shared image information
azure_rm_galleryimage_info:
resource_group: "{{ resource_group }}"
gallery_name: "{{ shared_gallery_name }}"
name: "{{ shared_image_name }}"
- name: Get Shared Image Gallery image version information
azure_rm_galleryimageversion_info:
resource_group: "{{ resource_group }}"
gallery_name: "{{ shared_gallery_name }}"
gallery_image_name: "{{ shared_image_name }}"
name: "{{ shared_image_version }}"
Het playbook uitvoeren met ansible-playbook
ansible-playbook 06-get-info.yml
De gedeelde installatiekopieën verwijderen
Als u de galeriebronnen wilt verwijderen, raadpleegt u het voorbeeldplaybook 07-delete-gallery.yml
. Resources in omgekeerde volgorde verwijderen. Begin met het verwijderen van de versie van de installatiekopieën. Nadat u alle installatiekopieën hebt verwijderd, kunt u de definitie van de installatiekopieën verwijderen. Nadat u alle installatiekopieën hebt verwijderd, kunt u de galerie verwijderen.
- hosts: localhost
connection: local
vars_files:
- ./vars.yml
tasks:
- name: Delete gallery image version.
azure_rm_galleryimageversion:
resource_group: "{{ resource_group }}"
gallery_name: "{{ shared_gallery_name }}"
gallery_image_name: "{{ shared_image_name }}"
name: "{{ shared_image_version }}"
state: absent
- name: Delete gallery image
azure_rm_galleryimage:
resource_group: "{{ resource_group }}"
gallery_name: "{{ shared_gallery_name }}"
name: "{{ shared_image_name }}"
state: absent
- name: Delete a simple gallery.
azure_rm_gallery:
resource_group: "{{ resource_group }}"
name: "{{ shared_gallery_name }}"
state: absent
Het playbook uitvoeren met ansible-playbook
ansible-playbook 07-delete-gallery.yml
Resources opschonen
Sla de volgende code op als
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Voer het playbook uit met behulp van de ansible-playbook-opdracht . Vervang de tijdelijke aanduiding door de naam van de resourcegroep die u wilt verwijderen. Alle resources in de resourcegroep worden verwijderd.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Belangrijkste punten:
- Vanwege de
register
variabele endebug
sectie van het playbook worden de resultaten weergegeven wanneer de opdracht is voltooid.
- Vanwege de