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.
Az Ansible telepítése: Válasszon az alábbi lehetőségek közül:
- Az Ansible telepítése és konfigurálása Linux rendszerű virtuális gépen
- Konfigurálja az Azure Cloud Shellt , és – ha nincs hozzáférése Linux rendszerű virtuális géphez – hozzon létre egy virtuális gépet az Ansible használatával.
- Virtuálisgép-méretezési csoport: Ha még nem rendelkezik méretezési csoporttal, konfigurálhat egy méretezési csoportot az Ansible használatával.
- 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
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: