Zu einem LAMP Stack gehört auch immer eine Datenbank. Da wir uns in den letzten Artikel bereits angeschaut haben, wie man die Installation von Apache und php automatisiert, wollen wir uns heute mit der Ansible MariaDB Role beschäftigen.
Voraussetzung für dieses Tutorial ist eine Funktionsfähige Ansible Installation sowie eine ssh Zugriff auf das Zielsystem mit Ansible.
Ansible MariaDB Role – defaults/main.yml
Wir beginnen wieder mit dem festlegen der benötigten Variablen. Für die Ansible MariaDB Role brauchen wir nur eine Variable. In dieser wollen wir das root Passwort für die MariaDB Datenbank hinterlegen. Das ganze sieht dann wie folgt aus:
1 | mariadb_root_password: dbpassword1! |
Ansible MariaDB Role – tasks/main.yml
In der Konfiguration der MariaDB Rolle haben wir insgesamt vier Blöcke, die ich nun nacheinander vorstellen werden.
1 2 3 4 5 6 7 8 | - name: MariaDB | install package: name: "{{ item }}" state: installed with_items: - mariadb-server - mariadb - MySQL-python |
Im ersten Block installieren wir wie gewohnt einige notwendige Pakete für den MariaDB Server.
1 2 3 4 5 | - name: Ensure service is started service: name: mariadb state: started enabled: yes |
Nachdem die MariaDB Pakete installiert sind, starten wir MariaDB und aktivieren den automatischen Start der Datenbank bei einem Neustart des Systems.
1 2 3 4 5 6 | - name: Check if root password is set shell: > mysqladmin -u root status changed_when: false failed_when: false register: root_pwd_check |
Im dritten Block prüfen wir ob bereits ein Passwort für den root User gesetzt würde. Dies ist sinnvoll, damit das root Passwort nicht bei jeden Ansible lauf neu gesetzt wird. Das Ergebnis hinterlegen wir in root_pwd_check.
1 2 3 4 5 6 7 | - name: Set MariaDB root password for the first time mysql_user: name: root password: "{{ mariadb_root_password }}" host_all: yes state: present when: root_pwd_check.rc == 0 |
Im letzten Block setzten wir das Passwort für den root User, falls dieses noch nicht gesetzt wurde. Dafür prüfen wir auf die in im dritten Block erstelle Variable.
Testen der Ansible MariaDB Role
Um das ganze zu testen, lege ich in meiner site.yml eine entsprechende Gruppe für die MariaDB Role an. hier übergebe ich dann entsprechend das gewünschte root Passwort für die Datenbank.
1 2 3 4 5 6 | - name: mariadb hosts: mariadb roles: - mariadb vars: - mariadb_root_password: 3eXfddF%7EP`b',G |
Anschließend starten wir den ansible run wie gewohnt mit dem ansible-playbook Befehl. Das ganze sieht dann wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ansible-playbook site.yml -i hosts PLAY [mariadb] ********************************************************************************** TASK [Gathering Facts] ************************************************************************** ok: [192.168.10.90] TASK [mariadb : MariaDB | install] ************************************************************** changed: [192.168.10.90] => (item=mariadb-server) ok: [192.168.10.90] => (item=mariadb) changed: [192.168.10.90] => (item=MySQL-python) TASK [mariadb : Ensure service is started] ****************************************************** changed: [192.168.10.90] TASK [mariadb : Check if root password is set] ************************************************** ok: [192.168.10.90] TASK [mariadb : Set MariaDB root password for the first time] *********************************** changed: [192.168.10.90] PLAY RECAP ************************************************************************************** 192.168.10.90 : ok=5 changed=3 unreachable=0 failed=0 |
Schreibe einen Kommentar