Sdílet prostřednictvím


Kurz: Nasazování aplikací do škálovacích sad virtuálních počítačů v Azure pomocí Ansible

Důležité

K spuštění ukázkových playbooků v tomto článku se vyžaduje Ansible 2.7 (nebo novější).

Škálovací sady virtuálních počítačů Azure jsou funkce Azure, která umožňuje nakonfigurovat skupinu identických virtuálních počítačů s vyrovnáváním zatížení. Škálovací sady nejsou žádné další náklady a jsou sestavené z virtuálních počítačů. Platíte jenom za základní výpočetní prostředky, jako jsou instance virtuálních počítačů, nástroje pro vyrovnávání zatížení nebo úložiště spravovaných disků. Škálovací sady poskytují vrstvy správy a automatizace pro spouštění a škálování aplikací. Místo toho můžete ručně vytvářet a spravovat jednotlivé virtuální počítače. Použití škálovacích sad ale má dvě klíčové výhody. Jsou integrované do Azure a automaticky škálují vaše virtuální počítače tak, aby vyhovovaly potřebám aplikací.

V tomto článku získáte informace o těchto tématech:

  • Načtení informací o hostiteli pro skupinu virtuálních počítačů Azure
  • Klonování a sestavení ukázkové aplikace
  • Instalace prostředí JRE (Java Runtime Environment) do škálovací sady
  • Nasazení aplikace v Javě do škálovací sady

Požadavky

  • Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
  • git - git se použije ke stažení ukázky v Javě použité v tomto kurzu.
  • Java SE Development Kit (JDK) – Sada JDK se použije k sestavení ukázkového projektu v Javě.
  • Apache Maven - Apache Maven se používá k sestavení ukázkového projektu Java.

Získání informací o hostiteli

Kód playbooku v této části načte informace o hostiteli pro skupinu virtuálních počítačů. Kód získá veřejné IP adresy a nástroj pro vyrovnávání zatížení v rámci zadané skupiny prostředků a vytvoří skupinu hostitelů pojmenovanou scalesethosts v inventáři.

Uložte následující ukázkový playbook jako get-hosts-tasks.yml:

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

Příprava aplikace na nasazení

Kód playbooku v této části používá git ke klonování ukázkového projektu Java z GitHubu a sestavení projektu.

Uložte následující ukázkový playbook jako app.yml:

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

Pomocí následujícího příkazu spusťte ukázkový playbook Ansible:

ansible-playbook app.yml

Po spuštění playbooku se zobrazí výstup podobný následujícím výsledkům:

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

Nasazení aplikace do škálovací sady

Kód playbooku v této části slouží k:

  • Instalace JRE do skupiny hostitelů s názvem saclesethosts
  • Nasazení aplikace v Javě do skupiny hostitelů s názvem saclesethosts

Ukázkový playbook můžete získat dvěma způsoby:

  • Stáhněte playbook a uložte ho do vmss-setup-deploy.ymlsouboru .

  • Vytvořte nový soubor s názvem vmss-setup-deploy.yml. Do nového souboru vložte následující kód:

- 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

Před spuštěním playbooku si přečtěte následující poznámky:

  • vars V části nahraďte {{ admin_password }} zástupný symbol vlastním heslem.

  • Pokud chcete použít typ připojení ssh s hesly, nainstalujte program sshpass:

    Ubuntu:

    apt-get install sshpass
    
  • V některých prostředích se může zobrazit chyba týkající se použití hesla SSH místo klíče. Pokud se zobrazí tato chyba, můžete kontrolu klíče hostitele zakázat přidáním následujícího řádku do /etc/ansible/ansible.cfg ~/.ansible.cfgnebo:

    [defaults]
    host_key_checking = False
    

Pomocí následujícího příkazu spusťte playbook:

ansible-playbook vmss-setup-deploy.yml

Výstup spuštění příkazu ansible-playbook indikuje, že ukázková aplikace Java byla nainstalována do skupiny hostitelů škálovací sady:

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

Ověření výsledků

Zkontrolujte výsledky práce tak, že přejdete na adresu URL nástroje pro vyrovnávání zatížení vaší škálovací sady:

Aplikace Java spuštěná ve škálovací sadě v Azure

Další kroky