PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Planet in Ansible Galaxy

Ansible Galaxy ist einfach der einfachste Weg, bereits geschriebene Ansible-Rollen zu finden, Ihre Rollen zu erstellen und zu teilen und in die Galaxie der Ansible-Inhalte einzutauchen!

====================Ankündigung zur Hauptsendezeit! ====================

Der FOSDEM PGDay 2016 findet am 29. Januar vor der FOSDEM statt, Europas größter Open-Source-Veranstaltung, und PostgreSQL Devroom findet am 31. Januar auf der FOSDEM in Brüssel statt.

FOSDEM PGDay 2016 em>

Wenn Sie an Konfigurationsmanagement, Server-Orchestrierung und automatisierter Bereitstellung interessiert sind (deshalb lesen Sie diesen Blogbeitrag, oder?) und gerne mit PostgreSQL arbeiten (auf jeden Fall) auf AWS (optional), dann möchten Sie vielleicht an meinem Vortrag „Managing PostgreSQL with Ansible“ am 29. Januar, 12:30-13:20 teilnehmen.

Bitte überprüfen Sie den großartigen Zeitplan für beide Veranstaltungen! Hoffentlich sehen wir uns diese Woche in Brüssel!

====================Ankündigung zur Hauptsendezeit! ====================

Hallo Ansible Galaxy!

Ansible hat eine mächtige Community, die sie noch mächtiger macht. Entwickler, die zu Ansible beitragen, leisten gerne einen Beitrag, und Benutzer, die Ansible für ihre eigenen Systeme verwenden, nutzen es gerne.

Bei den Ansible-Inhalten, auf die sie auf ihrer Webseite verweisen, handelt es sich im Grunde um Ansible-Rollen. Lassen Sie uns in diesem Blogbeitrag mit Rollen fortfahren und versuchen zu verstehen, was Ansible-Rollen bedeuten und welche Unterschiede zwischen Rollen, Playbooks und Aufgaben bestehen.

Was ist eine Ansible-Rolle?

Sie sollten unbedingt Rollen verwenden. Rollen sind toll. Rollen verwenden. Rollen! Haben wir das genug gesagt? Rollen sind großartig.

Bevor wir über Rollen sprechen, erinnern wir uns an die Definition von Task und Playbook in der Ansible-Terminologie.

Aufgabe

Tasks sind für den Aufruf eines Moduls mit einem bestimmten Parametersatz verantwortlich.

Sie können meinen vorherigen Blogbeitrag lesen, um mehr über Ansible-Module zu erfahren, und Ansible Postgres-Module mit Beispielen überprüfen.

Jede Ansible-Aufgabe enthält einen Namen, ein aufzurufendes Modul, Modulparameter und optional Vor-/Nachbedingungen. Sie ermöglichen es uns, Ansible-Module aufzurufen und Informationen an aufeinanderfolgende Aufgaben weiterzugeben.

Die folgende Aufgabe ruft das Dateimodul auf, indem sie 4 Parameter bereitstellt.


- name: Ensure the data folder has right ownership
  file: path="/var/lib/postgresql" state=directory owner=postgres group=postgres

Es stellt sicher, dass 3 Bedingungen wahr sind:

  • /var/lib/postgresql existiert als Verzeichnis
  • Eigentümer von /var/lib/postgresql ist „postgres“
  • Gruppe von /var/lib/postgresql ist „postgres“

Wenn es nicht existiert, erstellt Ansible das Verzeichnis und weist Eigentümer und Gruppe zu. Wenn nur der Eigentümer anders ist, macht Ansible es zu „postgres“.

Playbook

Playbooks enthalten Spiele und Spiele enthalten Aufgaben. Tasks rufen Module auf und können (optional) Trigger-Handler (einmal ausführen, am Ende ausführen) .

Jetzt können wir uns unten ein sehr einfaches Playbook-Beispiel ansehen:


- name: Ensure all virtual machines are ready
  hosts: 127.0.0.1
  connection: local
  vars_files: # load default variables from YAML files below
    - 'defaults/postgresql.yml'
    - 'defaults/aws.yml'
  tasks:
    - include: 'tasks/provision.yml' # load infrastructure setup tasks

- name: Ensure all required PostgreSQL dependencies ready
  hosts: postgresql-all # manage all PostgreSQL servers
  sudo: yes
  sudo_user: root
  vars_files:
    - 'defaults/postgresql.yml'
    - 'defaults/aws.yml'
  tasks:
    - include: 'tasks/postgresql.yml' # load PostgreSQL setup tasks

In diesem Playbook haben wir zwei Stücke:

First Play stellt sicher, dass alle virtuellen Maschinen bereit sind und auf localhost ausgeführt werden. Es lädt Standardvariablen aus YAML-Dateien namens postgresql.yml und aws.yml. Sie können sich diese Dateien als Konfigurationsdateien für Rollen und Playbooks von PostgreSQL und AWS (in unserem Beispiel) vorstellen, da Sie sehen können, dass beide Plays diese Dateien für Standardvariablen verwenden. Dieses Stück ruft die Aufgabe „provision.yml“ auf, die Aufgaben zur Einrichtung der Infrastruktur enthält.

Second Play stellt alle erforderlichen PostgreSQL-Abhängigkeiten bereit und arbeitet auf Postgres-Servern, die in der Inventardatei definiert sind. Dieses Stück ruft die Aufgabe postgresql.yml auf, die Aufgaben zur Einrichtung von PostgreSQL enthält.

Wenn Sie das vollständige Playbook sehen möchten, können Sie gerne mein Repository überprüfen und es beitragen, um es besser zu machen.

Um das Playbook-Konzept besser zu verstehen, können Sie sich Beispiel-Playbooks ansehen, die in der Ansible-Dokumentation vorgeschlagen werden.

Kommen wir zurück zum Thema Rollen. In Ansible;

  • Playbooks Aufgaben organisieren
  • Rollen Organisieren Sie Playbooks

Stellen Sie sich vor, wir müssen viele unabhängige Ressourcen verwalten (z. B. Webserver, PostgreSQL-Server, Protokollierung, Überwachung, AWS). Alles in ein einziges Playbook zu packen, kann zu einer nicht wartbaren Lösung führen.

Um diese Komplexität zu reduzieren, helfen uns Rollen bei:

Aufteilen von Aufgaben in viel kleinere Playbooks

So können wir uns unabhängig auf Ressourcen konzentrieren. Das macht es einfacher zu warten und zu debuggen. Außerdem wird es viel einfacher sein, die Struktur zu verstehen.

Wiederverwendung von Konfigurationen, Dateien, Vorlagen, Aufgaben

Auf diese Weise können wir diese Komponenten problemlos zwischen Playbooks austauschen, ohne sie immer wieder neu schreiben zu müssen.

Handhabung von Playbook-Abhängigkeiten

Wenn wir eine Rolle ausführen, können wir sicher sein, dass alle Voraussetzungen für diese Rolle erfüllt sind.

Hier sehen Sie ein Abhängigkeitsdiagramm und die entsprechende Rollenverzeichnisstruktur:

PostgreSQL-Rollen in Ansible Galaxy

Während ich diesen Blogbeitrag schrieb, gab es 146 Rollen, die sich als Ausgabe von postgresql drehen und postgres Suche filtern.

Ich persönlich schlage vor, einige dieser Rollen zu überprüfen und sie in Ihren Architekturen zu verwenden, wenn sie gut genug sind und Ihren Anforderungen entsprechen. Wenn dies nicht der Fall ist, melden Sie sich bei Ansible Galaxy an und erstellen Sie Ihre eigenen Rollen.

Viel Spaß beim Hacken!

Weitere Informationen zu Ansible:

  • Schauen Sie sich ihre gut geschriebenen Dokumente an.
  • Sehen Sie sich das Ansible-Schnellstartvideo an, das eine wirklich hilfreiche Anleitung ist.
  • Folgen Sie ihrem Webinar-Zeitplan, es gibt einige coole kommende Webinare auf der Liste.