Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Ansible 2.8 (of hoger) is vereist om de voorbeeldplaybooks in dit artikel uit te voeren.
Met Azure DevTest Labs kunnen ontwikkelaars het maken van VM-omgevingen voor hun apps automatiseren. Deze omgevingen kunnen worden geconfigureerd voor het ontwikkelen, testen en trainen van apps.
In dit artikel leert u het volgende:
- Een lab maken
- Het labbeleid instellen
- De labplanningen instellen
- Het virtuele labnetwerk maken
- Een artefactbron voor het lab definiëren
- Een VIRTUELE machine maken in het lab
- De artefactbronnen en artefacten van het lab weergeven
- Informatie over Azure Resource Manager ophalen voor de artefactbronnen
- De testomgeving maken
- De labafbeelding creëren
- Het lab verwijderen
Vereiste voorwaarden
- Azure-abonnement: als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
- Azure-service-principal: maak een service-principal, noteer de volgende waarden: appId, displayName, wachtwoord en tenant.
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.
Resourcegroep aanmaken
Met het voorbeeldplaybookfragment wordt een Azure-resourcegroep gemaakt. Een resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd.
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Het lab maken
Met de volgende taak wordt het voorbeeldlab gemaakt.
- 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
Het labbeleid instellen
U kunt instellingen voor labbeleid instellen. De volgende waarden kunnen worden ingesteld:
-
user_owned_lab_vm_countis het aantal virtuele machines waarvan een gebruiker eigenaar kan zijn -
user_owned_lab_premium_vm_countis het aantal premium-VM's waarvan een gebruiker eigenaar kan zijn -
lab_vm_countis het maximum aantal lab-VM's -
lab_premium_vm_countis het maximum aantal lab-premium-VM's -
lab_vm_sizeis de toegestane grootte(en) van lab-VM's -
gallery_imageis de toegestane galerieafbeelding(en) -
user_owned_lab_vm_count_in_subnetis het maximum aantal vm's van een gebruiker in een subnet -
lab_target_costis de streefkosten van het 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
De labplanningen instellen
Met de voorbeeldtaak in deze sectie wordt het labschema geconfigureerd.
In het volgende codefragment wordt de lab_vms_startup waarde gebruikt om de opstarttijd van de VIRTUELE machine op te geven. Op dezelfde manier bepaalt het instellen van de waarde de afsluittijd van de lab_vms_shutdown VM van het 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
Het virtuele labnetwerk maken
Met deze volgende taak maakt u het virtuele standaardnetwerk van het lab.
- 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
Een artefactbron voor het lab definiëren
Een artefactbron is een correct gestructureerde GitHub-opslagplaats die artefactdefinitie en Azure Resource Manager-sjablonen bevat. Elk lab wordt geleverd met vooraf gedefinieerde openbare artefacten. In de volgende taken ziet u hoe u een artefactbron voor een lab maakt.
- 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 }}"
Een VIRTUELE machine maken in het lab
Maak een VIRTUELE machine in het 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"
De artefactbronnen en artefacten van het lab weergeven
Als u alle standaard- en aangepaste artefactbronnen in het lab wilt weergeven, gebruikt u de volgende taak:
- name: List the artifact sources
azure_rm_devtestlabartifactsource_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
register: output
- debug:
var: output
De volgende taak bevat alle artefacten:
- 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
Informatie over Azure Resource Manager ophalen voor de artefactbronnen
Als u alle Azure Resource Manager-sjablonen in public environment repositoryde vooraf gedefinieerde opslagplaats met sjablonen wilt weergeven:
- 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
En met de volgende taak worden details opgehaald van een specifieke Azure Resource Manager-sjabloon uit de opslagplaats:
- 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
De testomgeving maken
Met de volgende taak maakt u de testomgeving op basis van een van de sjablonen uit de opslagplaats voor openbare omgevingen.
- 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
De labafbeelding creëren
Met de volgende taak maakt u een image van een virtuele machine. Het image stelt je in staat om identieke VM's te maken.
- 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
Het lab verwijderen
Gebruik de volgende taak om het lab te verwijderen:
- 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
Het voorbeeldplaybook ophalen
Er zijn twee manieren om het volledige voorbeeldplaybook op te halen:
- Download het playbook en sla het op in
devtestlab-create.yml. - Maak een nieuw bestand met de naam
devtestlab-create.ymlen kopieer de volgende inhoud naar het bestand:
---
- 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
Het draaiboek uitvoeren
Voer in deze sectie het playbook uit om verschillende functies te testen die in dit artikel worden weergegeven.
Voordat u het playbook uitvoert, moet u de volgende wijzigingen aanbrengen:
- Vervang in de
varssectie de{{ resource_group_name }}tijdelijke aanduiding door de naam van uw resourcegroep. - Sla het GitHub-token op als een omgevingsvariabele met de naam
GITHUB_ACCESS_TOKEN.
Het playbook uitvoeren met ansible-playbook
ansible-playbook devtestlab-create.yml
De hulpbronnen 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: rgVoer 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
registervariabele endebugsectie van het playbook worden de resultaten weergegeven wanneer de opdracht is voltooid.
- Vanwege de