
Für verschiedene Anwendungen auf Linux Server braucht man eine Installation von Java. Aus diesem Grund wollen wir unser Ansible Repository um eine entsprechende Rolle erweitern. Also Voraussetzung brauchen wir einen funktionsfähigen Ansible Server der eine entsprechende ssh Verbindung zum Zielsystem hat.
Struktur der Java Rolle
Ich werde mich bei dieser Ansible Rolle genau so wie bei den vorangegangenen Artikeln an die empfohlene Struktur halten. Hier noch mal eine entsprechende Ausgabe vom Terminal.
1 2 3 4 5 6 7 | java/ ├── defaults │ └── main.yml ├── files │ └── jdk-8u161-linux-x64.rpm └── tasks └── main.yml |
Die Datei jdk-8u161-linux-x64.rpm wird benötigt, wenn zb. Oracle Java installiert werden soll. Da hier die Zustimmung zur Lizenz auf der Seite erforderlich ist, lässt sich dies nicht ohne weiteres automatisieren. Aus diesem Grund laden wir das entsprechende .rpm Paket herunter und legen es im files Ordner der Java Rolle ab.
Erstellen der defaults/main.yml
Als erstes legen wir für die Rolle eine Variable fest. Dies geschieht in der defaults/main.yml und sieht wie folgt aus:
1 2 3 4 5 6 7 8 9 10 | # JDK version options include: # - java # - java-1.6.0-openjdk # - java-1.7.0-openjdk java_packages: java-1.8.0-openjdk # Using for RPM Packages e.g. Oracle java_rpm_install: false java_rpm: jdk-8u161-linux-x64.rpm |
Die erste Variable (java_packages) dient dazu, den Paketnamen für die Installation von Java aus einem Repository zu hinterlegen. Die anderen beiden Variablen sind für die Installation aus einem .rpm Paket. java_rpm_install steuert hierbei, ob Java aus dem Repository oder via rpm Paket installiert werden soll. java_rpm dient zur Hinterlegung des rpm Paketnamens.
Erstellen der tasks/main.yml
Im ersten Block der Rolle definieren wir die Installation aus dem Repository.
1 2 3 | - name: Java | Install java package: "name={{ java_packages }} state=installed" when: java_rpm_install == false |
Hier wird beim Aufruf der entsprechende Paketname eingesetzt. Mit der when Bedingung prüfen wir noch ob aus dem Repository oder via rpm Paket installiert werden soll.
In den folgenden Blöcken schauen wir uns die Installation von Java via rpm an.
1 2 3 4 5 6 7 8 9 10 | - name: Java | Oracle download copy: src: "{{ java_rpm }}" dest: /tmp/{{ java_rpm }} mode: 0755 when: java_rpm_install == true - name: Java | Oracle install yum: name=/tmp/{{ java_rpm }} when: java_rpm_install == true |
Im ersten Teil wird das rpm Paket auf das Zielsystem kopiert. Im zweiten Teil wird dann die Installation des rpm Paketes mit dem lokalen Paketmanager yum durchgeführt.
Beide Teile werden nur ausgeführt, wenn die entsprechende Steuervariable auf true gesetzt ist (java_rpm_install).
Anwenden der Ansible Java Rolle
Als erstes wolle wir Java aus dem Repository installieren. Da in den defaults bereits die aktuelle Version hinterlegt ist, können wir hier einfach die Rolle in der site.yml hinterlegen.
1 2 3 4 5 | - name: java hosts: java remote_user: root roles: - java |
Die entsprechende hosts Datei sieht dann wie folgt aus:
1 2 | [java] 192.168.10.90 |
Nun können wir den Ansible run ausführen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ansible-playbook site.yml -i hosts PLAY [java] ***************************************************************************** TASK [Gathering Facts] ****************************************************************** ok: [192.168.10.90] TASK [java : Java | Install java] ******************************************************* changed: [192.168.10.90] TASK [java : Java | Oracle download] **************************************************** skipping: [192.168.10.90] TASK [java : Java | Oracle install] ***************************************************** skipping: [192.168.10.90] PLAY RECAP ****************************************************************************** 192.168.10.90 : ok=2 changed=1 unreachable=0 failed=0 |
Um Java via rpm Paket zu installieren, passen wir die site.yml wie folgt an.
1 2 3 4 5 6 7 8 | - name: java hosts: java remote_user: root roles: - java vars: - java_rpm_install: true - java_rpm: jdk-8u161-linux-x64.rpm |
Anschließend können wir wieder einen Ansible run ausführen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ansible-playbook site.yml -i hosts PLAY [java] ***************************************************************************** TASK [Gathering Facts] ****************************************************************** ok: [192.168.10.90] TASK [java : Java | Install java] ******************************************************* skipping: [192.168.10.90] TASK [java : Java | Oracle download] **************************************************** changed: [192.168.10.90] TASK [java : Java | Oracle install] ***************************************************** changed: [192.168.10.90] PLAY RECAP ****************************************************************************** 192.168.10.90 : ok=3 changed=2 unreachable=0 failed=0 |
Schreibe einen Kommentar