Lors de mon exposé sur les six priorités pour les Ops dans un monde serverless, la première priorité était l'automatisation — et je suggérais que les lecteurs « étudient les outils d'orchestration du déploiement DevOps tels qu'AWS CloudFormation ». Cet article de blog vise à vous aider à le faire.
Mais avant de commencer, il vous sera peut-être utile d'en savoir plus sur CloudFormation. Voici comment AWS décrit la solution :
AWS CloudFormation fournit un langage commun pour décrire et provisionner toutes les ressources d'infrastructure dans un environnement cloud. CloudFormation vous permet d'utiliser un fichier texte simple pour modéliser et provisionner, de manière automatisée et sécurisée, toutes les ressources nécessaires à vos applications dans toutes les régions et tous les comptes. Ce fichier sert de source factuelle unique pour votre environnement cloud.
Un seul fichier ? Trop beau pour être vrai ? Mais non !
CloudFormation vous permet de créer des environnements entiers de services AWS, dont Amazon Virtual Private Cloud (Amazon VPC), Amazon EC2, Amazon S3, les groupes de sécurité Amazon EC2, et bien plus encore. Et vous pouvez utiliser les modèles CloudFormation plusieurs fois, ce qui rend très facile le lancement d'un environnement complexe en quelques clics.
Maintenant que vous savez ce qu'est CloudFormation, voici un exemple simple que nous utilisons pour lancer une instance Amazon Linux v2 T2 qui installe automatiquement l'agent de monitoring de l'infrastructure de New Relic. L'objectif de cet article est de vous fournir un exemple que vous pouvez utiliser pour la conception de vos scripts CloudFormation.
La programmation, c'est super ! #?@
Avant de commencer, je me dois de vous prévenir : la majorité de ce qui est requis pour écrire un document AWS CloudFormation est relativement simple. Toutefois, lorsque vous arrivez à la programmation de vos scripts dans BASH ou Windows PowerShell, sachez que vous faites aussi un wrap-up dans le code JSON. Cela signifie que vous avez besoin de deux niveaux de débogage : un pour JSON et un autre pour le script BASH ou PowerShell.
Autre conseil : si vous le pouvez, créez d'abord le script BASH ou PowerShell dans un environnement live. Assurez-vous qu'il fonctionne, puis prenez ce script et ajoutez-le à votre document JSON. Vous devrez toujours remplacer une partie du code avec des paramètres là où cela est nécessaire, mais au moins, vous aurez réduit le débogage le plus possible.
Gardez cela à l'esprit alors que nous avançons ici.
Comment utiliser le modèle CloudFormation
1. À partir de la console AWS, ouvrez CloudFormation (situé dans la section Management Tools).
2. Créez un nouveau stack : sélectionnez Create Stack :
https://kupsand.s3.amazonaws.com/NewRelic/NR-Infra-CloudFormation.json
4. Sélectionnez Next et dans l'interface Specify stack details, donnez un nom au stack qui soit clair pour vos besoins, par exemple : NR-infrastructure
.
5. Saisissez les éléments de configuration AWS pour Key Name (votre paire de clés), Instance Type et SSH Location.
Remarque : bien que ce ne soit pas obligatoire pour ce didacticiel, il vaut mieux verrouiller l'emplacement SSH pour assurer une plus grande sécurité. Le 0.0.0.0/0 dans cette capture d'écran est ouvert au monde entier.
6. Lorsque vous avez terminé d'entrer les éléments de configuration AWS, vous pouvez ajouter votre clé de licence d'ingestion New Relic (requise). Vous pouvez trouver cette clé sous « API keys » sur la console New Relic.
Puis collez-la ici :
7. Ensuite, vous pouvez compléter les éléments de configuration optionnels de New Relic. Définissez le nom d'affichage — Display Name — adéquat pour votre instance. Consultez notre documentation sur les paramètres de configuration de l'agent d'infrastructure pour en savoir plus. Vous pouvez modifier votre script CloudFormation pour inclure d'autres paramètres disponibles si vous le souhaitez.
8. Enfin, définissez les éléments de configuration New Relic optionnels que vous voulez utiliser.
9. Lorsque vous avez terminé la section de configuration, sélectionnez Next. Vous êtes invité à définir quelques paramètres optionnels supplémentaires. Ils incluent les tags (nommez votre instance avec la paire clé/value Name/[nom]), les autorisations, les options d'échec du stack et d'autres options avancées. Ajoutez ou sélectionnez tous les éléments que vous souhaitez, puis sélectionnez Next.
10. CloudFormation ouvre un écran de vérification contenant tous les éléments que vous avez saisis. Sélectionnez Submit pour déployer le stack CloudFormation. (Notez qu'à partir d'ici, Amazon vous facturera pour les ressources AWS — une instance EC2 — utilisée lorsque vous créez un stack à partir de ce modèle.)
Wrap up
Cet exemple lance une instance Amazon Linux v2 EC2 associée à un groupe de sécurité qui ouvre les ports 80 (HTTP) et 22 (SSH). Cette instance configure et installe également l'agent de monitoring d'infrastructure New Relic.
Allez sur votre console New Relic pour y voir afficher votre nouvelle instance. Cela ne prend qu'environ une minute !
Vous pouvez également voir les métadonnées de l'instance qui sont disponibles pour être filtrées et tracées. Notez que les attributs personnalisés sont également disponibles.
Étapes suivantes
En développant votre environnement, vous pouvez enrichir ce modèle. C'est un bon point de départ. Ou vous pouvez utiliser des sections de mon modèle dans vos propres modèles AWS CloudFormation. Assurez-vous de copier les éléments spécifiques à New Relic à partir des sections « parameters », « metadata », «parameter labels », et « EC2 instance/user ».
Enfin, au cas où vous l'auriez raté auparavant, le modèle AWS CloudFormation/New Relic Infrastructure se trouve sur la page s3.amazonaws.com/kupsand/NewRelic/NR-Infra-CloudFormation.json.
Les opinions exprimées sur ce blog sont celles de l'auteur et ne reflètent pas nécessairement celles de New Relic. Toutes les solutions proposées par l'auteur sont spécifiques à l'environnement et ne font pas partie des solutions commerciales ou du support proposés par New Relic. Veuillez nous rejoindre exclusivement sur l'Explorers Hub (discuss.newrelic.com) pour toute question et assistance concernant cet article de blog. Ce blog peut contenir des liens vers du contenu de sites tiers. En fournissant de tels liens, New Relic n'adopte, ne garantit, n'approuve ou n'approuve pas les informations, vues ou produits disponibles sur ces sites.