Samouczek: wdrażanie aplikacji w zestawach skalowania maszyn wirtualnych na platformie Azure przy użyciu rozwiązania Ansible
Ważne
Rozwiązanie Ansible w wersji 2.7 (lub nowszej) jest wymagane do uruchomienia przykładowych podręczników w tym artykule.
Zestawy skalowania maszyn wirtualnych platformy Azure to funkcja platformy Azure, która umożliwia skonfigurowanie grupy identycznych maszyn wirtualnych o zrównoważonym obciążeniu. Zestawy skalowania nie mają dodatkowych kosztów i są tworzone na podstawie maszyn wirtualnych. Płacisz tylko za bazowe zasoby obliczeniowe, takie jak wystąpienia maszyn wirtualnych, moduły równoważenia obciążenia lub magazyn dysków zarządzanych. Zestawy skalowania udostępniają warstwy zarządzania i automatyzacji do uruchamiania i skalowania Twoich aplikacji. Zamiast tego można ręcznie tworzyć poszczególne maszyny wirtualne i zarządzać nimi. Istnieją jednak dwie kluczowe korzyści wynikające z używania zestawów skalowania. Są one wbudowane na platformie Azure i automatycznie skalują maszyny wirtualne zgodnie z potrzebami aplikacji.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Pobieranie informacji o hoście dla grupy maszyn wirtualnych platformy Azure
- Klonowanie i tworzenie przykładowej aplikacji
- Instalowanie środowiska JRE (Java Runtime Environment) w zestawie skalowania
- Wdrażanie aplikacji Java w zestawie skalowania
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Zainstaluj oprogramowanie Ansible: Wykonaj jedną z następujących opcji:
- Instalowanie i konfigurowanie rozwiązania Ansible na maszynie wirtualnej z systemem Linux
- Skonfiguruj usługę Azure Cloud Shell i — jeśli nie masz dostępu do maszyny wirtualnej z systemem Linux — utwórz maszynę wirtualną za pomocą rozwiązania Ansible.
- Zestaw skalowania maszyn wirtualnych: jeśli nie masz jeszcze zestawu skalowania, możesz skonfigurować zestaw skalowania za pomocą rozwiązania Ansible.
- Usługa git - git jest używana do pobrania przykładu w języku Java używanego w tym samouczku.
- Java SE Development Kit (JDK) — zestaw JDK służy do utworzenia przykładowego projektu w języku Java.
- Narzędzie Apache Maven Apache Maven - służy do kompilowania przykładowego projektu Java.
Pobieranie informacji o hoście
Kod podręcznika w tej sekcji pobiera informacje o hoście dla grupy maszyn wirtualnych. Kod pobiera publiczne adresy IP i moduł równoważenia obciążenia w określonej grupie zasobów i tworzy grupę hostów o nazwie scalesethosts
w spisie.
Zapisz następujący przykładowy podręcznik 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 }}"
Przygotowywanie aplikacji do wdrożenia
Kod podręcznika w tej sekcji służy git
do klonowania przykładowego projektu Java z usługi GitHub i kompilowania projektu.
Zapisz następujący podręcznik 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"
Uruchom przykładowy podręcznik rozwiązania Ansible za pomocą następującego polecenia:
ansible-playbook app.yml
Po uruchomieniu podręcznika zobaczysz dane wyjściowe podobne do następujących wyników:
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
Wdrażanie aplikacji w zestawie skalowania
Kod podręcznika w tej sekcji służy do:
- Instalowanie środowiska JRE w grupie hostów o nazwie
saclesethosts
- Wdrażanie aplikacji Java w grupie hostów o nazwie
saclesethosts
Istnieją dwa sposoby pobrania przykładowego podręcznika:
Pobierz podręcznik i zapisz go w pliku
vmss-setup-deploy.yml
.Utwórz nowy plik o nazwie
vmss-setup-deploy.yml
. Wstaw następujący kod do nowego pliku:
- 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
Przed uruchomieniem podręcznika zapoznaj się z następującymi uwagami:
vars
W sekcji zastąp{{ admin_password }}
symbol zastępczy własnym hasłem.Aby użyć typu połączenia ssh z hasłami, zainstaluj program sshpass:
Ubuntu:
apt-get install sshpass
W niektórych środowiskach może wystąpić błąd dotyczący używania hasła SSH zamiast klucza. Jeśli wystąpi ten błąd, możesz wyłączyć sprawdzanie klucza hosta, dodając następujący wiersz do
/etc/ansible/ansible.cfg
lub~/.ansible.cfg
:[defaults] host_key_checking = False
Uruchom podręcznik za pomocą następującego polecenia:
ansible-playbook vmss-setup-deploy.yml
Dane wyjściowe z uruchomienia polecenia ansible-playbook wskazują, że przykładowa aplikacja Java została zainstalowana w grupie hostów zestawu skalowania:
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
Weryfikowanie wyników
Sprawdź wyniki pracy, przechodząc do adresu URL modułu równoważenia obciążenia dla zestawu skalowania: