Déployer AWS CLI et CloudFormation pour l’infrastructure

Dans le sombre passé des serveurs physiques, l’infrastructure était provisionnée à l’aide de tournevis et de câbles dans des sous-sols humides. Ces temps sombres ont commencé à s’éclairer lorsque les solutions de cloud public ont commencé à prendre le relais de l’infrastructure sur site en tant que moyen préféré de provisionner et d’exécuter des serveurs. Dans cet article de blog, découvrez comment déployer des solutions cloud avec AWS CLI et CloudFormation.

Il s’agit d’un article invité de Karl Eriksson, co-fondateur de Mocki – un outil qui vous permet de créer des API fictives en quelques minutes.

Si vous gérez un environnement pour votre application, vous pouvez facilement gérer les choses via une interface utilisateur graphique (GUI) telle que la Console AWS. Mais lorsque vous avez plusieurs environnements tels que le développement, la mise en scène et la production, les choses deviennent plus difficiles. L’erreur humaine et le temps entrent en jeu. AWS CLI et CloudFormation peuvent aider.

Vous devez gérer votre infrastructure sous forme de code. Dans le monde AWS, la manière de le faire est avec les stacks CloudFormation.

Lors du déploiement d’une stack CloudFormation pour la première fois, AWS créera tout à partir de zéro. Si vous déployez la stack en tant que mise à jour, elle détectera toutes les modifications apportées à l’infrastructure et déploiera uniquement ces changements.

Les stacks CloudFormation garantissent que les mêmes modifications sont appliquées dans tous vos environnements différents.

CloudFormation : AWS Infrastructure as Code

AWS Infrastructure as Code Source: https://aws.amazon.com/cloudformation/

AWS CloudFormation est un outil permettant d’écrire et de provisionner l’infrastructure en tant que code dans un environnement AWS. La plupart des services d’AWS sont pris en charge par CloudFormation. La plupart de ce que vous pouvez créer à l’aide de la console AWS, tels que les serveurs virtuels, les bases de données, les équilibreurs de charge et le stockage de fichiers, peut être ajouté à une pile CloudFormation. Une fois ajoutées, toutes ces ressources peuvent ensuite être déployées à partir d’une ligne de commande ou d’un autre processus automatisé.

Pour les mises à jour, CloudFormation s’assure que les opérations sont effectuées de la manière la plus efficace possible et annule automatiquement les modifications en cas de problème.

Apprenons maintenant comment créer une infrastructure à l’aide de l’interface de ligne de commande AWS et de CloudFormation.

Prérequis

Pour suivre le tutoriel CloudFormation dans le reste de cet article, assurez-vous de disposer des éléments suivants :

  • Un compte AWS
  • AWS CLI – Apprenez comment la télécharger et la configurer ici. Vous pouvez confirmer que la CLI a été configurée avec succès en exécutant la commande aws s3 ls. Si la commande réussit, tout est en ordre.

Si vous avez plusieurs profils AWS configurés via l’AWS CLI, veuillez en utiliser un adapté au développement ou aux tests pour ce tutoriel.

Création de votre première pile CloudFormation

Assez d’informations préliminaires, passons aux choses sérieuses et utilisons l’AWS CLI et CloudFormation pour créer une pile!

Dans cet exemple, vous allez créer une pile contenant l’infrastructure nécessaire pour déployer un site web statique hébergé sur le service d’hébergement de fichiers statiques AWS S3.

Pour commencer, créez un nouveau fichier appelé template.yaml et remplissez-le avec le contenu ci-dessous:

AWSTemplateFormatVersion: 2010-09-09
Description: A simple CloudFormation template
Resources:
    Bucket:
        Type: AWS::S3::Bucket
        Properties:
            BucketName: your-bucket-name # utilisez votre propre nom unique
  • AWSTemplateFormatVersion – détermine la version du format du modèle pour que AWS puisse l’interpréter correctement lors de son déploiement.
  • Description – contient une description du modèle qui s’affichera dans la console AWS une fois que vous l’aurez déployé.
  • Resources – contient toute l’infrastructure que vous ajoutez au modèle. Dans ce cas, les ressources créeront un simple compartiment S3 qui hébergera un site statique.

La propriété BucketName doit être unique, donc essayez de trouver quelque chose d’autre que votre-nom-de-seau.

Déploiement de la pile avec AWS CLI et CloudFormation

Maintenant que vous avez créé un modèle simple pour le déploiement, déployez-le sur AWS en utilisant AWS CLI et CloudFormation via la commande ci-dessous:

aws cloudformation deploy --template-file template.yaml --stack-name static-website

Après avoir exécuté la commande, accédez à la console AWS, puis allez dans Services → CloudFormation. Vous devriez alors voir le déploiement en cours. Après quelques minutes, vous devriez le voir passer à l’état CREATE_COMPLETE. Si c’est le cas, c’est terminé !

S’il y a eu des erreurs, vous devriez pouvoir les voir dans la section Événements en consultant les détails de votre pile.

En accédant à ServicesS3, vous devriez maintenant voir un tout nouveau bucket S3 créé.

Construction du site Web simple

Une fois que vous avez un bucket S3 en place pour stocker un site Web, créez un fichier index.html qui servira de site.

Si vous n’avez rien en tête, vous pouvez utiliser le contenu ci-dessous dans votre fichier index.html:

<html>
  <body>
    <h1>Static Site Deployed Using CloudFormation</h1>
    <p>Hello! This site was deployed using CloudFormation. Go cloud!</p>
  </body>
</html>

Enregistrez le fichier index.html et mettez-le en ligne sur votre bucket S3 via la console AWS.

Assurez-vous d’accorder un accès en lecture publique au fichier index car il sera accessible à tous les visiteurs du site.

Mise à jour du modèle

À l’heure actuelle, le bucket S3 qui vient d’être créé n’est pas configuré pour héberger un site web. Changeons cela. Vous pouvez actuellement télécharger le fichier d’index via la console AWS, mais il n’est pas accessible via Internet public. À l’aide de l’interface de ligne de commande AWS (AWS CLI) et de CloudFormation, modifiez la configuration pour activer l’hébergement de site web statique.

Modifiez le fichier template.yaml comme suit pour l’activer. Nous introduisons ci-dessous quelques nouvelles propriétés dans notre modèle.

AWSTemplateFormatVersion: 2010-09-09
Description: A simple CloudFormation template
Resources:
    Bucket:
        Type: AWS::S3::Bucket
        Properties:
            BucketName: your-bucket-name # utilisez votre propre nom unique
            AccessControl: PublicRead
            WebsiteConfiguration:
                IndexDocument: index.html
Outputs:
    WebsiteURL:
        Value: !GetAtt [Bucket, WebsiteURL]
        Description: URL for website hosted on S3
  • AccessControl – définit les droits d’accès au bucket S3 en lecture publique afin que tout utilisateur visitant le site puisse voir le fichier index.html
  • WebsiteConfiguration – configure le bucket S3 pour qu’il agisse en tant que site web qui servira le fichier index.html téléchargé lorsque les utilisateurs accèdent à l’URL du bucket
  • Outputs – peut être différent pour les propriétés des ressources faisant partie de la pile. Dans l’exemple ci-dessus, WebsiteURL est la sortie de la pile. Lorsque vous déployez à nouveau le modèle, vous devriez voir l’URL du site web en tant que sortie dans la console AWS CloudFormation.

Déployez maintenant les modifications sur la pile existante en utilisant la même commande que lors de l’étape précédente :

aws cloudformation deploy --template-file template.yaml --stack-name static-website

Pour confirmer le résultat, accédez à la console CloudFormation. Après quelques minutes, vous devriez remarquer que la pile est dans l’état UPDATE_COMPLETE. Lorsque la pile atteint cet état, allez à l’onglet Sorties où vous devriez voir WebsiteUrl ajouté en tant que sortie dans le modèle.

Cliquez sur l’URL fournie et vous devriez voir votre site dans votre navigateur.

Félicitations ! Avec AWS CLI et CloudFormation, vous avez maintenant déployé votre première pile en utilisant l’infrastructure comme code ! À ce stade, continuez d’ajouter à votre fichier de modèle pour déployer de nouveaux changements ou créez-en un nouveau selon vos besoins.

Conclusion

Dans ce tutoriel, vous avez appris le concept d’infrastructure comme code et les avantages qu’il présente par rapport à la provision manuelle de l’infrastructure. En utilisant l’approche d’infrastructure comme code avec AWS CLI et CloudFormation, vous avez ensuite déployé une pile pour créer un site web statique.

En utilisant les principes appris dans ce tutoriel, vous pouvez déployer un système prêt pour la production entièrement en utilisant CloudFormation.

Lecture complémentaire

Si vous souhaitez en savoir plus sur l’infrastructure comme code en tant que phénomène, consultez Infrastructure as Code in the Real World par HashiCorp.

Si vous souhaitez en savoir plus sur l’intégration de CloudFormation dans votre flux de développement et sur la gestion de toute votre infrastructure à l’aide de CloudFormation, assurez-vous de consulter :

Bonne chance dans votre parcours de déploiement de toute votre infrastructure en utilisant l’infrastructure en tant que code dans AWS!

Source:
https://adamtheautomator.com/aws-cli-and-cloudformation/