Tutorial: Menyebarkan aplikasi ke kumpulan skala mesin virtual di Azure menggunakan Ansible
Penting
Ansible 2.7 (atau lebih baru) diperlukan untuk menjalankan sampel playbook dalam artikel ini.
set skala komputer virtual Azure adalah fitur Azure yang memungkinkan Anda mengonfigurasi sebuah grup VM dengan beban seimbang yang identik. Tidak ada biaya tambahan untuk set skala dan ini dibangun dari mesin virtual. Anda hanya membayar untuk sumber daya komputasi dasar seperti instans VM, penyeimbang beban, atau penyimpanan Disk Terkelola. Dengan set skala, lapisan manajemen dan otomatisasi disediakan untuk menjalankan dan menskalakan aplikasi Anda. Anda dapat membuat dan mengelola VM individual secara manual. Namun, ada dua manfaat utama dari penggunaan set skala. Ini dibangun ke dalam Azure dan secara otomatis menskalakan mesin virtual Anda untuk memenuhi kebutuhan aplikasi.
Dalam artikel ini, Anda akan mempelajari cara:
- Mengambil informasi host untuk grup VM Azure
- Mengkloning dan membuat aplikasi sampel
- Instal JRE (Java Runtime Environment) pada set skala
- Menyebarkan aplikasi Java ke set skala
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
Instal Ansible: Lakukan salah satu opsi berikut:
- Menginstal dan mengonfigurasi Ansibel pada mesin virtual Linux
- Konfigurasikan Azure Cloud Shell dan - jika Anda tidak memiliki akses ke mesin virtual Linux - buat mesin virtual dengan Ansible.
- Set skala komputer virtual: Jika Belum memiliki set skala, Anda dapat mengonfigurasi kumpulan skala dengan Ansible.
- git - git digunakan untuk mengunduh sampel Java yang digunakan dalam tutorial ini.
- Java SE Development Kit (JDK) - JDK digunakan untuk membangun proyek sampel Java.
- Apache Maven - Apache Maven digunakan untuk membangun proyek sampel Java.
Kumpulkan informasi host
Kode playbook di bagian ini mengambil informasi host untuk grup mesin virtual. Kode mendapatkan alamat IP publik dan load balancer dalam grup sumber daya tertentu dan membuat grup host yang dinamai scalesethosts
dalam inventaris.
Simpan sampel playbook berikut sebagai 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 }}"
Menyiapkan aplikasi untuk penyebaran
Kode playbook di bagian ini digunakan git
untuk mengkloning proyek sampel Java dari GitHub dan membangun proyek.
Simpan playbook berikut sebagai 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"
Jalankan sampel playbook Ansible dengan perintah berikut:
ansible-playbook app.yml
Setelah menjalankan playbook, Anda melihat output yang mirip dengan hasil berikut:
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
Menyebarkan aplikasi ke set skala
Kode playbook di bagian ini digunakan untuk:
- Menginstal JRE pada grup host bernama
saclesethosts
- Menyebarkan aplikasi Java ke grup host bernama
saclesethosts
Ada dua cara untuk mendapatkan playbook sampel:
Unduh playbook dan simpan ke
vmss-setup-deploy.yml
.Buat file baru bernama
vmss-setup-deploy.yml
. Masukkan kode berikut ke file yang baru:
- 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
Sebelum menjalankan playbook, lihat catatan berikut:
Di bagian
vars
, ganti tempat penampung{{ admin_password }}
dengan kata sandi Anda sendiri.Untuk menggunakan jenis koneksi ssh dengan kata sandi, instal program sshpass:
Ubuntu:
apt-get install sshpass
Di beberapa lingkungan, Anda mungkin melihat kesalahan tentang menggunakan kata sandi SSH, dari pada kunci. Jika Anda menerima kesalahan itu, Anda dapat menonaktifkan pemeriksaan kunci host dengan menambahkan baris berikut ke
/etc/ansible/ansible.cfg
atau~/.ansible.cfg
:[defaults] host_key_checking = False
Jalankan playbook dengan perintah berikut:
ansible-playbook vmss-setup-deploy.yml
Output dari menjalankan perintah ansible-playbook menunjukkan bahwa sampel aplikasi Java telah diinstal ke grup host dari set skala:
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
Memverifikasi hasil
Verifikasi hasil pekerjaan Anda dengan menavigasi ke URL load balancer untuk set skala Anda: