Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Se requiere Ansible 2.8 (o posterior) para ejecutar los cuadernos de estrategias de ejemplo de este artículo.
Azure DevTest Labs permite a los desarrolladores automatizar la creación de entornos de máquina virtual para sus aplicaciones. Estos entornos se pueden configurar para el desarrollo, las pruebas y el entrenamiento de aplicaciones.
En este artículo aprenderá a:
- Creación de un laboratorio
- Establecimiento de las directivas de laboratorio
- Establecimiento de las programaciones de laboratorio
- Creación de la red virtual del laboratorio
- Defina una fuente de artefactos para el laboratorio
- Creación de una máquina virtual en el laboratorio
- Lista de las fuentes de artefactos y artefactos del laboratorio
- Obtención de información de Azure Resource Manager para los orígenes de artefactos
- Creación del entorno de laboratorio
- Creación de la imagen de laboratorio
- Eliminación del laboratorio
Prerrequisitos
- Suscripción de Azure: si no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.
- Entidad de servicio de Azure: cree una entidad de servicio y tome nota de los siguientes valores: appId, displayName, password y tenant.
Instale Ansible: realice una de las siguientes opciones:
- Instalación y configuración de Ansible en una máquina virtual Linux
- Configure Azure Cloud Shell y, si no tiene acceso a una máquina virtual Linux, cree una máquina virtual con Ansible.
Creación de un grupo de recursos
El fragmento de código del playbook de ejemplo crea un grupo de recursos de Azure. Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
- name: Create a resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
Creación del laboratorio
La siguiente tarea crea el laboratorio de muestra.
- 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
Establecimiento de las directivas de laboratorio
Puede configurar las directivas de laboratorio. Se pueden establecer los siguientes valores:
-
user_owned_lab_vm_countes el número de máquinas virtuales que un usuario puede poseer. -
user_owned_lab_premium_vm_countes el número de máquinas virtuales premium que un usuario puede poseer. -
lab_vm_countes el número máximo de máquinas virtuales de laboratorio. -
lab_premium_vm_countes el número máximo de máquinas virtuales premium de laboratorio -
lab_vm_sizees el tamaño permitido de las máquinas virtuales del laboratorio. -
gallery_imageson las imágenes permitidas de la galería. -
user_owned_lab_vm_count_in_subnetes el número máximo de máquinas virtuales del usuario en una subred. -
lab_target_costes el costo objetivo 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
Establecimiento de las programaciones de laboratorio
La tarea de ejemplo de esta sección configura la programación del laboratorio.
En el siguiente fragmento de código, el lab_vms_startup valor se usa para especificar el tiempo de inicio de la máquina virtual. Del mismo modo, al establecer el lab_vms_shutdown valor se establece el tiempo de apagado de la máquina virtual del laboratorio.
- 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
Creación de la red virtual del laboratorio
Esta tarea siguiente crea la red virtual de laboratorio predeterminada.
- 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
Definición de un origen de artefacto para el laboratorio
Un origen de artefactos es un repositorio de GitHub estructurado correctamente que contiene la definición de artefactos y las plantillas de Azure Resource Manager. Cada laboratorio incluye artefactos públicos predefinidos. Las siguientes tareas muestran cómo crear una fuente de artefacto para 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 }}"
Creación de una máquina virtual en el laboratorio
Cree una máquina virtual en el laboratorio.
- 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"
Enumeración de los orígenes y artefactos del laboratorio
Para enumerar todos los orígenes de artefactos predeterminados y personalizados del laboratorio, use la siguiente tarea:
- name: List the artifact sources
azure_rm_devtestlabartifactsource_facts:
resource_group: "{{ resource_group }}"
lab_name: "{{ lab_name }}"
register: output
- debug:
var: output
En la tarea siguiente se enumeran todos los artefactos:
- 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
Obtención de información de Azure Resource Manager para los orígenes de artefactos
Para enumerar todas las plantillas de Azure Resource Manager en public environment repository, el repositorio predefinido con plantillas:
- 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
Y la siguiente tarea recupera los detalles de una plantilla específica de Azure Resource Manager del repositorio:
- 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
Creación del entorno de laboratorio
La siguiente tarea crea el entorno de laboratorio basado en una de las plantillas del repositorio de entorno público.
- 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
Creación de la imagen de laboratorio
La siguiente tarea crea una imagen a partir de una máquina virtual. La imagen permite crear máquinas virtuales idénticas.
- 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
Eliminación del laboratorio
Para eliminar el laboratorio, use la siguiente tarea:
- 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
Consigue la guía de ejemplo
Hay dos maneras de obtener el cuaderno de estrategias de ejemplo completo:
-
Descargue el cuaderno de estrategias y guárdelo en
devtestlab-create.yml. - Cree un nuevo archivo denominado
devtestlab-create.ymly copie el siguiente contenido en él:
---
- 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
Ejecución del cuaderno de estrategias
En esta sección, ejecute el cuaderno de estrategias para probar varias características que se muestran en este artículo.
Antes de ejecutar el cuaderno de estrategias, realice los siguientes cambios:
- En la
varssección, reemplace el{{ resource_group_name }}marcador de posición por el nombre del grupo de recursos. - Almacene el token de GitHub como una variable de entorno denominada
GITHUB_ACCESS_TOKEN.
Ejecutar el playbook utilizando ansible-playbook
ansible-playbook devtestlab-create.yml
Limpieza de recursos
Guarde el código siguiente como
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgEjecute el cuaderno de estrategias mediante el comando ansible-playbook . Reemplace el marcador de posición por el nombre del grupo de recursos que se va a eliminar. Se eliminarán todos los recursos del grupo de recursos.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Puntos clave:
- Debido a la variable
registery la seccióndebugdel manual de operaciones, los resultados se muestran cuando finaliza el comando.
- Debido a la variable