Kurz: Vytvoření škálovací sady virtuálních počítačů nebo virtuálních počítačů z Galerie sdílených imagí Azure pomocí Ansible
Důležité
K spuštění ukázkových playbooků v tomto článku se vyžaduje Ansible 2.9 (nebo novější).
Sdílená galerie imagí je služba, která umožňuje snadno spravovat, sdílet a organizovat vlastní spravované image. Tato funkce je užitečná pro scénáře, ve kterých se udržuje a sdílí mnoho imagí. Vlastní image je možné sdílet mezi předplatnými a mezi tenanty Microsoft Entra. Image je také možné replikovat do několika oblastí pro rychlejší škálování nasazení.
V tomto článku získáte informace o těchto tématech:
- Vytvoření generalizovaného virtuálního počítače a vlastní image
- Vytvoření služby Shared Image Gallery
- Vytvoření sdílené image a verze image
- Vytvoření virtuálního počítače pomocí generalizované image
- Vytvoření škálovací sady virtuálních počítačů pomocí generalizované image
- Získejte informace o sdílené galerii imagí, imagi a verzi.
Požadavky
- Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Nainstalujte Ansible: Proveďte jednu z následujících možností:
- Instalace a konfigurace Ansible na virtuálním počítači s Linuxem
- Nakonfigurujte Azure Cloud Shell a – pokud nemáte přístup k virtuálnímu počítači s Linuxem – vytvořte virtuální počítač pomocí Ansible.
Získání ukázkových playbooků
Kompletní sadu ukázkových playbooků můžete získat dvěma způsoby:
- Stáhněte složku SIG a uložte ji do místního počítače.
- Vytvořte nový soubor pro každý oddíl a zkopírujte v něm ukázkový playbook.
Soubor vars.yml
obsahuje proměnné používané všemi ukázkovými playbooky pro účely tohoto kurzu. Soubor můžete upravit tak, aby poskytoval jedinečné názvy a hodnoty.
První ukázkový playbook 00-prerequisites.yml
vytvoří, co je nezbytné k dokončení tohoto kurzu:
- Skupina prostředků, což je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.
- Virtuální síť; Podsítě; veřejná IP adresa a síťová karta virtuálního počítače.
- Zdrojový virtuální počítač, který se používá k vytvoření generalizované image.
- 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 inteface 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
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 00-prerequisites.yml
Na webu Azure Portal zkontrolujte skupinu prostředků, ve vars.yml
které jste zadali, a podívejte se na nový virtuální počítač a různé prostředky, které jste vytvořili.
Zobecnění virtuálního počítače a vytvoření vlastní image
Další playbook generalizuje 01a-create-generalized-image.yml
zdrojový virtuální počítač vytvořený v předchozím kroku a pak vytvoří vlastní image.
- 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 }}"
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 01a-create-generalized-image.yml
Zkontrolujte skupinu prostředků a ujistěte se, že testimagea
se zobrazí.
Vytvoření galerie sdílených imagí
Galerie imagí je úložiště pro sdílení a správu imagí. Vzorový kód playbooku ve 02-create-shared-image-gallery.yml
vaší skupině prostředků vytvoří galerii sdílených imagí.
- 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.
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 02-create-shared-image-gallery.yml
Teď se ve vaší skupině prostředků zobrazí nová galerie myGallery
.
Vytvoření sdílené image a verze image
Další playbook 03a-create-shared-image-generalized.yml
vytvoří definici image a verzi image.
Definice imagí zahrnují typ image (Windows nebo Linux), poznámky k verzi a minimální a maximální požadavky na paměť. Verze image je verze image. Galerie, definice obrázku a verze image vám pomůžou uspořádat obrázky v logických skupinách.
- 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
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 03a-create-shared-image-generalized.yml
Vaše skupina prostředků teď má definici obrázku a verzi image pro vaši galerii.
Vytvoření virtuálního počítače na základě generalizované image
Nakonec spusťte vytvoření 04a-create-vm-using-generalized-image.yml
virtuálního počítače na základě generalizované image, kterou jste vytvořili v předchozím kroku.
- 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 }}"
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 04a-create-vm-using-generalized-image.yml
Vytvoření škálovacích sad virtuálních počítačů na základě generalizované image
Můžete také vytvořit škálovací sadu virtuálních počítačů na základě generalizované image. Spusťte 05a-create-vmss-using-generalized-image.yml
to.
- 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 }}"
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 05a-create-vmss-using-generalized-image.yml
Získání informací o galerii
Informace o galerii, definici image a verzi získáte spuštěním příkazu 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 }}"
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 06-get-info.yml
Odstranění sdíleného obrázku
Pokud chcete odstranit prostředky galerie, projděte si ukázkový playbook 07-delete-gallery.yml
. Odstraňte prostředky v obráceném pořadí. Začněte odstraněním verze image. Po odstranění všech verzí imagí můžete definici image odstranit. Po odstranění všech definic obrázků můžete galerii odstranit.
- 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
Spuštění playbooku pomocí ansible-playbooku
ansible-playbook 07-delete-gallery.yml
Vyčištění prostředků
Uložte následující kód jako
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Spusťte playbook pomocí příkazu ansible-playbook . Zástupný symbol nahraďte názvem skupiny prostředků, která se má odstranit. Odstraní se všechny prostředky v rámci skupiny prostředků.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Klíčové body:
register
Vzhledem k proměnné adebug
části playbooku se výsledky zobrazí po dokončení příkazu.