Stellen Sie mit Ansible und Jenkins ein Image bereit, das aus Tomcat, Java und MySQL besteht

In diesem Tutorial verwenden Sie ** Ansible ** und ** Jenkins **, um ein Image aus Tomcat, ** Java ** und MySQL in ** Alibaba Cloud ** bereitzustellen.

Voraussetzungen

  1. Mindestens ein [Jenkins-Server](https://www.alibabacloud.com/blog/ci%2Fcd-with-jenkins --- Teil-1% 3A-install-jenkins-on-ubuntu_593717? Spm = a2c65.11461447.0.0.53a46c64aNElRK) ist erforderlich (nur für Master- oder Master / Slave-Einstellungen).

Überprüfen Sie anschließend nach dem Einrichten der Master / Slave-Umgebung (Agent) für den Jenkins-Server den Status des Servers, um sicherzustellen, dass der Agent normal ausgeführt wird. Insbesondere in meinem Setup verwende ich den Masterknoten als Jenkins-Server und den Agentencomputer für Ansible. Wenn Sie möchten, können Sie nur einen Computer haben, indem Sie Ansible auf dem Master selbst installieren.

image.png

  1. Installieren Sie dann das Ansible Tool auf den Master- und Agent-Computern.

  2. Stellen Sie Ansible vor. Ansible ist ein leistungsstarkes Tool für die IT-Automatisierung, das im CI / CD-Prozess verwendet werden kann, um eine Zielumgebung bereitzustellen und Anwendungen darauf bereitzustellen. Beachten Sie jedoch, dass die Wartung von Ansible umständlich ist und Skripte auf lange Sicht wiederverwendet. Dies ist nützlich, wenn Sie dieselbe Aufgabe auf verschiedenen Servern / Umgebungen von einem zentralen Ort aus ausführen möchten, an dem Ansible installiert ist. Ansible ist völlig agentenlos, also Chef und Puppet Es hat einen Vorteil gegenüber anderen IaC-Tools (Infrastructure-as-Code) wie a2c65.11461447.0.0.53a46c64aNElRK. Mit Ansible muss kein Agent auf dem Client-System installiert werden, und die SSH-Kommunikation zwischen Client und Server bietet Automatisierung. Mit Hunderten von Instanzen in einer bestimmten Region ist die gesamte Automatisierung einfach. Ansible Playbooks sind in der Sprache YAML / YML geschrieben.

Wenn es um Ansible geht, sind auch die folgenden Kenntnisse erforderlich.

--Control Node: Der Computer, der für den Server verantwortlich ist, den Ansible installiert und verwaltet. --Inventory: Eine Datei, die den Host und die Hostgruppe definiert, auf denen Befehle, Module und Aufgaben in einem Playbook ausgeführt werden. Diese Datei kann je nach Ansible-Umgebung und Plug-In in einem von vielen Formaten vorliegen. Wird verwendet, um an anderer Stelle eine projektspezifische Inventardatei zu erstellen. --Playbook: Teil der Konfigurations-, Bereitstellungs- und Orchestrierungssprache von Ansible. Sie können die Richtlinie beschreiben, die Sie auf das Remote-System anwenden möchten, und die Reihenfolge der Schritte.

Installation von Ansible- und Ansible Alicloud-Modulen

Installieren Sie zuerst das Ansible-Plug-In auf Jenkins. Führen Sie dazu die folgenden Schritte aus.

  1. Klicken Sie im Dashboard auf Jenkins verwalten.

image.png

  1. Klicken Sie auf Plugins verwalten und suchen Sie das Ansible-Plugin in der Suchleiste oben rechts auf der Seite.

image.png

  1. Wählen Sie Ansible und klicken Sie auf Jetzt herunterladen, um es nach dem Neustart zu installieren.

Hinweis: Installieren Sie nicht Ansible Tower, das für das aktuelle Setup in diesem Lernprogramm nicht erforderlich ist.

image.png

Nach der Installation des Ansible-Plug-Ins auf Jenkins besteht der nächste Schritt darin, Ansible auf dem Client / Agent-Computer zu installieren.

Installieren Sie Ansible auf dem Client / Agent-Computer

Das Alibaba Ansible-Modul wird regelmäßig aktualisiert. Die neueste Version finden Sie unter GitHub Link. Ich empfehle es.

  1. Öffnen Sie ein Terminalfenster auf dem Agentencomputer und führen Sie den folgenden Befehl aus.
sudo yum check-update; sudo yum install -y gcc libffi-devel python-devel openssl-devel epel-release
sudo yum install -y python-pip python-wheel
sudo apt-get update && sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip
  1. Geben Sie den folgenden Befehl ein, um das erforderliche Paket Ansible for Alibaba zu installieren.
sudo pip install ansible

sudo pip install ansible_alicloud

sudo pip install ansible_alicloud_module_utils

Richten Sie das Ansible-Playbook ein

Ich habe Ansibles Playbook-Skript für die Bereitstellung von Alibaba ECS [hier] erstellt (https://github.com/nadaraj15/alibaba_ansible/?spm=a2c65.11461447.0.0.53a46c64aNElRK). Sie können den Quellcode teilen und den Wert des Parameters an Ihre Umgebung anpassen.

    alicloud_access_key: <Alibaba Access Key>
    alicloud_secret_key: <Alibaba Secret Key>
    alicloud_region: <Alibaba Region for your resource> e.g. - ap-south-1
    alicloud_zone: <Alibaba Zone for your resource> e.g. ap-south-1a
    password: <New VM Password>
    image: "m-a2d4qmk8v2w9s5wmh0rw"  

Hinweis: Ich importiere Bilder von Alibaba Application Stacks, die von Zhuyun bereitgestellt werden. Hier überprüfen. Es besteht aus Linux, Nginx, MySQL und Jdk-Tomcat (Nginx1.6-jdk1.7-tomcat7-mysql5.5-vsFTPd2.2.2).

Zugriffsschlüssel und geheime Generierung

Jetzt ist es Zeit, den Zugangsschlüssel und das Geheimnis zu generieren. Führen Sie dazu die folgenden Schritte aus.

  1. Um den "Zugriffsschlüssel" und den "geheimen Schlüssel" zu erhalten, rufen Sie die [Alibaba Cloud Console] auf (https://account.alibabacloud.com/login/login.htm?spm=a2c65.11461447.0.0.53a46c64aNElRK). Wählen Sie dann im Produktmenü die Option Resource Access Management (RAM).

image.png

  1. Klicken Sie im linken Navigationsbereich auf die Option Benutzer und wählen Sie Benutzer erstellen.

image.png

  1. Erstellen Sie einen neuen Benutzer und geben Sie Ihren Login- und Anzeigenamen ein. Aktivieren Sie anschließend im [Zugriffsmodus] [Programmzugriff]. Sie müssen diesem Benutzer keinen Zugriff auf die Konsolenkennwortanmeldung gewähren.

image.png

  1. Kopieren Sie die "AccessKeyId" und "AccessKeySecret", die die Werte von "alicloud_access_key" und "alicloud_secret_key" im Playbook sind.

Hinweis: Wenn Sie das Dialogfeld schließen, sind die AccessKey-Informationen nicht mehr verfügbar. Daher ist es wichtig, diese Informationen zu kopieren und zu speichern, bevor Sie das Dialogfeld schließen.

image.png

  1. Stellen Sie die entsprechenden Berechtigungen bereit, um Ressourcen wie VPCs, V-Switchs, Sicherheitsgruppen oder ECS-Instanzen bereitzustellen. Ich biete Administratorzugriff, der den vollständigen Zugriff auf Alibaba Cloud-Dienste und -Ressourcen ermöglicht.

image.png

image.png

Alibaba Wolkenregionen und Zonen

image.png

image.png

image.png

image.png

Anmerkung 1.

  1. Um die vollständige Liste zu erhalten, können Sie die Alibaba Cloud CLI-Tools verwenden. Es spuckt auch die JSON-Wand aus, so dass es auch praktisch ist, auf * nix zu sein und das jq-Tool zu verwenden. Vor diesem Hintergrund benötigen Sie lediglich dieses kurze Shell-Skript.
#!/usr/bin/env bash

for region in $( aliyun ecs DescribeRegions | jq '.Regions.Region[].RegionId' )
do
    echo $region
    reg=$( echo $region | sed s/\"//g )
    echo '---'
    for zone in $( aliyun ecs DescribeZones --RegionId $reg | jq '.Zones.Zone[].ZoneId' | sort )
    do
        echo $zone
    done
    echo ''
done
  1. Wenn Sie Ressourcen für die folgenden Regionen / Zonen bereitstellen möchten, registrieren Sie bitte Ihren richtigen Namen über diesen Link. ..
alicloud_region: cn-beijing
alicloud_zone: cn-beijing-a

Die Bild-ID jeder Region wird unten angezeigt (für Linux-, Nginx-, MySQL-, Jdk-Tomcat-Bilder). Natürlich müssen Sie die Bild-ID je nach Region ändern.

image.png

Erstellen und Bereitstellen einer Alibaba-VM mithilfe eines Jenkins-Jobs

Gehen Sie folgendermaßen vor, um eine Alibaba-VM mithilfe eines Jenkins-Jobs zu erstellen und bereitzustellen:

  1. Wählen Sie im Jenkins-Dashboard die Option Neues Element.

image.png

  1. Geben Sie einen Namen ein, wählen Sie Freestyle-Projekt und klicken Sie auf OK.

image.png

  1. (Optional) Bitte geben Sie unter Allgemein eine kurze Beschreibung als Referenz an.

image.png

  1. Wählen Sie oben die Registerkarte Quellcodeverwaltung (SCM) oder scrollen Sie nach unten und geben Sie die folgenden Informationen ein:

SCM: - Git Repository-URL: -GitHub-Link mit geänderten Parametern Beispiel: https://github.com/nadaraj15/alibaba_ansible/ Anmeldeinformationen: -None (Öffentliches Repository, also Anmeldeinformationen in Jenkins speichern, wenn privat) Zweigspezifizierer (leer für 'any'): - * / master

image.png

  1. Überspringen Sie als Nächstes den Build-Trigger und wechseln Sie zur Build-Umgebung. Beim Erstellen eines neuen Projekts stehen verschiedene Einstellungen zur Verfügung. Auf dieser Einstellungsseite können Sie auch Erstellungsschritte hinzufügen, um zusätzliche Aktionen wie das Ausführen von Skripten auszuführen. Führen Sie stattdessen ein Shell-Skript aus, um die Ansible Playbook-Datei von GitHub herunterzuladen. Verwenden Sie den folgenden Befehl.
sudo apt-get update  (Optional)
sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip (Optional)
sudo pip install ansible[azure]==2.7.0rc2 (Optional)
sudo apt-get install -y maven (Optional)
cd /usr/bin
sudo wget https://raw.githubusercontent.com/nadaraj15/alibaba_ansible/master/AliVM.yml

image.png

image.png

  1. Ich möchte einen Build-Schritt hinzufügen und ein ansible Playbook starten. Dieser Schritt führt ein ansible Playbook aus. Geben Sie die folgenden Informationen ein.

--Playbook-Pfad: --AliVM.yml (Name des Playbooks) --Inventar: --Wählen Sie "Inventar nicht angeben" --Credentials: -Select None (Ich habe die Anmeldeinformationen in die Bereitstellungsdatei eingebettet, damit ich die Anmeldeinformationen als Umgebungsvariable übergeben kann.)

image.png

image.png

  1. Bereinigen Sie den Arbeitsbereich nach der Bereitstellung und fügen Sie einen Shell-Skriptausführungsschritt mit dem folgenden Befehl hinzu:

Hinweis: Wenn "jenkins_home" Ihr Standort ist, wird der Standardpfad auf "/ var / jenkins_home" gesetzt. Wenn Sie jedoch einen benutzerdefinierten Speicherort haben, können Sie diesen Speicherort stattdessen verwenden.

sudo rm -rf /var/jenkins_home/workspaces/<workspace_name>

image.png

  1. Fügen Sie nach Bedarf nachgefertigte Aktionen hinzu. Wenn Sie alle Schritte festgelegt haben, klicken Sie auf Speichern.

image.png

  1. Gehen Sie zum Jenkins-Projekt-Dashboard und klicken Sie auf Jetzt erstellen, um den Build manuell auszulösen.

image.png

  1. Wechseln Sie zur Konsolenausgabe, um den ausgelösten Build-Status anzuzeigen. Wenn alle Ressourcen erfolgreich bereitgestellt wurden, zeigt die Ausgabe einen Erfolgsstatus an.

image.png

image.png

  1. Gehen Sie zur Alibaba-Konsole, um das bereitgestellte Alibaba-ECS und die Konfiguration anzuzeigen.

image.png

image.png

Sie haben jetzt eine Instanz bereitgestellt, auf der Tomcat, Java und MySQL installiert sind. Wenn Sie die öffentliche Browseradresse eingeben, die dem Browser entspricht, können Sie sehen, dass die Apache Tomcat-Seite ausgeführt wird, da der Webserver über Port 80 der öffentlichen IP-Adresse der VM verfügbar gemacht wird.

image.png

Verweise

1、https://www.alibabacloud.com/blog/ci%2Fcd-with-jenkins---part-1%3A-install-jenkins-on-ubuntu_593717 2、https://www.alibabacloud.com/blog/continuous-integration-with-jenkins-on-alibaba-cloud_594512 3、https://www.alibabacloud.com/blog/594449 4、https://github.com/alibaba/ansible-provider 5、https://mohitgoyal.co/2017/02/14/add-linux-slave-node-in-the-jenkins/ 6、https://marketplace.alibabacloud.com/products/56728001/Tomcat_Nginx_My_SQL_Stack_Package_on_Ubuntu-cmjj011399.html?innerSource=search#product-details

Recommended Posts

Stellen Sie mit Ansible und Jenkins ein Image bereit, das aus Tomcat, Java und MySQL besteht
Installieren Sie Java und Tomcat mit Ansible
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Tomcat App Edition]
Einfache Installation von Nginx und Docker mit ansible
Versuchen Sie eine ähnliche Suche in der Bildsuche mit dem Java SDK [Suche]
[Java10] Achten Sie darauf, var und generics nicht zusammen zu verwenden
[Java] Vergleichsmethode für Zeichenketten und Vergleichsmethode mit regulären Ausdrücken
Ein einfaches CRUD-Beispiel mit Java Servlet / JSP und MySQL
Über Java-Instanzen
Vor- und Nachteile von Java
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Vorbereitung]