Ein Koch, der sie alle regiert

10

Ich suche nach Chefkoch, um Magento-Bereitstellungen zu automatisieren - sowohl in Standard-Magento-Hosting-Optionen als auch in Umgebungen wie EC2. Ich habe gegoogelt und sehe zahlreiche Rezepte, aber keines scheint mir wirklich ein kanonisches zu sein. Gibt es ein bestimmtes Kochskript, das besser / das Beste ist? Wenn Sie bereits Kocheinsätze mit PHP durchgeführt haben, was möchten Sie dann wissen, wenn Sie anfangen?

Alan Storm
quelle
2
Ich wünschte, ich hätte gewusst, dass Ansible ( ansible.com/home ) existiert.
Reid Blomquist
Einige andere Alternativen, wenn Sie interessiert sind, saltstack.com und docker.com . Beide sehen vielversprechend aus, aber ich hatte auch keine Chance, mit ihnen zu arbeiten.
Beeplogic
1
Ich habe mit Capistrano-Asche experimentiert: github.com/augustash/capistrano-ash
pzirkind
Ich denke, Reid hat etwas vor, Alan re: Ansible. Es ist nicht erforderlich, dass ein Agent (funktioniert mit ssh + Schlüsseln) auf Clients installiert ist. Es ist ein deklaratives System, daher ist es idempotent. und mach es gut "Unix-ähnliches Gefühl im Vergleich zu robusteren Systemen wie Koch, Marionette und Salz. Es ist schon eine Weile her, seit Sie dies ursprünglich gepostet haben. Gibt es Aktualisierungen Ihrer Gedanken, nachdem Sie eine Weile mit dem Koch zusammengearbeitet haben?
Bryan 'BJ' Hoffpauir Jr.

Antworten:

6

Es ist fast unmöglich, eine Einheitsroutine zu haben. Ich habe erfolgreich ein Bash-Skript geschrieben, das chef-clientLäufe auf Listen von Hosts ausführt, die von bereitgestellt werden knife search. Die Prozeduren sehen so aus…

Open Source Chef Server 10.18.2 unter Ubuntu 12.04 LTS

  1. Variablen initialisieren
  2. Holen Sie sich den neuesten Revisions-Hash von GitHub für $branch
  3. Deaktivieren Sie die Verfügbarkeitsüberwachung, um Warnungen über den HTTP 503-Status zu verhindern
  4. Schalten Sie alle Web- und Utility-Hosts in den Wartungsmodus
  5. Dienstprogramm bereitstellen
    1. Stoppen Sie Magentos Cron und alle Resque-Arbeiter
    2. Adressdateisystemabhängigkeiten
    3. Chef überprüft die definierte Revision als neue Version
    4. Adressieren Sie Magento-Abhängigkeiten (Pakete, Module, Dateisystem, Berechtigungen).
    5. Aktualisieren Sie alle Cron-Aufgaben und -Skripte für die Automatisierung
    6. Stellen Sie alle Module bereit (Composer)
    7. Cache leeren mit n98-magerun.phar
    8. Führen Sie alle Migrationen mit aus n98-magerun.phar
    9. Aktivieren Sie Magento Cron erneut
    10. Starten Sie Resque Worker
  6. Stellen Sie den ersten Webhost bereit
    1. Adressdateisystemabhängigkeiten
    2. Chef überprüft die $revisionals neue Version definierte
    3. Adressieren Sie Magento-Abhängigkeiten
    4. Stellen Sie alle Magento-Module bereit
  7. Markieren Sie eine neue Bereitstellung in New Relic
  8. Aktivieren Sie Verfügbarkeitsüberwachungsdienste
  9. Deaktivieren Sie die Load Balancer-Dienste für alle anderen Webhosts
  10. Setzen Sie die Bereitstellung auf Webhosts fort und schalten Sie sie nacheinander online
  11. Führen Sie Chef-Routinen für die Suchhosts aus

Quelle: https://gist.github.com/parhamr/6177160#file-2-deployment

parhamr
quelle
4

So habe ich mich diesem Bereich genähert, während ich die Rolle des Sysadmin / Devops tragen wollte. Die meisten der folgenden sind nur allgemeine Prinzipien, denen ich zu folgen versuche, und nicht kochspezifisch.

Am Ende habe ich mich für Puppet entschieden, weil ich festgestellt habe, dass es zu diesem Zeitpunkt mehr Ressourcen gibt, und mich leichter für mich zu fühlen fühlte.

Ich habe mir die verschiedenen vorgefertigten Module angesehen, die für Dinge wie Apache, PHP5 usw. verfügbar sind. Viele von ihnen schienen weit mehr zu tun, als ich brauchte, und waren mit der Plattform so unbekannt, dass ich nicht vertraute, was vor sich ging. Ich entschied, dass es für mich einfacher sein würde, nur zu identifizieren, was ich für jeden Knotentyp tun musste.

Ich begann den Prozess mit der Bereitstellung der lokalen Entwicklungsumgebung des Teams (vargrant + virtual box). Für jeden Dienst / jede Komponente habe ich ein Modul erstellt: PHP5, Apache2, Redis, MySQL usw.

Sobald die Entwicklungsumgebung stabil war / funktionierte, begann ich mit dem Aufbau der QS-Umgebung. Ich habe generische Knotentypen für Webserver, Redis, Lacke usw. definiert, die dieselben Module wie dev wiederverwendeten. Sobald dies erledigt war, waren für Staging und Produktion nur minimale Änderungen erforderlich, um den Betrieb aufzunehmen.

Während Sie Ihre Rezepte / Vorlagen durchgehen und schreiben, sollten Sie überlegen, wie Sie sie wiederverwenden / verallgemeinern können. Codieren Sie keine Dinge wie Pfade oder Benutzer / Gruppen, die sich zwischen Distributionen / Projekten / Umgebungen ändern könnten. Da Sie einen verallgemeinerten Ansatz betrachten, würde ich vermuten, dass eine große Hürde darin besteht, Unterschiede zwischen * nix-Verteilungen zu beseitigen.

Am wichtigsten ist, dass behalten einfach ist. Automatisieren / standardisieren Sie die wichtigsten / zeitaufwändigsten Teile der Umgebung. Iterieren, weiterentwickeln.

Beeplogic
quelle