Wie verwende ich Ansible, um mehrere Server mit Multi-Website-Konfiguration zu verwalten?

Wie verwende ich Ansible, um mehrere Server mit Multi-Website-Konfiguration zu verwalten?

Ich habe Ansible untersucht, um neue Server bereitzustellen, und das funktioniert großartig. Mein Spiel installiert MySQL, Nginx und alles andere. Jetzt frage ich mich, wie ich es am besten auch als Konfigurationsverwaltungstool verwenden kann.

Wir betreiben auf jedem Server mehrere Websites. Für mich bedeutet das, dass auf jedem Server ein allgemeines Nginx-Setup und für jede Site/Domäne eine spezifische Konfiguration erforderlich ist. Ich denke dabei daran, dass ich sowohl das allgemeine Setup als auch die spezifische Konfiguration unabhängig voneinander mit Ansible aktualisieren kann, wenn dies erforderlich ist (zum Beispiel aufgrund neuer Erkenntnisse oder Sicherheitsaspekte).

Was müsste ich in dieser Situation tun? Muss ich eine Variable pflegen, die alle Sites und deren Standorte enthält? Oder gibt es bessere Alternativen?

Antwort1

Eine Funktion der Vorlage, die Sie zu diesem Zweck mit großem Nutzen nutzen könnten, ist ihre Fähigkeit zur Vorlagenerstellung.

DerVorlageMit diesem Modul können Sie für jeden Host eine Datei mit eindeutigen Werten bereitstellen. Der Name des Hosts, an dem gerade gearbeitet wird, wird in den Variablen inventory_hostname und inventory_hostname_short gespeichert (letztere ist die erste gepunktete Komponente des Hostnamens).

Sie können die hostspezifischen Variablen in einem Wörterbuch in group_vars/all speichern. Beispiel:

www_sites: {
    host1: "www.mysite1.com",
    host2: "www.mysite2.com",
  }

Dann könnte die Vorlage für die Nginx-Conf-Datei etwa Folgendes enthalten:

server {
  listen       80;
  server_name  {{ www_sites[inventory_hostname_short] }};
  access_log   logs/{{ www_sites[inventory_hostname_short] }}.access.log  main;

Dokumentation für die von Ansible verwendete Template-Sprache Jinja2 finden SieHier.

Antwort2

Ich verwende Variablen, um bestimmte Dinge mit dem betreffenden Host zu tun. Mein Rat ist, so viele Hosts wie möglich in Gruppen zu gruppieren und Gruppenvariablen zu verwenden. Denken Sie daran, dass Ansible-Playbooks sich hervorragend für die Versionierung in Git oder SVN eignen, sodass Sie Ihre Änderungen verfolgen können.

Für Sie könnte die Verwendung funktionieren vars_prompt, insbesondere, wenn Sie Ihre Playbooks nicht planmäßig auf Cron ausführen.

Hoffe das hilft!

verwandte Informationen