Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Ansible 2.8 (ou version ultérieure) est nécessaire pour exécuter les exemples de playbooks dans cet article.
Azure DevTest Labs permet aux développeurs d’automatiser la création d’environnements de machine virtuelle pour leurs applications. Ces environnements peuvent être configurés pour le développement, le test et la formation des applications.
Dans cet article, vous allez apprendre à :
- Création d’un laboratoire
- Définir les stratégies de laboratoire
- Définir les planifications du labo
- Créer le réseau virtuel lab
- Définir une source d’artefact pour le labo
- Créer une machine virtuelle dans le labo
- Répertorier les sources d'artefacts et les artefacts du laboratoire
- Obtenir des informations Azure Resource Manager pour les sources d’artefacts
- Créer l’environnement lab
- Créer l’image du labo
- Supprimer le labo
Prerequisites
- Abonnement Azure : si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Principal de service Azure : Créez un principal de service, notez les valeurs suivantes : appId, displayName, password et tenant.
Installez Ansible : Effectuez l’une des options suivantes :
- Installer et configurer Ansible sur une machine virtuelle Linux
- Configurez Azure Cloud Shell et, si vous n’avez pas accès à une machine virtuelle Linux, créez une machine virtuelle avec Ansible.
Créer un groupe de ressources
L’exemple d’extrait de code de playbook crée un groupe de ressources Azure. Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Créer le labo
La tâche suivante crée le laboratoire d’exemple.
- 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
Définir les stratégies de laboratoire
Vous pouvez configurer les paramètres de politique du laboratoire. Les valeurs suivantes peuvent être définies :
-
user_owned_lab_vm_countest le nombre de machines virtuelles qu’un utilisateur peut posséder -
user_owned_lab_premium_vm_countest le nombre de machines virtuelles Premium qu’un utilisateur peut posséder -
lab_vm_countest le nombre maximal de machines virtuelles de laboratoire -
lab_premium_vm_countest le nombre maximal de machines virtuelles Premium de laboratoire -
lab_vm_sizeest la ou les tailles de machines virtuelles de laboratoire autorisées -
gallery_imagedésigne l'image ou les images de la galerie autorisées -
user_owned_lab_vm_count_in_subnetest le nombre maximal de machines virtuelles de l’utilisateur dans un sous-réseau -
lab_target_costest le coût cible du labo
- 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
Définir les planifications du labo
L’exemple de tâche de cette section définit le calendrier du laboratoire.
Dans l’extrait de code suivant, la lab_vms_startup valeur est utilisée pour spécifier l’heure de démarrage de la machine virtuelle. De même, la définition de la lab_vms_shutdown valeur établit le temps d’arrêt de la machine virtuelle 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
Créer le réseau virtuel lab
Cette tâche suivante crée le réseau virtuel lab par défaut.
- 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
Définir une source d’artefact pour le labo
Une source d’artefacts est un référentiel GitHub correctement structuré qui contient la définition d’artefact et les modèles Azure Resource Manager. Chaque laboratoire est fourni avec des artefacts publics prédéfinis. Les tâches suivantes vous montrent comment créer une source d’artefact pour un laboratoire.
- 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 }}"
Créer une machine virtuelle dans le labo
Créez une machine virtuelle dans le labo.
- 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"
Répertorier les sources d’artefacts et les artefacts du labo
Pour répertorier toutes les sources d’artefacts par défaut et personnalisées dans le labo, utilisez la tâche suivante :
- name: List the artifact sources
azure_rm_devtestlabartifactsource_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
register: output
- debug:
var: output
La tâche suivante répertorie tous les artefacts :
- 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
Obtenir des informations Azure Resource Manager pour les sources d’artefacts
Pour répertorier tous les modèles Azure Resource Manager dans public environment repository, le référentiel prédéfini avec des modèles :
- 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
La tâche suivante récupère les détails d’un modèle Azure Resource Manager spécifique à partir du référentiel :
- 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
Créer l’environnement lab
La tâche suivante crée l’environnement lab basé sur l’un des modèles du référentiel d’environnement public.
- 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
Créer l’image du labo
La tâche suivante crée une image à partir d’une machine virtuelle. L’image vous permet de créer des machines virtuelles identiques.
- 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
Supprimer le labo
Pour supprimer le labo, utilisez la tâche suivante :
- 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
Obtenir l’exemple de manuel
Il existe deux façons d’obtenir le playbook complet d'exemple :
-
Téléchargez le playbook et sauvegardez-le dans
devtestlab-create.yml. - Créez un fichier nommé
devtestlab-create.ymlet copiez le contenu suivant dans celui-ci :
---
- 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
Exécuter le manuel d'instructions
Dans cette section, exécutez le playbook pour tester différentes fonctionnalités présentées dans cet article.
Avant d’exécuter le playbook, apportez les modifications suivantes :
- Dans la
varssection, remplacez l’espace{{ resource_group_name }}réservé par le nom de votre groupe de ressources. - Stockez le jeton GitHub en tant que variable d’environnement nommée
GITHUB_ACCESS_TOKEN.
Exécuter le playbook avec Ansible-playbook
ansible-playbook devtestlab-create.yml
Nettoyer les ressources
Enregistrez le code suivant sous
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgExécutez le playbook à l’aide de la commande ansible-playbook . Remplacez l’espace réservé par le nom du groupe de ressources à supprimer. Toutes les ressources du groupe de ressources seront supprimées.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Points essentiels :
- En raison de la variable
registeret de la sectiondebugdu playbook, les résultats s’affichent lorsque la commande se termine.
- En raison de la variable