Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Ansible 2.7 (oder höher) ist erforderlich, um die Beispiel-Playbooks in diesem Artikel auszuführen.
Skalierungssätze für virtuelle Azure-Computer sind ein Azure-Feature, mit dem Sie eine Gruppe identischer VMs mit Lastenausgleich konfigurieren können. Es gibt keine zusätzlichen Kosten zum Skalieren von Sätzen, die von virtuellen Computern erstellt werden. Sie zahlen nur für die zugrunde liegenden Computeressourcen wie vm-Instanzen, Lastenausgleichsgeräte oder verwalteten Datenträgerspeicher. Mit Skalierungssätzen werden die Verwaltungs- und Automatisierungsebenen bereitgestellt, um Ihre Anwendungen auszuführen und zu skalieren. Sie können stattdessen einzelne virtuelle Computer manuell erstellen und verwalten. Es gibt jedoch zwei wichtige Vorteile für die Verwendung von Skalierungssätzen. Sie sind in Azure integriert, und sie skalieren Ihre virtuellen Computer automatisch auf anwendungsanforderungen.
In diesem Artikel erfahren Sie, wie Sie:
- Abrufen von Hostinformationen für eine Gruppe von Azure-VMs
- Klonen und Erstellen der Beispiel-App
- Installieren der JRE (Java-Runtime-Umgebung) in einem Skalierungssatz
- Bereitstellen der Java-Anwendung in einem Skalierungssatz
Voraussetzungen
- Azure-Abonnement: Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
Installieren Sie Ansible: Führen Sie eine der folgenden Optionen aus:
- Installieren und Konfigurieren von Ansible auf einem virtuellen Linux-Computer
- Konfigurieren Sie Azure Cloud Shell, und erstellen Sie – wenn Sie keinen Zugriff auf einen virtuellen Linux-Computer haben – einen virtuellen Computer mit Ansible.
- Skalierungssatz für virtuelle Computer: Wenn Sie noch nicht über einen Skalierungssatz verfügen, können Sie einen Skalierungssatz mit Ansible konfigurieren.
- git - git wird verwendet, um ein Java-Beispiel herunterzuladen, das in diesem Lernprogramm verwendet wird.
- Java SE Development Kit (JDK) – Das JDK wird verwendet, um das Java-Beispielprojekt zu erstellen.
- Apache Maven - Apache Maven wird verwendet, um das Java-Beispielprojekt zu erstellen.
Abrufen von Hostinformationen
Der Playbook-Code in diesem Abschnitt ruft Hostinformationen für eine Gruppe virtueller Computer ab. Der Code ruft die öffentlichen IP-Adressen und das Lastenausgleichsmodul in einer angegebenen Ressourcengruppe ab und erstellt eine Hostgruppe, die im Bestand benannt ist scalesethosts .
Speichern Sie das folgende Beispiel-Playbook unter 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 }}"
Vorbereiten einer Anwendung für die Bereitstellung
Der Playbook-Code in diesem Abschnitt verwendet git , um ein Java-Beispielprojekt von GitHub zu klonen und das Projekt zu erstellen.
Speichern Sie das folgende Playbook unter 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"
Führen Sie das Ansible-Playbook mit dem folgenden Befehl aus.
ansible-playbook app.yml
Nach dem Ausführen des Playbooks wird eine Ausgabe angezeigt, die den folgenden Ergebnissen ähnelt:
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
Die Anwendung in einer Skalierungsgruppe bereitstellen
Der Playbook-Code in diesem Abschnitt wird verwendet für:
- Installieren der JRE auf einer Hostgruppe mit dem Namen
saclesethosts - Bereitstellen der Java-Anwendung in einer Hostgruppe namens
saclesethosts
Es gibt zwei Möglichkeiten, das Beispiel-Playbook abzurufen:
Laden Sie das Playbook herunter , und speichern Sie es auf
vmss-setup-deploy.yml.Erstelle eine neue Datei mit dem Namen
vmss-setup-deploy.yml. Fügen Sie den folgenden Code in die neue Datei ein:
- 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
Bevor Sie das Playbook ausführen, lesen Sie die folgenden Hinweise:
Ersetzen Sie im
varsAbschnitt den{{ admin_password }}Platzhalter durch Ihr eigenes Kennwort.Um den SSH-Verbindungstyp mit Kennwörtern zu verwenden, installieren Sie das sshpass-Programm:
Ubuntu:
apt-get install sshpassIn einigen Umgebungen wird möglicherweise ein Fehler bei der Verwendung eines SSH-Kennworts anstelle eines Schlüssels angezeigt. Wenn sie diesen Fehler erhalten, können Sie die Hostschlüsselüberprüfung deaktivieren, indem Sie die folgende Zeile
/etc/ansible/ansible.cfghinzufügen oder~/.ansible.cfg:[defaults] host_key_checking = False
Führen Sie das Playbook mit dem folgenden Befehl aus:
ansible-playbook vmss-setup-deploy.yml
Die Ausgabe des Befehls "ansible-playbook" gibt an, dass die Java-Beispielanwendung in der Hostgruppe des Skalierungssatzes installiert wurde:
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
Überprüfen der Ergebnisse
Überprüfen Sie die Ergebnisse Ihrer Arbeit, indem Sie zur URL des Lastenausgleichs für Ihren Skalierungssatz navigieren: