Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Ansible 2.8 (atau yang lebih baru) diperlukan untuk menjalankan contoh playbook dalam artikel ini.
Azure DevTest Labs memungkinkan pengembang mengotomatiskan pembuatan lingkungan VM untuk aplikasi mereka. Lingkungan ini dapat dikonfigurasi untuk pengembangan, pengujian, dan pelatihan aplikasi.
Dalam artikel ini, Anda akan mempelajari cara:
- Membuat laboratorium
- Mengatur kebijakan lab
- Mengatur jadwal lab
- Membuat jaringan virtual lab
- Menentukan sumber artefak untuk lab
- Membuat VM di dalam lab
- Daftarkan sumber artefak dan artefak lab.
- Mendapatkan informasi Azure Resource Manager untuk sumber artefak
- Membuat lingkungan lab
- Membuat gambar lab
- Menghapus lab
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
- Perwakilan layanan Azure: Buat perwakilan layanan, catat nilai berikut: appId, displayName, kata sandi, dan penyewa.
Instal Ansible: Lakukan salah satu opsi berikut:
- Menginstal dan mengonfigurasi Ansible pada komputer virtual Linux
- Konfigurasikan Azure Cloud Shell dan - jika Anda tidak memiliki akses ke komputer virtual Linux - buat komputer virtual dengan Ansible.
Buat grup sumber daya
Cuplikan contoh playbook membuat kelompok sumber daya Azure. Grup sumber daya adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola.
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Membuat laboratorium
Tugas berikutnya membuat lab sampel.
- name: Create the lab
azure_rm_devtestlab:
resource_group: "{{ resource_group }}"
name: "{{ lab_name }}"
location: "{{ location }}"
storage_type: standard
premium_data_disks: no
register: output_lab
Mengatur kebijakan lab
Anda dapat menyiapkan pengaturan kebijakan lab. Nilai berikut dapat diatur:
-
user_owned_lab_vm_countadalah jumlah VM yang dapat dimiliki pengguna -
user_owned_lab_premium_vm_countadalah jumlah VM premium yang dapat dimiliki pengguna -
lab_vm_countadalah jumlah maksimum VM lab -
lab_premium_vm_countadalah jumlah maksimum VM premium laboratorium -
lab_vm_sizeadalah ukuran VM lab yang diizinkan -
gallery_imageadalah gambar-gambar galeri yang diizinkan -
user_owned_lab_vm_count_in_subnetadalah jumlah maksimum VM pengguna dalam subnet -
lab_target_costakan merupakan biaya target dari laboratorium
- name: Set the lab policies
azure_rm_devtestlabpolicy:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
policy_set_name: myDtlPolicySet
name: myDtlPolicy
fact_name: user_owned_lab_vm_count
threshold: 5
Mengatur jadwal lab
Tugas sampel di bagian ini mengonfigurasi jadwal lab.
Dalam cuplikan kode berikut, lab_vms_startup nilai digunakan untuk menentukan waktu mulai VM. Demikian juga, mengatur nilai lab_vms_shutdown menetapkan waktu penutupan VM laboratorium.
- name: Set the lab schedule
azure_rm_devtestlabschedule:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: lab_vms_shutdown
time: "1030"
time_zone_id: "UTC+12"
register: output
Membuat jaringan virtual lab
Tugas berikut ini membuat jaringan virtual lab default.
- name: Create the lab virtual network
azure_rm_devtestlabvirtualnetwork:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: "{{ vn_name }}"
location: "{{ location }}"
description: My lab virtual network
register: output
Menentukan sumber artefak untuk lab
Sumber artefak adalah repositori GitHub terstruktur dengan benar yang berisi definisi artefak dan templat Azure Resource Manager. Setiap lab dilengkapi dengan artefak publik yang telah ditentukan sebelumnya. Tugas berikut menunjukkan kepada Anda cara membuat sumber artefak untuk lab.
- name: Define the lab artifacts source
azure_rm_devtestlabartifactsource:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: "{{ artifacts_name }}"
uri: https://github.com/Azure/azure_preview_modules.git
source_type: github
folder_path: /tasks
security_token: "{{ github_token }}"
Membuat VM di dalam lab
Buat VM di dalam lab.
- name: Create a VM within the lab
azure_rm_devtestlabvirtualmachine:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: "{{ vm_name }}"
notes: Virtual machine notes, just something....
os_type: linux
vm_size: Standard_A2_v2
user_name: dtladmin
password: ZSasfovobocu$$21!
lab_subnet:
virtual_network_name: "{{ vn_name }}"
name: "{{ vn_name }}Subnet"
disallow_public_ip_address: no
image:
offer: UbuntuServer
publisher: Canonical
sku: 16.04-LTS
os_type: Linux
version: latest
artifacts:
- source_name: "{{ artifacts_name }}"
source_path: "/Artifacts/linux-install-mongodb"
allow_claim: no
expiration_date: "2029-02-22T01:49:12.117974Z"
Daftar sumber dan artefak laboratorium
Untuk mencantumkan semua sumber artefak default dan kustom di lab, gunakan tugas berikut:
- name: List the artifact sources
azure_rm_devtestlabartifactsource_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
register: output
- debug:
var: output
Tugas berikut mencantumkan semua artefak:
- name: List the artifact facts
azure_rm_devtestlabartifact_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
artifact_source_name: public repo
register: output
- debug:
var: output
Mendapatkan informasi Azure Resource Manager untuk sumber artefak
Untuk mencantumkan semua templat Azure Resource Manager di public environment repository, repositori dengan templat yang telah ditentukan sebelumnya:
- name: List the Azure Resource Manager template facts
azure_rm_devtestlabartifactsource_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
register: output
- debug:
var: output
Dan tugas berikut mengambil detail templat Azure Resource Manager tertentu dari repositori:
- name: Get Azure Resource Manager template facts
azure_rm_devtestlabarmtemplate_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
artifact_source_name: "public environment repo"
name: ServiceFabric-LabCluster
register: output
- debug:
var: output
Membuat lingkungan lab
Tugas berikut membuat lingkungan lab berdasarkan salah satu templat dari repositori lingkungan publik.
- name: Create the lab environment
azure_rm_devtestlabenvironment:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
user_name: "@me"
name: myEnvironment
location: eastus
deployment_template: "{{ output_lab.id }}/artifactSources/public environment repo/armTemplates/WebApp"
register: output
Membuat gambar lab
Tugas berikut membuat gambar dari VM. Gambar memungkinkan Anda membuat VM yang identik.
- name: Create the lab image
azure_rm_devtestlabcustomimage:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: myImage
source_vm: "{{ output_vm.virtualmachines[0]['name'] }}"
linux_os_state: non_deprovisioned
Menghapus lab
Untuk menghapus lab, gunakan tugas berikut:
- name: Delete the lab
azure_rm_devtestlab:
resource_group: "{{ resource_group }}"
name: "{{ lab_name }}"
state: absent
register: output
- name: Assert the change was correctly reported
assert:
that:
- output.changed
Dapatkan buku panduan sampel
Ada dua cara untuk mendapatkan playbook contoh lengkap:
-
Unduh buku panduan dan simpan ke
devtestlab-create.yml. - Buat file baru bernama
devtestlab-create.ymldan salin konten berikut ke dalamnya:
---
- hosts: localhost
#roles:
# - azure.azure_preview_modules
vars:
resource_group: "{{ resource_group_name }}"
lab_name: myLab
vn_name: myLabVirtualNetwork
vm_name: myLabVm
artifacts_name: myArtifacts
github_token: "{{ lookup('env','GITHUB_ACCESS_TOKEN') }}"
location: eastus
tasks:
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create the lab
azure_rm_devtestlab:
resource_group: "{{ resource_group }}"
name: "{{ lab_name }}"
location: eastus
storage_type: standard
premium_data_disks: no
register: output_lab
- name: Set the lab policies
azure_rm_devtestlabpolicy:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
policy_set_name: myDtlPolicySet
name: myDtlPolicy
fact_name: user_owned_lab_vm_count
threshold: 5
- name: Set the lab schedule
azure_rm_devtestlabschedule:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: lab_vms_shutdown
time: "1030"
time_zone_id: "UTC+12"
register: output
- name: Create the lab virtual network
azure_rm_devtestlabvirtualnetwork:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: "{{ vn_name }}"
location: eastus
description: My lab virtual network
register: output
- name: Define the lab artifacts source
azure_rm_devtestlabartifactsource:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: "{{ artifacts_name }}"
uri: https://github.com/Azure/azure_preview_modules.git
source_type: github
folder_path: /tasks
security_token: "{{ github_token }}"
- name:
set_fact:
artifact_source:
- source_name: "{{ artifacts_name }}"
source_path: "/Artifacts/linux-install-mongodb"
when: "github_token | length > 0"
- name:
set_fact:
artifact_source: null
when: "github_token | length == 0"
- name: Create a VM within the lab
azure_rm_devtestlabvirtualmachine:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: "{{ vm_name }}"
notes: Virtual machine notes, just something....
os_type: linux
vm_size: Standard_A2_v2
user_name: dtladmin
password: ZSasfovobocu$$21!
lab_subnet:
virtual_network_name: "{{ vn_name }}"
name: "{{ vn_name }}Subnet"
disallow_public_ip_address: no
image:
offer: UbuntuServer
publisher: Canonical
sku: 16.04-LTS
os_type: Linux
version: latest
artifacts:
- source_name: "{{ artifacts_name }}"
source_path: "/Artifacts/linux-install-mongodb"
allow_claim: no
expiration_date: "2029-02-22T01:49:12.117974Z"
- name: List the artifact sources
azure_rm_devtestlabartifactsource_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
register: output
- debug:
var: output
- name: List the artifact facts
azure_rm_devtestlabartifact_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
artifact_source_name: public repo
register: output
- debug:
var: output
- name: List the Azure Resource Manager template facts
azure_rm_devtestlabarmtemplate_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
artifact_source_name: "public environment repo"
register: output
- debug:
var: output
- name: Get Azure Resource Manager template facts
azure_rm_devtestlabarmtemplate_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
artifact_source_name: "public environment repo"
name: ServiceFabric-LabCluster
register: output
- debug:
var: output
- name: Create the lab environment
azure_rm_devtestlabenvironment:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
user_name: "@me"
name: myEnvironment
location: eastus
deployment_template: "{{ output_lab.id }}/artifactSources/public environment repo/armTemplates/WebApp"
- name: Create the lab image
azure_rm_devtestlabcustomimage:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
name: myImage
source_vm: "{{ vm_name }}"
linux_os_state: non_deprovisioned
- name: Delete the lab
azure_rm_devtestlab:
resource_group: "{{ resource_group }}"
name: "{{ lab_name }}"
state: absent
Jalankan buku panduan
Di bagian ini, jalankan playbook untuk menguji berbagai fitur yang ditunjukkan dalam artikel ini.
Sebelum menjalankan playbook, buat perubahan berikut:
- Di bagian
vars, ganti placeholder{{ resource_group_name }}dengan nama grup sumber daya Anda. - Simpan token GitHub sebagai variabel lingkungan bernama
GITHUB_ACCESS_TOKEN.
Jalankan playbook menggunakan ansible-playbook
ansible-playbook devtestlab-create.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: rgJalankan playbook menggunakan perintah ansible-playbook . Ganti placeholder 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:
-
registerKarena variabel dandebugbagian dari playbook, hasilnya ditampilkan saat perintah selesai.
-