Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Ansible 2.8 (или более поздней версии) требуется для запуска примеров сборников схем в этой статье.
Azure DevTest Labs позволяет разработчикам автоматизировать создание сред виртуальных машин для своих приложений. Эти среды можно настроить для разработки, тестирования и обучения приложений.
В этой статье вы узнаете, как:
- Создание лаборатории
- Настройка политик лаборатории
- Настроить расписания лаборатории
- Создание виртуальной сети лаборатории
- Определение источника артефакта для лаборатории
- Создание виртуальной машины в лаборатории
- Перечислите источники артефактов и артефакты лаборатории
- Получите информацию о диспетчере ресурсов Azure для источников артефактов
- Создание лабораторной среды
- Создание образа лаборатории
- Удаление лаборатории
Предпосылки
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Учетная запись службы Azure: Создайте учетную запись службы, запишите следующие значения: appId, displayName, password и tenant.
Установите Ansible: выполните одно из следующих параметров:
- Установка и настройка Ansible на виртуальной машине Linux
- Настройте Azure Cloud Shell и , если у вас нет доступа к виртуальной машине Linux, создайте виртуальную машину с помощью Ansible.
Создать группу ресурсов
Пример фрагмента плейбука создает группу ресурсов Azure. Группа ресурсов — это логический контейнер, в котором развертываются ресурсы Azure и управляются ими.
- 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: "{{ location }}"
storage_type: standard
premium_data_disks: no
register: output_lab
Настройка политик лаборатории
Параметры политики лаборатории можно настроить. Можно задать следующие значения:
-
user_owned_lab_vm_count— это количество виртуальных машин, которые могут принадлежать пользователю -
user_owned_lab_premium_vm_count— это количество виртуальных машин типа "Премиум", которыми может владеть пользователь. -
lab_vm_count— максимальное количество виртуальных машин лаборатории -
lab_premium_vm_count— максимальное количество виртуальных машин лаборатории уровня "Премиум" -
lab_vm_size— допустимый размер виртуальных машин лаборатории -
gallery_image— допустимые галерейные изображения -
user_owned_lab_vm_count_in_subnet— максимальное количество виртуальных машин пользователя в подсети -
lab_target_cost— это целевая стоимость лаборатории
- 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
Установить расписания лаборатории
Пример задачи в этом разделе настраивает расписание лаборатории.
В следующем фрагменте lab_vms_startup кода значение используется для указания времени запуска виртуальной машины. Аналогичным образом, установка lab_vms_shutdown значения устанавливает время завершения работы виртуальной машины лаборатории.
- 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: "{{ location }}"
description: My lab virtual network
register: output
Определение источника артефакта для лаборатории
Источник артефактов — это правильно структурированный репозиторий GitHub, содержащий определение артефакта и шаблоны Azure Resource Manager. Каждая лаборатория оснащена предопределёнными общедоступными артефактами. В следующих задачах показано, как создать источник артефакта для лаборатории.
- 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: 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
Получите информацию о диспетчере ресурсов Azure для источников артефактов
Чтобы перечислить все шаблоны Azure Resource Manager в public environment repository, предопределенном репозитории с шаблонами:
- 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
И следующая задача извлекает сведения о конкретном шаблоне Azure Resource Manager из репозитория:
- 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"
register: output
Создание образа лаборатории
Следующая задача создает образ из виртуальной машины. Образ позволяет создавать идентичные виртуальные машины.
- 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
Удаление лаборатории
Чтобы удалить лабораторию, используйте следующую задачу:
- 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
Получение образца плана действий
Существует два способа получить полный образец плана:
-
Скачайте методическое руководство и сохраните его в
devtestlab-create.yml. - Создайте файл с именем
devtestlab-create.ymlи скопируйте в него следующее содержимое:
---
- 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
Запустите плейбук
В этом разделе запустите сборник схем для тестирования различных функций, показанных в этой статье.
Перед запуском сборника схем внесите следующие изменения:
- В разделе
varsзамените заполнитель{{ resource_group_name }}на имя вашей группы ресурсов. - Сохраните токен GitHub в качестве переменной среды с именем
GITHUB_ACCESS_TOKEN.
Запустите плейбук с помощью ansible-playbook
ansible-playbook devtestlab-create.yml
Очистите ресурсы
Сохраните следующий код как
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgЗапустите сборник схем с помощью команды ansible-playbook . Замените заполнитель именем группы ресурсов для удаления. Все ресурсы в группе ресурсов будут удалены.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Ключевые моменты:
- Результаты отображаются по завершении выполнения команды благодаря переменной
registerи разделуdebugплейбука.
- Результаты отображаются по завершении выполнения команды благодаря переменной