Ansible build maven AWS: Maven baut Automatisierung mit AWS-Produktplatzierung
Mit dem professionellen Prozess der Entwicklung, der Verteilung eines Produktes, seiner neuen Funktionen, wird die Frage der Reduzierung der täglichen identischen Operationen mit der maximalen Beseitigung der manuellen Komponente des Entwicklungsprozesses sehr wichtig im Laufe der Zeit. Dies ist natürlich, bequem, ermöglicht es Ihnen, mehr Zeit für die Verbesserung der Produkt selbst zu widmen und als Ergebnis, die Verbesserung ihrer Qualität.
Dies war der Grund für die Entwicklung des nächsten automatisierten Prozesses, als eine von vielen Möglichkeiten, die folgenden Werkzeuge und ihre Kombinationen zu verwenden.
Es gibt mehrere Werkzeuge, Cloud Services, die eine solche Aufgabe implementieren. Nun werden unter Berücksichtigung spezifischer Anforderungen in der vereinfachtesten Weise verwendet:
- Ubuntu 16.04 LTS,
- Ansible 2.3.1.0,
- Python 2.7.12,
- boto 2.47.0,
- boto3-1.4.4-py2,
- bash shell,
- AWS SDK,
- AWS CLI,
- elasticsearch,
- kibana,
- Jenkins 2.60.1.
Der Prozess nutzt VPN, DNS, mit der notwendigen Ebene der Isolierung des Werkzeugs auf globaler Netzwerkebene.
Der Prozess wird in Form von Jenkins 4 Jobs durchgeführt: 1 Haupt- (Start-) und 3 Hilfs- Jeder der Hilfsaufgaben führt seine eigene Stufe des Prozesses durch, der Hauptauftrag – startet das Hilfsmittel in einer bestimmten Reihenfolge mit der Bedingung, wenn jeder der vorherigen Aufträge erfolgreich abgeschlossen ist. In jedem der Jenkins-Jobs werden Benachrichtigungen an Slack verwendet, so weit wie möglich die vollständige Protokollierung der Ausführung jeder Operation mit der Definition ihrer Prozess-Zeitstempel auf dem dedizierten Log-Server. Dedizierter Log-Server vereinfacht die Analyse des Prozesses, mögliche Fehler in seinem Fluss, einschließlich und nach Abschluss der Aufträge, und die Entfernung ihrer Ergebnisse aus verschiedenen Gründen.
Nach dem Debugging des Prozesses mit Jenkins läuft der Prozess termingerecht.
Das Diagramm zeigt den Prozess in einer grafischen Form.
Jenkins jobs:
0. Die wichtigste „Execute the workflow: Ansible build maven AWS“ startet den Prozess: Als Ergebnis werden AMI-Bilder des Produkts erstellt und in Ordnung gesetzt:
- Maven Build –> TAR: Synchronisation mit der Steuerungsversion, die Montage des Produkts im TAR-Archiv,
- Ansible –> prepare an AWS-environment: Das Vorentfernungspotential von temporären Einrichtungen, die Schaffung eines Paares von RSA-Schlüsseln, VPC, Sicherheitsgruppe,
- Ansible –> build VM, AMI, transfer to DC: Schaffung AWS die grundlegende virtuelle Zwischenmaschine, Montage aus itAMI-Bild, die Verteilung nach Regionen.
Beim Debuggen eines Prozesses oder wann benötigt wird, um nur einen Teil des Prozesses auszuführen, können Aufträge in beliebiger Reihenfolge ausgeführt werden, mit den notwendigen Parametern und Komponenten, die vom vorherigen Job erzeugt werden.
Im Folgenden werden die untergeordneten Jobs beschrieben.
-
Maven Build –> TAR: Ansible build maven AWS
Job für Server bauen. Zum Ausführen müssen Sie nur einen eingehenden Parameter eingeben, die „Produktversion“, die Sie für das endgültige Bild mit dem Betriebssystem vorbereiten müssen. Im Parameterwert gibt es standardmäßig eine „Version“, falls eine reguläre Version regelmäßig kompiliert wird.
Hier Bash-Skripte werden nacheinander gestartet:
- Der Quellcode des Produktes wird aus dem Versionskontrollsystem (GIT, SVN) extrahiert,
- Die entsprechende Dokumentation wird in Form von PDF extrahiert,
- MAVEN und sein plugins führen JAVA-Kompilation durch, bauen Quellcode, mit dem bestimmten bauen Profile,
- Zusammenstellung spezifisch für jede Art von Betriebssystem-Installateure (Windows, Mac, Linux).
- Zusätzliche Hilfs Dienstprogramme werden gesammelt,
- Das Produkt wird zusammengestellt und archiviert, an einem bestimmten Ort für den Einsatz in der nächsten Aufgabe platziert.
Um diese Aufgabe auszuführen, sollte die Umgebung korrekt konfiguriert werden: Ubuntu 16.04 LTS, JDK 7 (8), Innosetup, Wine, SVN und GIT Clients.
Nachdem der Job beendet ist, ist das verpackte Produkt zum Hochladen in die AWS EC2-Instanz bereit. Danach auf AMI gespeichert und vorübergehend in Jenkins Dateisystem platziert. Es ist in der Arbeit „Ansible –> build VM, AMI, transfer to DC“ verwendet.
2. Ansible –> prepare an AWS-environment: Ansible bauen maven AWS – das Vorentfernungspotential von temporären Einrichtungen, die Schaffung eines Paares von RSA-Schlüsseln, VPC, Sicherheitsgruppe
Der Job ist für die bereinigende temporäre Ressource von AWS, was nach der Ausführung eines vorherigen Buildprozesses erstellt wurde.
Jobs reinigt frühere Ressourcen, erstellt eine temporäre Instanz mit benötigten Parametern, hochgeladene Vorbereitungen, bereitet Instanz für die AMI-Registrierung vor, erstellt AMI mit der verwendeten SVN-Revision in ihrem Namen, kopiert erstellt AMI an vordefinierte Standorte und stoppt die Vorbereitungsinstanz.
Eingehende Parameter:
– ein Schlüsselpaar, dessen Standardwert – SSH-Taste für den schnellen Zugriff auf Amazon. Es sollte in AWS vor der Jobausführung erstellt werden und platziert das Jenkins Dateisystem.
– hdd2, der Standardwert ist „10“, Gb – eine benötigte Größe des Festplattenlaufwerks zum Speichern des Servers und seines Inhalts.
– ein Anfangsbereich, der Standardwert ist „eu-west-1“ – Region, wo Startinstanz erstellt wird und dessen erstes AMI lokalisiert ist.
– Region dst1, der Standardwert ist „eu-central-1“ – Region, wo erstellt wird AMI kopiert werden.
– Region dst2, der Standardwert ist „us-east-1“ – Region, wo erstellt wird AMI kopiert werden.
Um den Job auszuführen, wird der eingehende Parameter definiert: die Anfangsregion zum Beispiel und die AMI-Erstellung. Der Standardwert ist Irland == „eu-west-1“, Region, wo Start Instanz erstellt wird, und seine erste erstellt AMI befindet. Die Beschreibung definiert die Liste der möglichen Werte:
Code || Name us-east-1 || US East (N. Virginia) us-east-2 || US East (Ohio) us-west-1 || US West (N. California) us-west-2 || US West (Oregon) ca-central-1 || Canada (Central) eu-west-1 || EU (Ireland) eu-central-1 || EU (Frankfurt) eu-west-2 || EU (London) ap-northeast-1 || Asia Pacific (Tokyo) ap-northeast-2 || Asia Pacific (Seoul) ap-southeast-1 || Asia Pacific (Singapore) ap-southeast-2 || Asia Pacific (Sydney) ap-south-1 || Asia Pacific (Mumbai) sa-east-1 || South America (São Paulo)
Während der Ausführungs-Workflow erstellt Instanz_id in Eigenschaftsdateien für die nächste mögliche Playbook-Nutzung gespeichert ist.
Wenn Sie die Instanz und die Region haben, wird der Job die Instanz und die zugehörige Sicherheitsgruppe gelöscht, was auch in der Region erstellt wurde.
Erstellt vor AMI und seine Schnappschüsse werden ohne Löschung verlassen, weder in der Region, wo sie erstellt wurden oder in anderen Regionen.
Wenn es zwingend erforderlich ist, die AMIs von AWS EC2 zu löschen – ein Benutzer sollte es manuell, über AWS Web-Panel oder auf andere Weise tun.
Um auf temporäre Instanzen zuzugreifen, wird ein SSH-Public-Key-Paar verwendet, was im Dateisystem von Jenkins (mit einem definierten Default-Wert) gespeichert und als Job-Parameter definiert werden soll.
Für die Ausführung des Workflows sollten AWS-Anmeldeinformationen (KEY und KEY_ID) in /var/lib/jenkins/.boto gespeichert und dem Benutzer im AWS-Web-Panel die Berechtigung erteilt werden.
Job führt ein unmögliches ansible-Playbook mit dem beschriebenen Szenario der Aktionen durch.
3. Ansible –> build VM, AMI, transfer to DC: Ansible bauen maven AWS – Schaffung AWS die grundlegende virtuelle Zwischenmaschine, Montage von ihr AMI-Bild, seine Verteilung nach Regionen
Standardmäßig ist die temporäre Instanz (t2.micro) und AMI am AWS-Standort „eu-west-1 || EU (Irland)“ vorbereitet. Für temporäre Instanz verknüpft 2 Bände: Betriebssystem und Arbeitsserver. Zweite Arbeit HDD Volumen Größe ist definiert als einer der Parameter des Auftrags und entspricht 10Gb standardmäßig.
Für das korrekte Produkt, das in einer Instanz mit dem Linux Ubuntu 16.04 LTS im AMI Image TCP Einstellungen Abschnitt ausgeführt wird, sollte die nächste Einstellung in /etc/sysctl.conf geändert werden:
net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=8
0. Execute the workflow: Ansible bauen maven AWS
Job ist es, den gesamten Build- und Bereitstellungsprozess zu starten.Job is to start the total build and deploy process.
Als Parameter sollten 2 Zielregionen definiert werden, um die endgültige AMI zu übertragen: Die Standardwerte sind „eu-central-1 || EU (Frankfurt)“ und „us-east-1 || US East (N. Virginia)“.
Eingehende Parameter:
– RELEASE VERSION, seine Standard-Wert, was sollte zu bauen.
– Das Schlüsselpaar, sein Standardwert – SSH-Schlüssel für den Zugriff auf Amazon-Build-Template-Instanz entfernt. Es sollte in AWS vor der Jobausführung erstellt werden und platziert das Jenkins Dateisystem.
– hdd2, der Standardwert ist 10 Gb – eine erforderliche Größe des Festplattenlaufwerks, um den Produktserver und seinen Inhalt zu speichern.
– ein Anfangsbereich, der Standardwert ist „eu-west-1“ – Region, wo Startinstanz erstellt wird und dessen erstes AMI lokalisiert ist.
– Region dst1, der Standardwert ist „eu-central-1“ – Region, wo erstellt wird AMI kopiert werden.
– Region dst2, der Standardwert ist „us-east-1“ – Region, wo erstellt wird AMI kopiert werden.
Der Hauptauftrag „Execute the workflow“ führt die Nebenprozesse aus.
Nachdem der Job beendet ist, hielt die Instanz und AMI in Irland; Der AMI wird auch auf „eu-central-1 || EU (Frankfurt)“ und „us-east-1 || US East (N. Virginia)“ übertragen.
Es lohnt sich zu erwähnen, in YAML-Playbook von unmöglich wird alle Syntax von jedem Symbol gezählt, auch jeder Raum sollte an seinem Platz sein. Andernfalls wird bei der Ausführung ein Fehler aufgetreten und oft ohne genau definierten Ort eines Tippfehlers.
In den Ansible Playbooks wurden folgende Befehle verwendet:
- ec2
- ec2_ami
- ec2_copy
- ec2_group
- ec2_tag
- shell
- file
- copy
- apt
- unarchive