Vor kurzem hatte der Amazon S3 einen großen Ausfall in der Region USA-Ost-1. Es sieht so aus, als ob es wahrscheinlich durch einen Rechtschreibfehler beim Ausführen eines Wartungs-Playbooks in Ansible oder einem ähnlichen Tool verursacht wurde. Sie können einen Shell-Skript-Wrapper um ansible-playbook legen, um wie folgt auszusehen:
#!/bin/bash
/usr/bin/ansible-playbook "$@" --list-hosts --list-tasks
read -p "Are you sure? (y/n) " answer
test "$answer" = "y" || exit 0
exec /usr/bin/ansible-playbook "$@"
Auf welche andere Weise können Sie jedoch die Sicherheit verbessern und die Wahrscheinlichkeit von Fehlern verringern, die zu einem größeren Ausfall Ihres Unternehmens führen.
Antworten:
Wir verwenden Jobs in Jenkins, um Bereitstellungen auszulösen. Es stellt sicher, dass der ausgeführte ansible-Befehl unabhängig davon, wer die Bereitstellung ausführt, derselbe ist. Ein schöner Bonus ist die Aufzeichnung der Erstellungsprotokolle, wann Bereitstellungen ausgelöst wurden, wer sie ausgelöst hat und was genau während der Bereitstellung passiert ist.
Es ist sicherlich nicht kinderleicht, aber es ist eine schöne Verbesserung gegenüber dem manuellen Ausführen von Ansible-Playbooks.
Bei größeren / riskanteren Änderungen sollte dies idealerweise mit einer Form des Änderungsmanagements kombiniert werden, sodass Änderungen erst vorgenommen werden, nachdem eine andere Person / ein anderes Team die Änderung und den Ansatz für die Änderung überprüft hat, um potenzielle Probleme frühzeitig zu erkennen und zu lösen.
Außerdem schadet es nie, wenn ein Teamkollege, der die von Ihnen vorgenommenen Änderungen versteht, anwesend ist und zuschaut, während Sie große Änderungen vornehmen, damit er auf Fehler bei der Ausführung der Änderungen achten und diese verhindern kann.
quelle
Fehlerkategorien
Es gibt zwei Arten, menschliche Faktoren zu betrachten, die zu Problemen und Unfällen führen:
Der erste heißt der menschlicher Ansatz und der zweite als Systemansatz bezeichnet .
Um das Scheitern mit dem menschlichen Ansatz zu erklären, würden Sie das Scheitern suchen und die ungenauen Einschätzungen, falschen Entscheidungen oder schlechten Urteile der Menschen finden.
Um Fehler anhand des Systemansatzes zu erklären, versuchen Sie nicht herauszufinden, wo Menschen falsch gelaufen sind. Finden Sie stattdessen heraus, wie die Einschätzungen und Handlungen der Menschen zu dieser Zeit angesichts der Umstände, die sie umgaben, sinnvoll waren.
Zum Beispiel argumentiert Donald Berwick vom Institute for Healthcare Improvement (IHI), dass eine Verbesserung der Patientensicherheit erforderlich ist Änderungen im Design von Systemen :
Fehler aus dem System entfernen
Ein guter Weg, um die verschiedenen Arten des Versagens nachträglich zu finden (und zu korrigieren), ist die Suche nach der Grundursache, ohne die Menschen zu beschuldigen. Dies wird oft als "tadellose Obduktion" bezeichnet, und Etsy Code als Craft-Blogpost erweitert das Konzept. Die Leute bei Etsy präsentierten und schrieben mehr darüber in anderen Foren und Blogs.
Um Fehler zu vermeiden, sind einige Kulturmerkmale ein Muss. Verfahren und verschiedene im System erzeugte Artefakte müssen testen, ob ihre Verwendung durch Menschen sehr klar und selbsterklärend ist. Oft sind diejenigen, die kreieren, nicht diejenigen, die konsumieren, was zu einer Unterbrechung und Unklarheit führt. Das System ist dann nicht sicher zu betreiben, da die einzige Person, die alle Annahmen kennt, diejenige ist, die es erstellt hat (und sonst niemand).
Wirksame Kontrollmaßnahmen
Ergreifen Sie wirksame Kontrollmaßnahmen, um den Prozess zu stoppen, wenn ein Fehler auftritt. Dies ist fehlerfrei. Effektive Kontrollmaßnahmen sind Konstruktionsänderungen, die verhindern oder verhindern, dass Prozesse fortgesetzt werden, wenn ein Fehler aufgetreten ist, indem ein Prozessfehler eingeführt wird
Beispiel:
1896 erfand Sakichi Toyoda Japans ersten Webstuhl namens "Toyoda Steam Power Loom". Diese Entwicklung erhöhte die Produktivität um das Zwanzigfache, und die Qualität der Textilien verbesserte sich und löste eine Revolution in der Textilindustrie in Japan aus. Aber hier ist die subtile, aber sehr wichtige Entdeckung und das Prinzip:
Sakichi Toyoda schuf eine Innovation für den Webstuhl, die später zu einer der Säulen des Toyota Production System (Lean) wurde. Diese Säule nennen wir jetzt Jidoka, manchmal auch "intelligente Automatisierung mit menschlicher Note" oder "Autonomie" genannt.
Andon (Stopp beim ersten Defekt) und Poka-Yoke (Fehlerprüfung) sind größtenteils spätere Entwicklungen, die ihren Einfluss auf den Webstuhl finden.
Entfernen von Einzelpunktschwächen
Der Begriff Einzelpunktschwäche bezieht sich auf die Schaffung von Redundanzen im System als Ansatz zur Verbesserung der Systemzuverlässigkeit. Redundanz entsteht durch die Erhöhung der Anzahl der am Prozess beteiligten Systeme oder Personen. Mehr Sicherungssysteme oder mehr Überprüfungen (doppelt, dreifach oder mehr) erhöhen die Wahrscheinlichkeit, dass der Prozess korrekt abläuft.
Ein gutes Beispiel dafür ist das "Vier-Augen-Prinzip", das bedeutet, dass "alle Geschäftsentscheidungen und Transaktionen der Genehmigung des CEO und des CFO bedürfen. Da der CFO nicht an den CEO berichtet, gibt es einen unabhängigen Kontrollmechanismus." .
Quelle: https://en.wikipedia.org/wiki/Two-man_rule
Machen Sie Gefahren offensichtlich
Wenn Gefahren offensichtlich oder unmöglich zu erreichen sind, kann der Mensch keine Fehler machen. Beispielsweise ist die Farbcodierung ein gängiger Ansatz, um Fehler offensichtlicher zu machen. Oder wenn Sie an verschiedene Computersteckdosen denken, die nur in die eine und nicht in die andere Richtung usw. eingesetzt werden können.
Einige großartige Bücher sprechen über das Thema, und es wäre keine gute Antwort, ohne sie zu erwähnen:
quelle
Wie @bradim sagte, ist die Verwendung Ihres CI / CD-Tools zum Initiieren der Bereitstellung anstelle von handbasierten Befehlen normalerweise ein guter Schritt nach vorne, ebenso wie das Hinzufügen von Tests in Ihrer Pipeline, die Ihre Bereitstellungsskripte tatsächlich in Ihrer Staging-Umgebung (oder einer frisch erstellten Umgebung) testen Sie können Fehler früher erkennen.
Ich möchte auch hinzufügen, dass Sie, anstatt Ihre ansible-Skripte direkt aufzurufen, auch Tools wie Ansible Tower in Ihren Flow aufnehmen können, mit denen Sie die Änderungen verfolgen können, die einfacher ausgeführt wurden, und Ihnen einen zusätzlichen Sicherheitsschritt in Ihrem System geben können fließen.
quelle