Tutorial: Buat vm atau set skala komputer virtual dari Azure Shared Image Gallery menggunakan Ansible
Penting
Ansible 2.9 (atau lebih baru) diperlukan untuk menjalankan sampel playbook dalam artikel ini.
Shared Image Gallery adalah layanan yang memungkinkan Anda mengelola, berbagi, dan mengatur gambar yang dikelola khusus dengan mudah. Fitur ini bermanfaat untuk pada saat di mana banyak gambar dipertahankan dan dibagikan. Gambar kustom dapat dibagikan di seluruh langganan dan antara penyewa Microsoft Entra. Gambar juga dapat direplikasi ke beberapa wilayah untuk penskalaan penyebaran yang lebih cepat.
Dalam artikel ini, Anda akan mempelajari cara:
- Membuat VM umum dan gambar kustom
- Membuat Shared Image Gallery
- Membuat versi gambar dan gambar bersama
- Membuat VM menggunakan citra umum
- Membuat set skala komputer virtual menggunakan gambar umum
- Dapatkan informasi tentang Shared Image Gallery, gambar, dan versi Anda.
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
Instal Ansible: Lakukan salah satu opsi berikut:
- Menginstal dan mengonfigurasi Ansibel pada mesin virtual Linux
- Konfigurasikan Azure Cloud Shell dan - jika Anda tidak memiliki akses ke mesin virtual Linux - buat mesin virtual dengan Ansible.
Dapatkan sampel playbook
Ada dua cara untuk mendapatkan playbook sampel lengkap:
- Download folder SIG dan simpan ke mesin lokal anda.
- Buat file baru untuk setiap bagian dan salin sampel playbook di dalamnya.
File vars.yml
berisi variabel yang digunakan oleh semua playbook sampel untuk tutorial ini. Anda dapat mengedit file untuk memberikan nama dan nilai unik.
sampel playbook pertama 00-prerequisites.yml
membuat apa yang diperlukan untuk menyelesaikan tutorial ini:
- Grup sumber daya, yang mana adalah kontainer logis yang disebarkan dan dikelola oleh sumber daya Azure.
- Jaringan virtual; subnet; alamat IP publik dan kartu antarmuka jaringan untuk VM.
- Mesin Virtual sumber, yang digunakan untuk membuat gambar umum.
- 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
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 00-prerequisites.yml
Di portal Azure, periksa grup sumber daya yang Anda tentukan di vars.yml
untuk melihat mesin virtual baru dan berbagai sumber daya yang Anda buat.
Menggeneralisasi VM dan membuat gambar kustom
Playbook berikutnya, 01a-create-generalized-image.yml
, menggeneralisasi VM sumber yang dibuat pada langkah sebelumnya dan kemudian membuat gambar kustom berdasarkan itu.
- 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 }}"
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 01a-create-generalized-image.yml
Periksa grup sumber daya Anda dan pastikan testimagea
muncul.
Buat Shared Image Gallery
Galeri gambar adalah repositori untuk berbagi dan mengelola gambar. Contoh kode playbook dalam 02-create-shared-image-gallery.yml
membuat Shared Image Gallery di grup sumber daya Anda.
- 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.
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 02-create-shared-image-gallery.yml
Anda sekarang melihat galeri baru, myGallery
, di grup sumber daya Anda.
Membuat versi gambar dan gambar bersama
Playbook berikutnya, 03a-create-shared-image-generalized.yml
membuat definisi gambar dan versi gambar.
Definisi gambar mencakup jenis gambar (Windows atau Linux), catatan rilis, dan persyaratan memori minimum dan maksimum. Versi gambar adalah versi dari gambar. Galeri, definisi gambar, dan versi gambar membantu Anda mengatur gambar dalam grup logis.
- 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
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 03a-create-shared-image-generalized.yml
Grup sumber daya Anda sekarang memiliki definisi gambar dan versi gambar untuk galeri Anda.
Membuat VM berdasarkan gambar umum
Terakhir, jalankan 04a-create-vm-using-generalized-image.yml
untuk membuat VM berdasarkan gambar umum yang Anda buat di langkah sebelumnya.
- 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 }}"
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 04a-create-vm-using-generalized-image.yml
Buat set skala komputer virtual berdasarkan gambar umum
Anda juga dapat membuat set skala komputer virtual berdasarkan gambar umum. Jalankan 05a-create-vmss-using-generalized-image.yml
untuk melakukannya.
- 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 }}"
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 05a-create-vmss-using-generalized-image.yml
Dapatkan informasi tentang galeri
Anda bisa mendapatkan informasi tentang galeri, definisi gambar, dan versi dengan menjalankan 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 }}"
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 06-get-info.yml
Menghapus gambar bersama
Untuk menghapus sumber daya galeri, lihat sampel playbook 07-delete-gallery.yml
. Hapus sumber daya dalam urutan terbalik. Mulailah dengan menghapus versi gambar. Setelah menghapus semua versi gambar, Anda dapat menghapus definisi gambar. Setelah menghapus semua definisi gambar, Anda dapat menghapus galeri.
- 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
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook 07-delete-gallery.yml
Membersihkan sumber daya
Simpan kode berikut sebagai
delete_rg.yml
.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Jalankan playbook menggunakan perintah ansible-playbook. Ganti tempat penampung dengan nama grup sumber daya yang akan dihapus. Semua sumber daya dalam grup sumber daya akan dihapus.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Poin utama:
- Karena variabel
register
dan bagiandebug
dari playbook, hasilnya akan ditampilkan ketika perintah selesai.
- Karena variabel
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk