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.

Über das Projekt

module to insert/update/delete a record in a mysql table

Installieren
ansible-galaxy install zauberpony.mysql-query
Lizenz
gpl-3.0
Downloads
239.4k
Besitzer