zauberpony.mysql-query
Ansible Rolle: mysql_query
Ansible-Modul zum Setzen von Werten in einer MySQL-Tabelle oder zum Einfügen von Datensätzen. Nützlich für Webanwendungen, die Konfigurationen in einer Datenbank speichern. Zum Beispiel benötigt icingaweb2 den ursprünglichen Benutzer, der in die Datenbank eingefügt werden muss. Der Installationsassistent könnte dies tun, aber mit Ansible möchtest du die Installation automatisieren ;)
Auf der Ansible Galaxy-Seite unter zauberpony.mysql-query gelistet.
Installation
Installiere über ansible-galaxy mit ansible-galaxy install zauberpony.mysql-query
oder füge die Datei mysql_query manuell in dein roles_path ein.
Anforderungen:
Python-Bindings für MySQL (genauso wie die Kern-modules mysql_*):
- MySQLdb (nur Python 2.x)
- PyMySQL (Python 2.7 und Python 3.x)
Beispiel-Playbook
Ein vollständiges Beispiel, das sicherstellt, dass ein Datensatz in einer bestimmten Tabelle vorhanden ist.
---
- hosts: all
roles:
- zauberpony.mysql-query
tasks:
- name: eine Zeile einfügen
mysql_query:
name: ansible-playbook-beispiel
table: einfache_tabelle
login_host: ::1
login_user: root
login_password: passwort
identifiers:
id: 14
email: '[email protected]'
values:
rolle: "admin"
abteilung: 'IT'
defaults:
passwort: "geheim"
letzter_login: 1469264933
Gegeben ist eine Tabelle einfache_tabelle
mit den Spalten (id, email, rolle, abteilung, passwort, letzter_login), würde dieses Beispiel:
- Nach einer Zeile suchen, wo id = 14 und email = 'john@example.com'
- Wenn die Zeile nicht existiert: eine Zeile mit id=14, email='john@example.com', rolle="admin", abteilung="IT", passwort="geheim", letzter_login=1469264933 einfügen
- Wenn die Zeile existiert: prüfen, ob die werte (rolle, abteilung) den angegebenen Werten entsprechen, wenn nicht: aktualisieren
So:
- identifiers werden verwendet, um die Existenz zu überprüfen und eine Zeile zu finden
- defaults werden als Standardwerte verwendet, wenn die Zeile nicht vorhanden ist (d.h.: nur für Einfügungen verwendet)
- values sind der Zustand der Zeile, den Ansible sicherstellt
Ein vollständiges Beispiel, das sicherstellt, dass ein Datensatz in einer bestimmten Tabelle nicht vorhanden ist.
---
- hosts: all
roles:
- zauberpony.mysql-query
tasks:
- name: eine Zeile einfügen
mysql_query:
state: absent
name: ansible-playbook-beispiel
table: einfache_tabelle
login_host: ::1
login_user: root
login_password: passwort
identifiers:
id: 14
email: '[email protected]'
Ausführen der Beispiele aus den Quellen
Stelle sicher, dass du einen laufenden MySQL-Server hast (z.B.: verwende die docker-compose.yml Datei) und aktualisiere die Verbindungsparameter, wenn nötig.
Führe es mit ansible-playbook -i demo.yml
(oder noch einfacher ./demo.yml
) aus und mache es rückgängig (um von vorne zu beginnen) mit ansible-playbook -i reset.yml
.
Nach dem Ausführen von ./demo.yml
kannst du ./checkmode-demo.yml -C
ausführen, um den Check-Modus von Ansible zu testen.
Führe einfach ./demo.yml
und ./checkmode-demo.yml
ein paar Mal mit -C
und ohne -C
aus, um ein Gefühl dafür zu bekommen.
module to insert/update/delete a record in a mysql table
ansible-galaxy install zauberpony.mysql-query