Oktatóanyag: Alkalmazások üzembe helyezése virtuálisgép-méretezési csoportokban az Azure-ban az Ansible használatával

Fontos

Az Ansible 2.7 -et (vagy újabb verziót) a jelen cikkben szereplő minta forgatókönyvek futtatásához kell futtatni.

Az Azure-beli virtuálisgép-méretezési csoportok egy Olyan Azure-szolgáltatás, amellyel azonos, elosztott terhelésű virtuális gépek csoportját konfigurálhatja. A skálázási csoportoknak nincs további költsége, és virtuális gépekből vannak felépítve. Csak a mögöttes számítási erőforrásokért kell fizetnie, például a virtuálisgép-példányokért, a terheléselosztókért vagy a felügyelt lemeztárolókért. A méretezési csoportok biztosítják az alkalmazások futtatásához és méretezéséhez szükséges felügyeleti és automatizálási rétegeket. Ehelyett manuálisan is létrehozhat és kezelhet egyéni virtuális gépeket. A méretezési csoportok használatának azonban két fő előnye van. Az Azure-ba vannak beépítve, és automatikusan skálázzák a virtuális gépeket az alkalmazás igényeinek megfelelően.

Ebben a cikkben az alábbiakkal ismerkedhet meg:

  • Gazdagépadatok lekérése Azure-beli virtuális gépek egy csoportjához
  • A mintaalkalmazás klónozása és létrehozása
  • A JRE (Java Runtime Environment) telepítése méretezési csoportra
  • A Java-alkalmazás üzembe helyezése méretezési csoportban

Előfeltételek

  • Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
  • git - A git segítségével letölthető az ebben az oktatóanyagban használt Java-minta.
  • Java SE Development Kit (JDK) – A JDK a Java-mintaprojekt létrehozásához szükséges.
  • Az Apache Maven - Apache Maven a Java-mintaprojekt létrehozásához használható.

Gazdagép információinak lekérése

Az ebben a szakaszban található forgatókönyvkód lekéri a virtuális gépek egy csoportjának gazdagépadatait. A kód lekéri a nyilvános IP-címeket és a terheléselosztót egy megadott erőforráscsoporton belül, és létrehoz egy készletben elnevezett scalesethosts gazdagépcsoportot.

Mentse a következő mintaforgatókönyvet get-hosts-tasks.yml néven:

- name: Get facts for all Public IPs within a resource groups
  azure_rm_publicipaddress_info:
    resource_group: "{{ resource_group }}"
  register: output_ip_address

- name: Get loadbalancer info
  azure_rm_loadbalancer_info:
    resource_group: "{{ resource_group }}"
    name: "{{ loadbalancer_name }}"
  register: output

- name: Add all hosts
  add_host:
    groups: scalesethosts
    hostname: "{{ output_ip_address.publicipaddresses[0].ip_address }}_{{ item.properties.frontendPort }}"
    ansible_host: "{{ output_ip_address.publicipaddresses[0].ip_address }}"
    ansible_port: "{{ item.properties.frontendPort }}"
    ansible_ssh_user: "{{ admin_username }}"
    ansible_ssh_pass: "{{ admin_password }}"
  with_items:
    - "{{ output.ansible_info.azure_loadbalancers[0].properties.inboundNatRules }}"

Alkalmazás előkészítése üzembe helyezéshez

Az ebben a szakaszban található forgatókönyvkód egy Java-mintaprojekt gitHubról történő klónozására és a projekt összeállítására szolgál git .

Mentse a következő forgatókönyvet app.yml néven:

- hosts: localhost
  vars:
    repo_url: https://github.com/spring-guides/gs-spring-boot.git
    workspace: ~/src/helloworld

  tasks:
  - name: Git Clone sample app
    git:
      repo: "{{ repo_url }}"
      dest: "{{ workspace }}"

  - name: Build sample app
    shell: mvn package chdir="{{ workspace }}/complete"

Futtassa az Ansible-mintaforgatókönyvet az alábbi paranccsal:

ansible-playbook app.yml

A forgatókönyv futtatása után a következő eredményekhez hasonló kimenet jelenik meg:

PLAY [localhost] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Git Clone sample app] 
changed: [localhost]

TASK [Build sample app] 
changed: [localhost]

PLAY RECAP 
localhost                  : ok=3    changed=2    unreachable=0    failed=0

Az alkalmazás üzembe helyezése méretezési csoportban

Az ebben a szakaszban található forgatókönyvkód a következőre szolgál:

  • A JRE telepítése egy nevesített gazdagépcsoportra saclesethosts
  • A Java-alkalmazás üzembe helyezése egy nevesített gazdagépcsoportban saclesethosts

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

  • Töltse le a forgatókönyvet , és mentse a következőre vmss-setup-deploy.yml: .

  • Hozzon létre egy új fájlt vmss-setup-deploy.yml néven. Szúrja be a következő kódot az új fájlba:

- hosts: localhost
  vars:
    resource_group: myResourceGroup
    scaleset_name: myScaleSet
    loadbalancer_name: myScaleSetLb
    admin_username: azureuser
    admin_password: "{{ admin_password }}"
  tasks:
  - include: get-hosts-tasks.yml

- name: Install JRE on a scale set
  hosts: scalesethosts
  become: yes
  vars:
    workspace: ~/src/helloworld
    admin_username: azureuser

  tasks:
  - name: Install JRE
    apt:
      name: default-jre
      update_cache: yes

  - name: Copy app to Azure VM
    copy:
      src: "{{ workspace }}/complete/target/gs-spring-boot-0.1.0.jar"
      dest: "/home/{{ admin_username }}/helloworld.jar"
      force: yes
      mode: 0755

  - name: Start the application
    shell: java -jar "/home/{{ admin_username }}/helloworld.jar" >/dev/null 2>&1 &
    async: 5000
    poll: 0

A forgatókönyv futtatása előtt tekintse meg a következő megjegyzéseket:

  • vars A szakaszban cserélje le a {{ admin_password }} helyőrzőt a saját jelszavára.

  • Az ssh kapcsolattípus jelszavakkal való használatához telepítse az sshpass programot:

    Ubuntu:

    apt-get install sshpass
    

    Centos:

    yum install sshpass
    
  • Egyes környezetekben hiba jelenhet meg az SSH-jelszó kulcs helyett való használatával kapcsolatban. Ha ezt a hibát kapja, letilthatja a gazdagépkulcs-ellenőrzést a következő sor /etc/ansible/ansible.cfg hozzáadásával:~/.ansible.cfg

    [defaults]
    host_key_checking = False
    

Futtassa a forgatókönyvet az alábbi paranccsal:

ansible-playbook vmss-setup-deploy.yml

Az ansible-playbook parancs futtatásának kimenete azt jelzi, hogy a minta Java-alkalmazás telepítve van a méretezési csoport gazdagépcsoportjára:

PLAY [localhost]

TASK [Gathering Facts]
ok: [localhost]

TASK [Get facts for all Public IPs within a resource groups]
ok: [localhost]

TASK [Get loadbalancer info]
ok: [localhost]

TASK [Add all hosts]
changed: [localhost] ...

PLAY [Install JRE on scale set]

TASK [Gathering Facts]
ok: [40.114.30.145_50000]
ok: [40.114.30.145_50003]

TASK [Copy app to Azure VM]
changed: [40.114.30.145_50003]
changed: [40.114.30.145_50000]

TASK [Start the application]
changed: [40.114.30.145_50000]
changed: [40.114.30.145_50003]

PLAY RECAP
40.114.30.145_50000        : ok=4    changed=3    unreachable=0    failed=0
40.114.30.145_50003        : ok=4    changed=3    unreachable=0    failed=0
localhost                  : ok=4    changed=1    unreachable=0    failed=0

Az eredmények ellenőrzése

Ellenőrizze a munka eredményeit a méretezési csoport terheléselosztójának URL-címére való navigálással:

Java app running in a scale set in Azure.

További lépések