Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Ansible 2.8 (o versione successiva) è necessario per eseguire i playbook di esempio in questo articolo.
Azure DevTest Labs consente agli sviluppatori di automatizzare la creazione di ambienti vm per le app. Questi ambienti possono essere configurati per lo sviluppo, il test e il training di app.
In questo articolo vengono illustrate le operazioni seguenti:
- Creare un lab
- Impostare i criteri del laboratorio
- Impostare le pianificazioni del laboratorio
- Creare la rete virtuale del lab
- Definire un'origine dell'artefatto per il laboratorio
- Creare una macchina virtuale all'interno del lab
- Elencare le origini e gli artefatti del laboratorio
- Ottenere informazioni su Azure Resource Manager per le origini degli artefatti
- Creare l'ambiente lab
- Crea l'immagine del laboratorio
- Eliminare il laboratorio
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Entità servizio di Azure: creare un'entità servizio, prendere nota dei valori seguenti: appId, displayName, password e tenant.
Installare Ansible: eseguire una delle opzioni seguenti:
- Installare e configurare Ansible in una macchina virtuale Linux
- Configurare Azure Cloud Shell e, se non si ha accesso a una macchina virtuale Linux, creare una macchina virtuale con Ansible.
Crea gruppo di risorse
Il frammento di playbook di esempio crea un gruppo di risorse di Azure. Un gruppo di risorse è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Creare il lab
L'attività successiva crea il lab di esempio.
- 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
Impostare i criteri del laboratorio
È possibile configurare le impostazioni dei criteri del laboratorio. È possibile impostare i valori seguenti:
-
user_owned_lab_vm_countè il numero di macchine virtuali che un utente può possedere -
user_owned_lab_premium_vm_countè il numero di macchine virtuali Premium che un utente può possedere -
lab_vm_countè il numero massimo di macchine virtuali del lab -
lab_premium_vm_countè il numero massimo di macchine virtuali Lab Premium -
lab_vm_sizeè le dimensioni consentite delle macchine virtuali del lab -
gallery_imageè l'immagine/i della galleria consentita/e -
user_owned_lab_vm_count_in_subnetè il numero massimo di macchine virtuali dell'utente in una subnet -
lab_target_costè il costo target del laboratorio
- 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
Imposta le pianificazioni del laboratorio
L'attività di esempio in questa sezione configura il programma del laboratorio.
Nel frammento di codice seguente viene usato il lab_vms_startup valore per specificare l'ora di avvio della macchina virtuale. Analogamente, l'impostazione del lab_vms_shutdown valore stabilisce l'ora di arresto della macchina virtuale del lab.
- 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
Creare la rete virtuale del lab
Questa attività seguente crea la rete virtuale lab predefinita.
- 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
Definire un'origine dell'artefatto per il laboratorio
Una sorgente di artefatti è un repository GitHub strutturato correttamente che contiene le definizioni degli artefatti e i modelli di Azure Resource Manager. Ogni lab viene fornito con artefatti pubblici predefiniti. Le seguenti attività illustrano come creare un'origine dell'artefatto per un laboratorio.
- 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 }}"
Creare una macchina virtuale all'interno del lab
Creare una macchina virtuale all'interno del 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"
Elenca le fonti degli artefatti e gli artefatti del laboratorio
Per elencare tutte le origini degli artefatti predefiniti e personalizzati nel lab, usare l'attività seguente:
- name: List the artifact sources
azure_rm_devtestlabartifactsource_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
register: output
- debug:
var: output
L'attività seguente elenca tutti gli artefatti:
- 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
Ottenere informazioni su Azure Resource Manager per le origini degli artefatti
Per elencare tutti i modelli di Azure Resource Manager in public environment repository, il repository predefinito con i modelli:
- 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
L'attività seguente recupera i dettagli di un modello specifico di Azure Resource Manager dal repository:
- 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
Creare l'ambiente lab
L'attività seguente crea l'ambiente di laboratorio basato su uno dei modelli del repository dell'ambiente pubblico.
- 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
Crea l'immagine del laboratorio
L'attività seguente crea un'immagine da una macchina virtuale. L'immagine consente di creare macchine virtuali identiche.
- 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
Eliminare il laboratorio
Per eliminare il laboratorio, utilizzare l'attività seguente:
- 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
Scarica il playbook di esempio
Esistono due modi per ottenere il playbook di esempio completo:
-
Scarica il playbook e salvalo in
devtestlab-create.yml. - Creare un nuovo file denominato
devtestlab-create.ymle copiarne il contenuto seguente:
---
- 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
Eseguire il playbook
In questa sezione, esegui il playbook e testa le varie funzionalità illustrate in questo articolo.
Prima di eseguire il playbook, apportare le modifiche seguenti:
-
varsNella sezione sostituire il{{ resource_group_name }}segnaposto con il nome del gruppo di risorse. - Archiviare il token GitHub come variabile di ambiente denominata
GITHUB_ACCESS_TOKEN.
Eseguire il playbook usando ansible-playbook
ansible-playbook devtestlab-create.yml
Pulire le risorse
Salvare il codice seguente come
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgEsegui il playbook usando il comando ansible-playbook. Sostituire il segnaposto con il nome del gruppo di risorse da eliminare. Tutte le risorse all'interno del gruppo di risorse verranno eliminate.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Punti chiave:
- A causa della variabile
registere della sezionedebugdel playbook, i risultati vengono visualizzati al termine del comando.
- A causa della variabile