Immer wieder kann es sein, dass man auf dem Server den man betreut zusätzliche Repositories einbindet um spezielle Software zu installieren. Auch dies kann man mit Ansible automatisieren. Dafür gibt es das Modul yum_repository welches wir uns in diesem Artikel genauer anschauen wollen.
Inhaltsverzeichnis
Anlegen der Rolle EPEL
Wir starten damit, eine Rolle für das installieren des EPEL Repository anzulegen. Darin legen wir eine Ordner tasks mit einer Datei Namens main.yml an.
1 2 3 4 | tree epel/ epel/ └── tasks └── main.yml |
Nachdem die Struktur angelegt wurde, öffnet man die main.yml mit einem beliebigen Editor. Anschließend fügt man die folgenden Codezeilen ein:
1 2 3 4 5 | - name: Add repository yum_repository: name: epel description: EPEL YUM repo baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/ |
In Zeile zwei rufen wir hier das Modul yum_repository auf. Innerhalb des Modules können wir dann den Namen, eine Beschreibung und die URL für das Repository hinterlegen. Anschließend speichern wir die Datei
Automatisierte Installation des EPEL Repository
Nachdem wir nun eine Rolle EPEL haben mit der das EPEL Repository auf einem CentOS System installieren könne, wollen wir diese nun testen. Dafür wird eine entsprechende Konfiguration in Form einer hosts und site.yml Datei angelegt.
Der Inhalt sieht dann wie folgt aus:
site.yml:
1 2 3 4 5 | - name: epel hosts: epel remote_user: root roles: - epel |
hosts:
1 2 | [epel] 192.168.10.37 |
Nachdem die Dateien angelegt sind, können wir das ganze mit ansible-playbook starten.
1 2 3 4 5 6 7 8 9 10 11 12 | ansible-playbook site.yml -i hosts PLAY [epel] ************************************************************************************************ TASK [Gathering Facts] ************************************************************************************* ok: [192.168.10.37] TASK [epel : Add repository] ******************************************************************************* changed: [192.168.10.37] PLAY RECAP ************************************************************************************************* 192.168.10.37 : ok=2 changed=1 unreachable=0 failed=0 |
Wenn man sich nun auf das Zielsystem verbindet, findet man unter /etc/yum.repos.d die Repository Datei für EPEL.
1 2 3 4 5 6 7 8 9 10 11 12 13 | ll insgesamt 48 -rw-r--r-- 1 root root 1664 17. Mai 15:53 CentOS-Base.repo -rw-r--r-- 1 root root 1309 17. Mai 15:53 CentOS-CR.repo -rw-r--r-- 1 root root 649 17. Mai 15:53 CentOS-Debuginfo.repo -rw-r--r-- 1 root root 314 17. Mai 15:53 CentOS-fasttrack.repo -rw-r--r-- 1 root root 630 17. Mai 15:53 CentOS-Media.repo -rw-r--r-- 1 root root 916 23. Mai 2016 CentOS-SCLo-scl.repo -rw-r--r-- 1 root root 892 23. Mai 2016 CentOS-SCLo-scl-rh.repo -rw-r--r-- 1 root root 1331 17. Mai 15:53 CentOS-Sources.repo -rw-r--r-- 1 root root 4768 17. Mai 15:53 CentOS-Vault.repo -rw-r--r-- 1 root root 106 22. Jul 16:16 epel.repo -rw-r--r--. 1 root root 189 22. Mai 2014 ICINGA-reelase.repo |
Automatisiertes entfernen eines Repository
Nachdem wir uns angeschaut haben, wie man das EPEL Repository automatisiert anlegen kann, wollen dieses nun wieder vom Zielsystem entfernen. Dafür legen wir eine Rolle epel_remove an. Die Struktur ist so aufgebaut wie auch bei der EPEL Rolle.
1 2 3 4 | tree epel_remove/ epel_remove/ └── tasks └── main.yml |
In die Datei main.yml fügen wir diesmal den Code zum Löschen des EPEL Repository ein.
1 2 3 4 5 | - name: Remove repository from a specific repo file yum_repository: name: epel file: epel state: absent |
Testlauf zum Repository entfernen
Zum Testen dieser Rolle ändern wir die Dateien hosts und site.yml entsprechend ab.
site.yml:
1 2 3 4 5 | - name: epel_remove hosts: epel_remove remote_user: root roles: - epel_remove |
hosts:
1 2 | [epel_remove] 192.168.10.37 |
Nun können wir mit ansible-playbook das ganze starten.
1 2 3 4 5 6 7 8 9 10 11 12 | ansible-playbook site.yml -i hosts PLAY [epel_remove] ***************************************************************************************** TASK [Gathering Facts] ************************************************************************************* ok: [192.168.10.37] TASK [epel_remove : Remove repository from a specific repo file] ******************************************* changed: [192.168.10.37] PLAY RECAP ************************************************************************************************* 192.168.10.37 : ok=2 changed=1 unreachable=0 failed=0 |
Wenn man sich jetzt den Inhalt von /etc/yum.repos.d auf dem Zielsystem anschaut, ist die Repository Datei von EPEL entfernt.
1 2 3 4 5 6 7 8 9 10 11 12 | ll insgesamt 44 -rw-r--r-- 1 root root 1664 17. Mai 15:53 CentOS-Base.repo -rw-r--r-- 1 root root 1309 17. Mai 15:53 CentOS-CR.repo -rw-r--r-- 1 root root 649 17. Mai 15:53 CentOS-Debuginfo.repo -rw-r--r-- 1 root root 314 17. Mai 15:53 CentOS-fasttrack.repo -rw-r--r-- 1 root root 630 17. Mai 15:53 CentOS-Media.repo -rw-r--r-- 1 root root 916 23. Mai 2016 CentOS-SCLo-scl.repo -rw-r--r-- 1 root root 892 23. Mai 2016 CentOS-SCLo-scl-rh.repo -rw-r--r-- 1 root root 1331 17. Mai 15:53 CentOS-Sources.repo -rw-r--r-- 1 root root 4768 17. Mai 15:53 CentOS-Vault.repo -rw-r--r--. 1 root root 189 22. Mai 2014 ICINGA-reelase.repo |
Schreibe einen Kommentar