Oktatóanyag: Tesztkörnyezetek konfigurálása az Azure DevTest Labsban az Ansible használatával

Fontos

Az Ansible 2.8 (vagy újabb) szükséges a jelen cikkben szereplő minta forgatókönyvek futtatásához.

Az Azure DevTest Labs lehetővé teszi a fejlesztők számára, hogy automatizálják a virtuálisgép-környezetek létrehozását az alkalmazásaikhoz. Ezek a környezetek alkalmazásfejlesztéshez, teszteléshez és betanításhoz konfigurálhatók.

Ebből a cikkből megtudhatja, hogyan:

  • Labor létrehozása
  • A laborszabályzatok beállítása
  • A tesztkörnyezet ütemezésének beállítása
  • A tesztkörnyezet virtuális hálózatának létrehozása
  • Artefaktumforrás definiálása a laborhoz
  • Virtuális gép létrehozása a laborban
  • A laboratórium műtárgy forrásainak és műtárgyainak listázása
  • Azure Resource Manager-információk lekérése az összetevők forrásaihoz
  • A tesztkörnyezet létrehozása
  • A laborrendszerkép létrehozása
  • A tesztkörnyezet törlése

Előfeltételek

  • Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .

Erőforráscsoport létrehozása

A minta forgatókönyv-kódrészlet létrehoz egy Azure-erőforráscsoportot. Az erőforráscsoport egy logikai tároló, amelyben az Azure-erőforrások üzembe helyezése és kezelése történik.

  - name: Create a resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"

A tesztkörnyezet létrehozása

A következő feladat létrehozza a mintalabort.

- 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

A laborszabályzatok beállítása

Beállíthatja a laborházirend-beállításokat. A következő értékek állíthatók be:

  • user_owned_lab_vm_count a felhasználó által birtokolható virtuális gépek száma
  • user_owned_lab_premium_vm_count a felhasználó által birtokolható prémium virtuális gépek száma
  • lab_vm_count a tesztkörnyezeti virtuális gépek maximális száma
  • lab_premium_vm_count a prémium szintű tesztkörnyezeti virtuális gépek maximális száma
  • lab_vm_size az engedélyezett tesztkörnyezeti virtuális gépek mérete(i)
  • gallery_image az engedélyezett galéria kép(ek)
  • user_owned_lab_vm_count_in_subnet a felhasználó virtuális gépeinek maximális száma egy alhálózatban
  • A labor célköltsége 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

A tesztkörnyezet ütemezésének beállítása

Az ebben a szakaszban található mintafeladat konfigurálja a labor ütemezését.

A következő kódrészletben az lab_vms_startup érték a virtuális gép indítási idejének megadására szolgál. Hasonlóképpen, az lab_vms_shutdown érték beállítása létrehozza a tesztkörnyezeti virtuális gép leállítási idejét.

- 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

A tesztkörnyezet virtuális hálózatának létrehozása

Ez a következő feladat létrehozza az alapértelmezett tesztkörnyezeti virtuális hálózatot.

- 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

A laboratóriumhoz szükséges artifact forrás meghatározása

Az összetevők forrása egy megfelelően strukturált GitHub-adattár, amely összetevődefiníciót és Azure Resource Manager-sablonokat tartalmaz. Minden labor előre meghatározott nyilvános összetevőkkel rendelkezik. Az alábbi feladatok bemutatják, hogyan hozhat létre összetevőforrást egy tesztkörnyezethez.

- 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 }}"

Virtuális gép létrehozása a laborban

Hozzon létre egy virtuális gépet a laborban.

- 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"

A laboratórium artefaktumforrásainak és artefaktumainak listázása

A labor összes alapértelmezett és egyéni összetevőforrásának listázásához használja a következő feladatot:

- name: List the artifact sources
  azure_rm_devtestlabartifactsource_facts:
    resource_group: "{{ resource_group }}"
    lab_name: "{{ lab_name }}"
  register: output
- debug:
    var: output

Az alábbi feladat felsorolja az összes összetevőt:

- 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 Resource Manager-információk lekérése az összetevők forrásaihoz

Ha szeretné az összes Azure Resource Manager-sablont listázni az előre meghatározott adattárban public environment repository, akkor kövesse ezeket a lépéseket:

- 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

Az alábbi feladat pedig egy adott Azure Resource Manager-sablon részleteit kéri le az adattárból:

- 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

A tesztkörnyezet létrehozása

Az alábbi feladat a nyilvános környezet tárházának egyik sablonja alapján hozza létre a tesztkörnyezetet.

- 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

A laboratóriumi képfájl létrehozása

Az alábbi feladat létrehoz egy rendszerképet egy virtuális gépről. A kép lehetővé teszi, hogy azonos virtuális gépeket hozzon létre.

- 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

A tesztkörnyezet törlése

A tesztkörnyezet törléséhez használja a következő feladatot:

- 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

A minta forgatókönyv lekérése

A teljes minta forgatókönyv kétféleképpen szerezhető be:

  • Töltse le a forgatókönyvet , és mentse a következőre devtestlab-create.yml: .
  • Hozzon létre egy új, elnevezett devtestlab-create.yml fájlt, és másolja a következő tartalmat a fájlba:
---
- 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

A forgatókönyv futtatása

Ebben a szakaszban futtassa a forgatókönyvet a cikkben bemutatott különböző funkciók teszteléséhez.

A forgatókönyv futtatása előtt végezze el a következő módosításokat:

  • A vars szakaszban cserélje le a {{ resource_group_name }} helyőrzőt az erőforráscsoport nevére.
  • A GitHub-jogkivonatot egy környezeti változóként tárolja.GITHUB_ACCESS_TOKEN

A forgatókönyv futtatása ansible-playbook használatával

ansible-playbook devtestlab-create.yml

Erőforrások tisztítása

  1. Mentse a következő kódot.delete_rg.yml

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Futtassa a forgatókönyvet az ansible-playbook paranccsal. Cserélje le a helyőrzőt a törölni kívánt erőforráscsoport nevére. Az erőforráscsoporton belüli összes erőforrás törlődik.

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    Főbb pontok:

    • register A forgatókönyv változója és debug szakasza miatt az eredmények a parancs befejeződésekor jelennek meg.

Következő lépések