SaltStack-Infrastruktur: Installation des Salt Master

Einführung

SaltStack oder Salt ist ein leistungsstarkes Remote-Ausführungs- und Konfigurationsverwaltungssystem, mit dem die Infrastruktur auf einfache Weise strukturiert und wiederholbar verwaltet werden kann. In dieser Serie werden wir eine Methode zum Verwalten Ihrer Entwicklungs-, Staging- und Produktionsumgebungen anhand einer Salt-Bereitstellung demonstrieren. Wir werden das Salt-Status-System verwenden, um wiederholbare Aktionen zu schreiben und anzuwenden. Auf diese Weise können wir jede unserer Umgebungen zerstören, in der Gewissheit, dass wir sie zu einem späteren Zeitpunkt problemlos in identischem Zustand wieder online stellen können.

In diesem Artikel stellen wir die verschiedenen Umgebungen vor, die wir entwickeln werden, und wir werden den Salt-Master-Daemon auf unserem Primärserver installieren, um loszulegen. Dies ist das Kernsystem, das unsere Konfigurationsanweisungen enthält, unsere Infrastrukturknoten steuert und unsere Anforderungen verwaltet.

Voraussetzungen

Um dieses Handbuch zu vervollständigen, benötigen Sie einen sauberen Ubuntu 14.04-Server. Für diesen Server muss das private Netzwerk aktiviert sein.

Auf diesem Server sollte ein Nicht-Root-Konto mit den Rechten "+ sudo +" konfiguriert sein. Informationen zum Einrichten eines Kontos dieses Typs finden Sie in unserer Ubuntu 14.04 Anleitung zur Ersteinrichtung des Servers.

In einem späteren Artikel dieser Reihe wird der Befehl "+ salt-cloud +" verwendet, um Infrastrukturserver mithilfe der DigitalOcean-Cloud hochzufahren. Sie können bei Bedarf andere Cloud-Anbieter oder sogar virtuelle Instanzen mit Software wie vagrant verwenden. Dies liegt jedoch außerhalb des Geltungsbereichs dieses Handbuchs und Sie müssen Ihre eigenen Forschungen in diesen Bereichen durchführen.

Übersicht über die Infrastruktur, die wir bauen werden

Die Server, die wir mit "+ salt-cloud +" hochfahren, repräsentieren unsere drei Umgebungen, die wir für die Anwendungsentwicklung pflegen möchten. Da unser Salt-Masterserver die Konfiguration für jeden von uns benötigten Server beibehält, können wir diese Server herunterfahren, wenn wir sie nicht verwenden. Wenn Ihr Entwicklungsteam beispielsweise die Arbeit für die Feiertage angehalten hat, können Sie Ihre Nichtproduktionsumgebungen herunterfahren. Wenn Sie von Ihrer Pause zurückkehren, können Sie sie problemlos neu erstellen und Ihre Anwendung über diese neue Infrastruktur erneut bereitstellen.

Wir werden unsere Beispielinfrastruktur in Entwicklung, Bereitstellung und Produktion aufteilen.

Unsere Entwicklungsinfrastruktur wird unsere bescheidenste sein. Es wird einfach einen einzelnen Webserver und einen zugeordneten Datenbankserver enthalten. Das Entkoppeln der Datenbank und des Webservers reicht aus, um sicherzustellen, dass unsere Anwendung mit Blick auf entfernte Daten erstellt wird.

Die Staging-Umgebung wird robuster. Die meisten Ratschläge, die Sie finden, empfehlen, die Staging-Umgebung so zu konfigurieren, dass sie der beabsichtigten Produktionsumgebung so ähnlich wie möglich ist. Aus diesem Grund wird unsere Staging-Umgebung aus zwei Webservern bestehen, um die Verkehrslast zu verteilen. Wir werden den Datenverkehr zwischen diesen beiden Servern mithilfe eines Lastenausgleichs verteilen. Auf der Datenbankseite werden zwei Datenbankserver hochgefahren. Wir richten eine Master-Master-Replikation zwischen diesen beiden Servern ein, damit beide Schreibanforderungen annehmen können. Die Master-Master-Replikation hat einige Nachteile, ermöglicht es uns jedoch, im Anwendungsdesign etwas faul zu sein (jeder Datenbankserver kann Schreibvorgänge empfangen) und ein ziemlich komplexes Konfigurationsverwaltungsszenario zu demonstrieren.

Wie bereits erwähnt, wird die Produktionsumgebung der Staging-Umgebung sehr ähnlich sein. Der einzige Unterschied in unserem Design ist ein zusätzlicher Lastausgleich, der eine hohe Verfügbarkeit und ein Failover gewährleistet. Wenn Sie möchten, können Sie auch Server mit höherer Kapazität für Ihre Produktionslast verwenden. Dies ist häufig erforderlich, um die Verkehrsanforderungen angemessen zu handhaben, auch wenn es schwieriger ist, die Auslastung in der Bereitstellungsumgebung zu bewerten.

Beachten Sie, dass beim Erstellen von Konfigurationen für die oben aufgeführten Umgebungen nicht alle gleichzeitig ausgeführt werden müssen. Dies gilt insbesondere während des Testens. Während dieser Serie sind wahrscheinlich immer nur wenige Server aktiv. Dies ist unter Kostengesichtspunkten wünschenswert, aber das Zerstören und Aufrufen unserer Umgebungen nach Bedarf stellt auch sicher, dass unser Bootstrapping der Umgebung robust und wiederholbar ist.

Nachdem Sie das allgemeine Layout der zu konfigurierenden Umgebungen kennen, können wir unseren Salt Master in Betrieb nehmen.

Salt Master installieren

Beginnen Sie mit der Anmeldung beim Server, den Sie als Salt-Master als Nicht-Root-Benutzer mit den Rechten "+ sudo +" einrichten möchten.

Es gibt eine ganze Reihe von https://www.digitalocean.com/community/tutorials/installations- und konfigurationsanweisungen für-salzmaster-und-minionsserver-auf-ubuntu-14-04. Installieren des Salt-Master-Daemons auf einem Server. Es gibt PPAs für Ubuntu, aber diese können oft veraltet sein. Der beste Ansatz zum Planen und Verwalten von Konfigurationsverwaltungssoftware besteht darin, auf eine bestimmte Version abzuzielen. Auf diese Weise können Sie Ihre Systeme (nach gründlichen Tests) auf eine geplante und strukturierte Weise aktualisieren, anstatt sich zum Zeitpunkt der Installation auf das zu stützende Repository zu verlassen.

In diesem Handbuch wird die Salt-Version v2015.8.0, die zum Zeitpunkt der Erstellung dieses Dokuments aktuelle stabile Version, als Ziel ausgewählt. Wenn Sie eine andere Version oder Installationsmethode wählen, beachten Sie, dass die Prozesse in diesem Handbuch möglicherweise nicht wie beschrieben funktionieren.

Der einfachste Weg, eine bestimmte Version zu installieren, ist das SaltStack-Bootstrap-Skript. Laden Sie das neueste Bootstrap-Skript in Ihr Home-Verzeichnis herunter, indem Sie Folgendes eingeben:

cd ~
curl -L https://bootstrap.saltstack.com -o install_salt.sh

Schauen Sie sich den Inhalt des heruntergeladenen Skripts an, bis Sie mit den durchzuführenden Vorgängen vertraut sind.

Wenn Sie bereit sind, den Salt Master zu installieren, können Sie das Skript mit der + sh + Shell ausführen. Wir werden das + -P + -Flag übergeben, um anzuzeigen, dass wir Abhängigkeiten mit + pip +, dem Python-Paketmanager, installieren dürfen. Wir müssen auch das + -M + - Flag einfügen, um anzuzeigen, dass wir den Master-Daemon installieren möchten. Beenden Sie den Befehl mit + git v2015.8.0 +, wodurch das Skript angewiesen wird, das angegebene Release-Tag vom SaltStack GitHub-Repo abzurufen und dieses für die Installation zu verwenden:

sudo sh install_salt.sh -P -M git v2015.8.0

Das Skript installiert alle erforderlichen Abhängigkeiten, ruft die angegebene Version aus dem Repo "+ git +" ab und installiert die Salt-Master- und Minion-Daemons sowie einige verwandte Salt-Dienstprogramme.

Die Installation sollte eher unkompliziert sein. Als nächstes können wir beginnen, unseren Salt Master zu konfigurieren.

Konfigurieren Sie den Salt Master

Als Erstes müssen wir die Hauptkonfigurationsdatei von Salt Master bearbeiten. Öffne es jetzt mit + sudo + Privilegien:

sudo nano /etc/salt/master

Die Konfigurationsdatei ist ziemlich lang und gut kommentiert. Sie müssen nur die Kommentare entfernen und Optionen festlegen, wenn Sie von den Standardwerten abweichen möchten. Wir müssen nur ein paar Änderungen vornehmen, um anzufangen.

Suchen Sie zuerst die Option "+ file_recv +" in der Datei. Wenn Sie dies aktivieren, können Salt Minions Dateien an den Salt Master senden. Dies ist äußerst hilfreich, wenn Sie Status erstellen, um Konfigurationsdateien abzurufen, die Sie ändern möchten. Dies birgt jedoch ein gewisses Risiko. Wir werden es für die Dauer dieses Handbuchs aktivieren. Sie können es anschließend deaktivieren, wenn Sie Folgendes möchten:

/ etc / salt / master

file_recv: True

Als nächstes müssen wir das + file_roots + Wörterbuch setzen. Der Salt-Master enthält einen Dateiserver, auf dem Dateien für die gesamte Infrastruktur gespeichert und bereitgestellt werden. Dies umfasst die Konfigurationsverwaltungsstatusdateien selbst sowie alle Minion-Dateien, die von unserem System verwaltet werden. Dieses YAML-Wörterbuch definiert das Stammverzeichnis des Dateiservers, das sich unter "+ / srv / salt +" befindet. Wir müssen angeben, dass sich diese in der Basisumgebung befindet, der obligatorischen Standardumgebung für alle Salt-Bereitstellungen:

/ etc / salt / master

file_roots:
 base:
   - /srv/salt

Note

Das letzte Element, das wir jetzt brauchen, ist das + pillar_roots + Wörterbuch. Das Säulensystem dient zum Speichern von Konfigurationsdaten, die auf bestimmte Knoten beschränkt werden können. Auf diese Weise können wir das Verhalten anpassen und verhindern, dass vertrauliche Daten von Infrastrukturkomponenten angezeigt werden, die nicht mit den Daten verknüpft sind. Dieses Format spiegelt die + file_roots + genau wider. Der Speicherort unserer Säulendaten ist "+ / srv / pillar +":

/ etc / salt / master

pillar_roots:
 base:
   - /srv/pillar

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Wir können fortfahren und die Verzeichnisse erstellen, auf die wir in der Konfigurationsdatei verwiesen haben, indem wir Folgendes eingeben:

sudo mkdir -p /srv/{salt,pillar}

Konfigurieren Sie den Minion Daemon auf dem Salt Master

Wir möchten unseren Salt-Masterserver auch so konfigurieren, dass er Salt-Befehle akzeptiert. Wir können dies tun, indem wir den Minion-Daemon auf unserem Server konfigurieren. Öffnen Sie die Datei, um zu beginnen:

sudo nano /etc/salt/minion

Das einzige Element, das wir hier ändern müssen, ist der Standort des Masterservers. Da beide Daemons auf demselben Host ausgeführt werden, können wir die Adresse auf die lokale Loopback-Schnittstelle festlegen:

/ etc / salt / minion

master: 127.0.0.1

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Starten Sie die Dienste neu und akzeptieren Sie die Salt Keys

Nachdem wir die Salt Master- und Minion-Konfiguration eingerichtet haben, starten Sie die Dienste neu, um die Änderungen zu übernehmen:

sudo restart salt-master
sudo restart salt-minion

Bevor der Salt Master sicher mit einem Diener kommunizieren kann (auch auf demselben Server), muss er den Schlüssel des Dieners akzeptieren. Dies ist eine Sicherheitsfunktion. Sie können alle akzeptierten und ausstehenden Schlüssel anzeigen, indem Sie Folgendes eingeben:

sudo salt-key --list all

Wenn Ihre Daemons korrekt konfiguriert und neu gestartet wurden, sollte im Abschnitt „Nicht akzeptierte Schlüssel“ ein Schlüssel für Ihren Salt-Masterserver angezeigt werden. In unserem Fall wird unser Salt Master auf einer Maschine namens "sm" gehostet:

OutputAccepted Keys:
Denied Keys:
Unaccepted Keys:

Rejected Keys:

Sie können diesen Schlüssel akzeptieren, indem Sie die Diener-ID des Servers (in diesem Fall "+ sm +" +) mit dem + "-a" -Flag an den + "salt-key" + -Befehl übergeben:

sudo salt-key -a

Wenn Sie es erneut überprüfen, wird Ihr Schlüssel in den Bereich "Akzeptierte Schlüssel" verschoben:

sudo salt-key --list all
OutputAccepted Keys:

Denied Keys:
Unaccepted Keys:
Rejected Keys:

Sie können überprüfen, ob Ihr Salt-Masterserver jetzt auf Salt-Befehle reagiert, indem Sie Folgendes eingeben:

sudo salt '*' test.ping

Sie sollten eine Antwort erhalten, die ungefähr so ​​aussieht:

Output:
   True

Ihr Salt-Master-Server ist jetzt betriebsbereit.

Fazit

In diesem Handbuch haben wir begonnen, unsere Infrastruktur zu verwalten, indem wir die Erstkonfiguration unseres Salt-Masterservers durchgearbeitet haben. Dies ist der zentrale Server in unserem Management-Design, der sowohl als Kontrollzentrum als auch als Aufbewahrungsort für Konfigurationsdaten verwendet wird.

In der next guide in dieser Reihe werden wir unseren Salt-Masterserver konfigurieren mit unseren DigitalOcean API-Zugangsdaten. Wir erstellen eine Anbieterkonfiguration, mit der wir mit dem Befehl "+ salt-cloud +" eine Verbindung zu unserem DigitalOcean-Konto herstellen und Cloud-Ressourcen erstellen und verwalten können. Wir werden die Profile für unsere Infrastrukturmaschinen erstellen, damit wir die Eigenschaften für jeden unserer Server definieren können.