Installation der Enterprise Software Automic Automation Engine (UC4) mithilfe von Ansible in der AWS-Cloud
Die Automatisierungen der Installation von Enterprise-Software-Produkten, wie beispielsweise der Automic Automation Engine (AE) mithilfe der Open-Source-Software Ansible kann herausfordernd sein. In meinem Projekt gab es genau diesen Use Case, eine weitestgehend automatische Installation beim Cloudprovider Amazon Web Services (AWS) durchzuführen. In diesen Blogbeitrag möchte ich daher vorstellen, welche Erfahrungen ich dabei gemacht habe.
Warum eine weitestgehende automatisierte Installation von AE?
Genau diese Frage hatte ich mir auch gestellt, als ich mit dem Projekt begann. Durch die Nutzung der AWS-Cloud ergaben sich drei Use Cases, die Installation des AE-Servers mithilfe von Ansible zu automatisieren:
- Die Backup-Strategie des Projektes liegt darin, dass Server mithilfe von Ansible in wenigen Minuten in einer AWS-Backup-Zone wieder aufgebaut werden können. Das betrifft sowohl den RDS PostgreSQL-Datenbankserver als auch den AE-Applikationsserver. Auf den neu aufgebauten Datenbankservern wird dann entweder nur noch das aktuelle Backup oder eine wöchentliche Sicherung der AE-Objekte eingespielt.
- Ansible macht es zudem möglich, die Applikations- und Datenbankserver der betriebenen Anwendung mit jedem neuen Softwarerelease in den Entwicklungs-/Test-/Integrationsumgebungen im AWS „abzureißen" und innerhalb weniger Stunden mit Ansible neu auszurollen, wobei der größere Zeitfaktor das Rückspielen des Backups ist. So entstand die Anforderung, dass dieser sogenannte Rebuild auch mit dem AE-System (PostgreSQL DB und AE-Server) durchzuführen ist.
- Neben dem Testserver-System (Applikationsserver und Datenbank) wurde ein weiteres AE-System benötigt, das parallel zum Produktionssystem mithilfe von Ansible in der gleichen Art und Weise installiert wurde. Das ist mit Ansible durch Neukonfiguration recht einfach möglich.
Ein kleiner Teil (das initiale Laden der AE Standard Objekte) der Installation und die Installation eines bestimmten Agenten (RA-REST) führte dazu, dass die Installation gestoppt werden musste. Da die Möglichkeit besteht, in Ansible den Programmablauf zu stoppen, kann nach wenigen manuellen Eingriffen die Installation fortgesetzt werden.
Aus diesem Grunde kann diese Installation mit Ansible nur weitestgehend automatisch genannt werden.
Installation von AE mit Ansible
Für die automatisierte Bereitstellung der AWS RDS-Datenbank und der AWS-Serverarchitektur des AE-Servers wird Terraform verwendet. Da auch hier mit einer Ansible-Terraform-Rolle gearbeitet wird, gleicht die Architektur des Servers der aller anderen Server im Projekt.
Auf dem vom AWS-Cloud-Provider bereitgestellten Applikationsserver wird eine Linux Basis-Installation mit allgemeinen Softwarekomponenten wie beispielsweise Monitoring installiert. Dies geschieht ebenfalls mithilfe von Ansible-Rollen.
Neben der Bereitstellung der Server und der dazugehörigen Netzwerkkomponenten werden für die Installation des AE-Servers einige externen Komponenten benötigt. Die wichtigste Komponente, neben Ansible selbst, ist das Java OpenJDK 11. Die Installation dieser allgemeinen Software erfolgt ebenfalls automatisiert mithilfe einer Ansible-Rolle.
Ab der AE 21 spielt die TLS/SSL-Verschlüsselung bei der Installation eine größere Rolle. Daher sollten die entsprechenden Keys und Zertifikate erstellt werden. OpenSSL wird erst ab der Version AE 21.0.9 unterstützt. Diese Secrets werden in einem Secret Speicher (Vault) abgelegt, damit sie mithilfe eines weiteren Ansible Playbooks herausgelesen werden können. Damit ist sichergestellt, dass sich keine Secrets in den Konfigurationsdateien befinden.
Zunächst wird die Datenbank (AWS-RDS-PostgreSQL) erstellt und konfiguriert. Das kann über ein Tool, wie „pgadmin" oder per cli direkt auf der Konsole manuell durchgeführt werden. Doch wir haben uns entschieden, hierfür Ansible-PostgreSQL-Module zu verwenden, was gut funktioniert. Damit Upgrades der PostgreSQL-DB unabhängig von der AE-Applikation durchgeführt werden können, ist es eine eigene Ansible-Rolle.
Ist die AE-Datenbank installiert, folgt die Installation der AE-Software-Komponenten. Beim Implementieren der AE-Server-Installation mit Ansible muss die von der AE-Dokumentation vorgegebenen Reihenfolge, das Entpacken der versionierten Softwarekomponenten und die Konfiguration der einzelnen Komponenten eingehalten werden. Die AE-Software wird in ein Softwaredepot, wie beispielsweise das „Artifactory" abgelegt. Der Zugriff auf die Software erfolgt über einen Aufruf des URL-Moduls im Playbook.
Neben den oben beschriebenen Aktionen, wie Download, Entpacken und Konfigurieren der AE-Software, werden mithilfe von Ansible-Modulen und -Skripten, weitere für die Installation notwendige Tasks ausgeführt, z. B.:
- die Installation weiterer externer Komponenten (PostgreSQL Client, Tomcat Webserver, jdbc Treiber, …)
- das Anlegen von OS-Usern und deren Umgebungen (bash_profile, psqlrc)
- die Erstellung von Filesystemen
- Einrichten eines Tomcat-Monitorings und Logrotation
- das Starten und Stoppen des Servers mit systemd
- usw.
Innerhalb der Ansible-AE-Server-Rolle werden auch die ersten lokalen Agenten installiert. Die wichtigsten sind dabei:
- Linux Agent
- RA-REST Webservice Agent
Die Agenten können einzeln gestartet und gemonitort werden, da sie nicht, wie von Broadcom empfohlen per Servicemanager gestartet werden, sondern für jeden Agenten ein eigenes systemd-Skript erstellt wird. Auch alle Secrets werden dabei im Vault abgespeichert und beim Rebuild des Servers aus dem Vault wieder geladen.
Die Konfiguration aller Komponenten wird mithilfe zahlreicher jinja2-Templates, die sich mit in der AE-Server-Ansible-Rolle befinden, durchgeführt. Gefüllt werden die Konfigurationen mit Ansible-Variablen aus dem Inventory des Repositories.
Abschließend erfolgt dann die Konfiguration, das Anlegen der Mandanten und das Erstellen der AE-User wieder manuell im Automic Web Interface (AWI).
Fazit
Grundsätzlich hat sich herausgestellt, dass auch etwas komplexere Installationen von Enterprise Software, wie AE, mit Ansible möglich sind.
Es können mithilfe einer Ansible-Rolle alle Softwarekomponenten (externe und interne) eines AE-Servers in sehr kurzer Zeit weitestgehend automatisch aufgebaut werden. Alle AE-Server (Applikationsserver) werden gleich aufgebaut und an einer zentralen Stelle im Ansible konfiguriert. Das Gleiche gilt auch für die darunterliegende RDS PostgreSQL DB.
Neugierig geworden, wie es im Einzelnen implementiert wird? So fragen Sie doch bei der ORDIX AG an. Wir unterstützen sie gerne bei der Automatisierung ihrer Umgebung.
Seminarempfehlungen
ANSIBLE FÜR FORTGESCHRITTENE ANSIB-02
Mehr erfahrenKONFIGURATIONSMANAGEMENT MIT ANSIBLE ANSIB-01
Mehr erfahrenSenior Chief Consultant bei ORDIX
Bei Updates im Blog, informieren wir per E-Mail.
Kommentare