Welche Rolle spielen Configuration Management-Tools in unveränderlichen Infrastrukturen?

12

Benötige ich Tools wie Chef, Puppet, Ansible oder Salt, wenn ich unveränderliche Server / Container verwende? Diese Konfigurationsverwaltungstools dienen dazu, eine Konfiguration einzurichten und diese dann zu verwalten.

Wenn ich unveränderliche Server bereitstelle, sollte ich Konfigurationsverwaltungstools nur für die Erstbereitstellung verwenden?

Dave Swersky
quelle

Antworten:

12

Darauf gibt es ein paar Antworten:

  1. Etwas muss diese unveränderlichen Bilder aufbauen. Es ist sicherlich einfacher, Prozedur-Skripte im Old-School-Stil zu verwenden, um etwas zu erstellen, wenn man von einem bekannten Ausgangszustand ausgeht. Dies kann jedoch mit der Zeit sehr unhandlich werden (z. B. Docker-Dateien), insbesondere wenn Sie eine große Matrix verschiedener Bilder für die Erstellung benötigen Dinge wie unterschiedliche Softwareversionen, unterschiedliche Umgebungen usw. Packer und andere Tools zum Erstellen von Images lassen sich gut in Chef, Ansible, Puppet, Salt und mehr integrieren.

  2. Unveränderlichkeit ist ein Spektrum, keine Binärdatei. Selbst in einer "sehr unveränderlichen" Bereitstellung ist es nicht ungewöhnlich, dass einige Konfigurationsdateien Laufzeitverwaltung benötigen. Hier können Sie auch CAPS-Tools verwenden, obwohl leichtere Optionen wie Consul Templates oder etcd je nach Gesamtinfrastruktur möglicherweise sinnvoller sind. Wenn Sie unveränderliche App-Server ausführen, Ihre Datenbankserver jedoch herkömmlicher mit Chef verwaltet werden, ist es möglicherweise sinnvoll, Chef auch auf unveränderlicher Seite für kleinere Verwaltungsaufgaben zu verwenden.

  3. Zero-Day-Management. Unveränderlichkeit ist nett, aber was machst du, wenn der nächste OpenSSL 0-Tag fällt? Wenn Sie mit Ihrer Build-Pipeline in der Lage sind, sofortige Hotfix-Images zu erstellen und bereitzustellen, ist das großartig. Aber viele Leute werden wahrscheinlich nicht über diese Schnelligkeit verfügen.

  4. Dinge, die nicht unveränderlich sein können. Die Nichtantwort, aber eine ganze Infra ist selten zu 100% unveränderlich. Dinge wie Datenbankserver und Entwicklerarbeitsstationen (ja, diese sind Teil Ihrer Infrastruktur) sind zwischen schwierig und unmöglich unveränderbar.

coderanger
quelle
Sie machen ziemlich viele Annahmen über "viele Menschen". Diejenigen, die keine Images für ihre unveränderliche Infrastruktur generieren können, verfügen höchstwahrscheinlich nicht über die unveränderliche Infrastruktur.
Evgeny
Es besteht eine große Lücke zwischen "Kann mit unveränderlichen Containern bereitgestellt werden" und "Kann jeden Container innerhalb von 6 Stunden neu erstellen und erneut bereitstellen, auch wenn andere Bereitstellungen ausgeführt werden".
Coderanger
Und meiner Erfahrung nach können Sie, wenn Sie diese Lücke haben (von 6 Stunden), keine unveränderliche Infrastruktur haben. Unveränderliche Server zu haben und unveränderliche Server schnell aufzubauen, sind keine identischen Fähigkeiten, aber sie hängen eng zusammen.
Evgeny
Viele Leute, die sagen "Wir betreiben unveränderliche Container", gehören nicht zu dieser Kategorie. Daher darauf hinweisen, dass es ein Problem ist, sich damit zu befassen, worum es bei der Frage ging.
Coderanger
Sie können „unveränderlich“ definieren „no-one SSH ist in und macht manuelle Änderungen“ bedeuten, weil es nicht kann völlig unveränderlich bedeuten, da sie ändern sich während des normalen Betriebs. Sogar das Schreiben einer Pidfile ist eine Mutation.
Gaius
0

Absolut unveränderliche Umgebung ist eine schlechte Idee, denke ich.

CM-Tools wie Ansible, Chef, Puppet können in vielen Fällen hilfreich sein, auch bei Ihnen.

Ich verwende Ansible für die anfängliche Bereitstellung von VM-Instanzen in GCP.

Quarind
quelle