110 votes

Comment puis-je déboguer rapidement et efficacement les modèles CloudFormation ?

CloudFormation est une offre puissante d'AWS qui permet la création programmatique de piles de ressources AWS, telles que le système de gestion de l'information (SGI). le niveau web d'une application, a cluster de calcul haute performance, o une pile d'applications complète, avec un seul appel API. C'est un outil extrêmement puissant. L'utiliser est sûrement considéré comme une bonne pratique AWS, surtout lorsqu'elle est combinée avec Chef, Marionnette, o cloud-init. Le déboguer me pousse au vice.

Prenons un exemple de production : Le stock modèles de cluster mongodb ne fonctionnera pas pour moi. Je ne sais pas vraiment pourquoi. Je suis sûr que c'est quelque chose de simple, comme c'est presque toujours le cas. Mon problème n'est pas que je n'arrive pas à comprendre ce qui ne va pas. C'est qu'il faut à la pile entre 20 et 30 minutes pour échouer, puis encore trois ou quatre minutes pour supprimer, en supposant qu'elle supprime les ressources correctement.

Qu'est-ce que je rate ? Je suis au courant de la --disable-rollback et l'utiliser comme de l'oxygène. J'ai appris il y a longtemps à emballer les messages de sortie avec cfn-signal et de les jeter comme du lest sur un bateau qui coule. Comment puis-je accélérer le processus de débogage des modèles, ou suis-je condamné à constater mes erreurs une demi-heure après les avoir commises ?

5voto

Aitch Points 462

J'interviens tardivement, mais je pourrais aussi ajouter qu'il vaut la peine de passer un peu de temps à configurer et à apprendre votre éditeur. Je sais que cette réponse peut sembler rudimentaire, mais essayez-la.

Dans mon cas, avec vim, j'ai obtenu de bien meilleurs résultats une fois que j'ai pris le temps d'installer les plugins de syntaxe json, et aussi (enfin) compris les techniques de pliage pour naviguer facilement dans les gros fichiers CF. Le mien suggère maintenant les fautes de frappe (virgules où elles ne devraient pas être, etc.) et la mise en évidence par la couleur permet de gagner beaucoup de temps en donnant des indices visuels clairs.

Cela peut contribuer à limiter les erreurs de syntaxe, mais les erreurs logiques dans le modèle sont mieux corrigées par d'autres outils. Espérons qu'un jour, il y aura un mode "aperçu" sur CF.

4voto

Jason Points 661

Pour les IDE de JetBrains (IntelliJ IDEA PhpStorm WebStorm PyCharm RubyMine AppCode CLion Gogland DataGrip Rider Android Studio ), il existe à AWS CloudFormation plugin qui prend en charge la vérification approfondie des modèles CFN JSON et YAML

2voto

ChaitanyaBhatt Points 685

Si vous avez affaire à des machines EC2, je vous recommande de vous connecter à la machine EC2 et d'écouter le fichier boot.log (/var/log/boot.log dans RHEL6/Centos). Ce fichier est mis à jour avec toutes les activités du shell (activités telles que : installation, téléchargement de fichiers, copie de fichiers, etc.)

Utilisez également des éditeurs comme http://www.jsoneditoronline.org/ pour obtenir une représentation arborescente de votre JSON. Cela vous permet de vérifier l'ordre des éléments JSON.

Et lorsque vous mettez à jour des fichiers, utilisez toujours des outils comme http://www.git-tower.com/blog/diff-tools-mac/ ou un véritable système de contrôle de version pour s'assurer que vous n'avez pas accidentellement modifié quelque chose qui pourrait casser votre script.

2voto

Jason Points 661

En plus de l'AWS CLI aws cloudformation validate-template il existe une commande basée sur les nœuds cfn-check outil qui effectue une validation plus approfondie.

1voto

gar Points 38

Il existe également un validateur en ligne tel que http://cloudformation-validation.com qui validera le modèle pour vous sans avoir à manipuler la ligne de commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X