Récemment, l'Amazon S3 a connu une panne majeure dans la région des États-Unis-1. Il semble que cela soit probablement dû à une faute d'orthographe lors de l'exécution d'un playbook de maintenance dans Ansible ou un outil similaire. Vous pouvez mettre un wrapper de script shell autour de ansible-playbook pour ressembler à:
#!/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 "$@"
Mais quelles sont les autres méthodes que vous utilisez pour améliorer la sécurité et réduire le risque d'erreur provoquant une panne majeure pour votre entreprise.
Réponses:
Nous utilisons des travaux dans Jenkins pour déclencher des déploiements. Il garantit que, peu importe qui effectue le déploiement, la commande ansible exécutée sera la même. Un bon bonus est l'enregistrement des journaux de construction lorsque les déploiements ont été déclenchés, qui les a déclenchés et ce qui s'est exactement passé pendant le déploiement.
Ce n'est certainement pas infaillible, mais cela a été une belle amélioration par rapport à l'exécution manuelle de manuels de jeu.
Pour les changements plus importants / plus risqués, cela devrait idéalement être combiné avec une certaine forme de gestion du changement, de sorte que les changements ne sont apportés qu'après qu'une autre personne / équipe a examiné le changement et l'approche du changement pour aider à identifier et à résoudre tôt les problèmes potentiels.
De plus, cela ne fait jamais de mal d'avoir un coéquipier qui comprend le changement que vous apportez être présent et regarder pendant que vous effectuez de grands changements afin qu'ils puissent surveiller et aider à prévenir les erreurs dans l'exécution du changement.
la source
Catégories d'erreurs
Il existe deux façons de considérer les facteurs humains qui conduisent à des problèmes et à des accidents:
Le premier est appelé l' approche humaine et le second l' approche système .
Pour expliquer l'échec en utilisant l'approche humaine, vous rechercheriez l'échec et trouveriez les évaluations inexactes des gens, les mauvaises décisions ou les mauvais jugements.
Pour expliquer l'échec en utilisant l'approche système, vous n'essayez pas de trouver où les gens se sont trompés. Au lieu de cela, découvrez comment les évaluations et les actions des gens avaient du sens à l'époque, compte tenu des circonstances qui les entouraient.
Par exemple, Donald Berwick de l'Institute for Healthcare Improvement (IHI) soutient que l'amélioration de la sécurité des patients nécessite des changements dans la conception des systèmes :
Suppression des erreurs du système
Une excellente façon de trouver (et de corriger) les différentes façons dont l'échec se produit après coup est de rechercher la cause première sans blâmer les gens. Ceci est souvent appelé «post-mortem irréprochable», et Etsy Code en tant que billet de blog Craft développe le concept. Les gens d'Etsy ont présenté et écrit plus à ce sujet sur d'autres forums et blogs.
Pour éviter les erreurs en premier lieu, certains traits culturels sont indispensables. Les procédures et divers artefacts créés dans le système doivent tester que leur utilisation par les humains est très claire et explicite. Souvent, ceux qui créent ne sont pas ceux qui consomment, ce qui entraîne une déconnexion et un manque de clarté. Le système n'est alors pas sûr à utiliser car la seule personne qui connaît toutes les hypothèses est celle qui l'a créé (et personne d'autre).
Mesures de contrôle efficaces
Mettre en place des mesures de contrôle efficaces pour arrêter le processus en cas d'erreur. C'est à l'abri des erreurs. Les mesures de contrôle efficaces sont des modifications de conception qui empêchent ou empêchent les processus de se poursuivre lorsqu'une erreur s'est produite en introduisant une défaillance du processus
Exemple:
En 1896, Sakichi Toyoda a inventé le premier métier à tisser électrique japonais appelé «le métier à tisser électrique Toyoda Steam». Ce développement a augmenté la productivité de vingt fois, et la qualité des textiles s'est améliorée et a provoqué une révolution dans l'industrie textile au Japon. Mais voici la découverte et le principe subtils mais très importants:
Sakichi Toyoda a créé une innovation pour le métier à tisser qui deviendra plus tard l'un des piliers du système de production Toyota (Lean). Ce pilier que nous appelons maintenant Jidoka, parfois appelé «automatisation intelligente avec une touche humaine» ou «autonomisation».
En grande partie, Andon (arrêt au premier défaut) et Poka-Yoke (correction des erreurs) sont des développements ultérieurs qui trouvent leur influence dans le métier à tisser.
Suppression des faiblesses ponctuelles
Le terme faiblesse en un seul point fait référence à la création de redondances dans le système comme une approche pour améliorer la fiabilité du système. La redondance est créée en augmentant le nombre de systèmes ou d'individus impliqués dans le processus. Avoir plus de systèmes de sauvegarde ou plus de contrôles (double, triple ou plus) augmente la probabilité que le processus se déroule correctement.
Un bon exemple en est le «principe des quatre yeux», qui signifie que «toutes les décisions et transactions commerciales doivent être approuvées par le PDG et le directeur financier. Étant donné que le directeur financier ne relève pas du directeur général, un mécanisme de contrôle indépendant est en place» .
source: https://en.wikipedia.org/wiki/Two-man_rule
Rendre les dangers évidents
Si les dangers deviennent évidents ou impossibles à atteindre, les humains ne peuvent pas créer d'erreurs. Par exemple, le codage couleur est une approche courante pour rendre les erreurs plus évidentes. Ou si vous pensez à diverses prises d'ordinateur qui ne peuvent être insérées que dans un sens et pas dans l'autre, etc.
De grands livres parlent du sujet, et ce ne serait pas une bonne réponse sans les mentionner:
la source
Comme l'a dit @bradim, l'utilisation de votre outil CI / CD pour lancer le déploiement au lieu de commandes manuelles est généralement un bon pas en avant, tout comme l'ajout de tests dans votre pipeline qui testent réellement vos scripts de déploiement sur votre environnement intermédiaire (ou fraîchement créé), où vous pouvez détecter les bogues plus tôt.
J'ajouterais également qu'au lieu d'appeler directement vos scripts ansible, vous pouvez également ajouter des outils comme Ansible Tower dans votre flux, ce qui vous permettra de suivre les modifications qui ont été exécutées plus facilement et peut vous donner une étape supplémentaire de sécurité dans votre couler.
la source