Un guide pour automatiser le déploiement de l’infrastructure AWS

Lorsqu’il s’agit de gérer l’infrastructure dans le cloud, AWS propose plusieurs outils puissants qui aident à automatiser la création et la gestion des ressources.

Une des façons les plus efficaces de gérer les déploiements est à travers AWS CloudFormation. Cela vous permet de définir votre infrastructure de manière déclarative, facilitant ainsi l’automatisation de la provision des services AWS, y compris Elastic Beanstalk, les applications sans serveur, les instances EC2, les groupes de sécurité, les équilibreurs de charge, et plus encore.

Dans ce guide, nous explorerons comment utiliser AWS CloudFormation pour déployer l’infrastructure de manière programmable. Nous couvrirons également comment déployer manuellement des ressources via la Console de gestion AWS et comment intégrer des services tels que Elastic Beanstalk, les fonctions sans serveur, EC2, IAM, et d’autres ressources AWS dans votre flux de travail automatisé.

Utilisation d’AWS CloudFormation pour l’Infrastructure en tant que Code

AWS CloudFormation vous permet de définir votre infrastructure à l’aide de code. CloudFormation propose un cadre unifié pour automatiser et versionner votre infrastructure en mettant en place Elastic Beanstalk, des instances EC2, des VPC, des rôles IAM, des fonctions Lambda, ou des applications sans serveur.

Les modèles CloudFormation sont écrits au format YAML ou JSON, et ils définissent les ressources que vous devez provisionner. Avec CloudFormation, vous pouvez automatiser tout, des applications simples aux environnements complexes multi-services.

Principales fonctionnalités de CloudFormation

  • Configuration déclarative.  Décrivez l’état souhaité de votre infrastructure, et CloudFormation veille à ce que l’état actuel corresponde à celui-ci.
  • Gestion des ressources. Provisionne et gère automatiquement les ressources AWS telles que les instances EC2, les bases de données RDS, les VPC, les fonctions Lambda, les rôles IAM, et plus encore.
  • Mises à jour déclaratives de la pile. Si vous devez modifier votre infrastructure, il vous suffit de mettre à jour le modèle CloudFormation, et il ajustera vos ressources à le nouvel état souhaité.

Étapes pour utiliser CloudFormation pour divers déploiements AWS

Déploiement Elastic Beanstalk avec CloudFormation

1. Rédiger un modèle CloudFormation

Créez un modèle CloudFormation YAML ou JSON pour définir votre application et environnement Elastic Beanstalk. Ce modèle peut inclure des ressources telles que des instances EC2, des groupes de sécurité, des politiques de mise à l’échelle, et même l’application Elastic Beanstalk elle-même.

Exemple de modèle CloudFormation (Elastic Beanstalk) :

YAML

 

2. Déployer la pile CloudFormation

Utilisez l’interface en ligne de commande AWS ou la console de gestion AWS pour déployer la pile CloudFormation. Une fois déployée, CloudFormation créera automatiquement toutes les ressources définies dans le modèle.

Déploiement via l’interface en ligne de commande AWS :

YAML

 

Déploiement sans serveur avec AWS Lambda, API Gateway et DynamoDB

CloudFormation est également excellent pour déployer des applications sans serveur. Avec des services comme AWS Lambda, API Gateway, DynamoDB et S3, vous pouvez facilement gérer des charges de travail sans serveur.

1. Créer un modèle CloudFormation sans serveur

Ce modèle inclura une fonction Lambda, une API Gateway pour accéder à la fonction et une table DynamoDB.

Exemple de modèle CloudFormation (sans serveur) :

YAML

 

2. Déployer la pile sans serveur

Déployez votre application sans serveur en utilisant l’AWS CLI ou la console de gestion AWS.

YAML

 

Déploiement VPC et EC2

CloudFormation peut automatiser la création d’un Cloud Privé Virtuel (VPC), de sous-réseaux, de groupes de sécurité et d’instances EC2 pour des charges de travail plus traditionnelles.

1. Modèle CloudFormation pour VPC et EC2

Ce modèle définit une instance EC2 simple au sein d’un VPC, avec un groupe de sécurité permettant le trafic HTTP.

Exemple de modèle CloudFormation (VPC et EC2) :

YAML

 

2. Déployer la pile

YAML

 

Fonctionnalités avancées de CloudFormation

AWS CloudFormation offre plus que de simples provisions de ressources. Voici quelques-unes des fonctionnalités avancées qui font de CloudFormation un outil puissant pour l’automatisation de l’infrastructure :

  • Ensembles de Piles. Créez et gérez des piles à travers plusieurs comptes et régions AWS, permettant un déploiement cohérent de l’infrastructure dans votre organisation.
  • Ensembles de modifications. Avant d’appliquer des modifications à votre pile CloudFormation, prévisualisez les modifications avec un ensemble de modifications pour garantir le résultat souhaité.
  • Sorties. Valeurs de sortie de CloudFormation que vous pouvez utiliser pour d’autres piles ou applications. Par exemple, sortez l’URL d’une passerelle API ou l’adresse IP d’une instance EC2.
  • Paramètres. Passez des paramètres pour personnaliser votre pile sans modifier le modèle lui-même, ce qui le rend réutilisable dans différents environnements.
  • Mappings. Créez des paires clé-valeur pour mapper des valeurs de configuration, comme des valeurs spécifiques à la région AWS, des types d’instance ou d’autres paramètres spécifiques à l’environnement.

Utiliser CloudFormation avec des services AWS au-delà d’Elastic Beanstalk

CloudFormation n’est pas limité aux déploiements Elastic Beanstalk — c’est un outil flexible qui peut être utilisé avec une variété de services AWS, y compris :

  • AWS Lambda. Automatisez le déploiement de fonctions sans serveur avec des déclencheurs comme API Gateway, S3 ou les événements DynamoDB.
  • Amazon S3. Utilisez CloudFormation pour créer des seaux S3 et gérer leur configuration.
  • AWS IAM. Automatisez la création de rôles et de politiques IAM pour contrôler l’accès à vos ressources.
  • Amazon RDS. Définissez des bases de données RDS (MySQL, PostgreSQL, etc.) avec toutes les configurations associées telles que les paramètres VPC, les sous-réseaux et les groupes de sécurité.
  • Amazon SQS, SNS. Gérez les files d’attente et les sujets pour l’architecture de votre application en utilisant CloudFormation.
  • Amazon ECS et EKS. Automatisez la création et le déploiement d’applications conteneurisées avec des services comme ECS et EKS.

Déploiement manuel de l’infrastructure depuis la console de gestion AWS

Bien que CloudFormation automatise le processus, une intervention manuelle est parfois nécessaire. La console de gestion AWS vous permet de déployer des ressources manuellement.

1. Application Elastic Beanstalk

  • Accédez à la console Elastic Beanstalk.
  • Cliquez sur Créer une application, suivez les étapes pour définir le nom de l’application et la plateforme (par exemple, Docker, Node.js), puis configurez manuellement l’environnement, le dimensionnement et les options de sécurité.

2. Applications sans serveur (Lambda + API Gateway)

  • Allez à la console Lambda pour créer et déployer des fonctions.
  • Utilisez la console API Gateway pour créer des API pour vos fonctions Lambda.

3. Instances EC2

  • Lancez manuellement des instances EC2 depuis la console EC2 et configurez-les avec le type d’instance choisi, les groupes de sécurité et les paires de clés.

Conclusion

AWS CloudFormation offre une méthode cohérente et répétable pour gérer l’infrastructure des applications Elastic Beanstalk, des architectures sans serveur et des applications basées sur EC2. Avec ses fonctionnalités avancées telles que les ensembles de piles, les ensembles de modifications et les paramètres, CloudFormation peut évoluer pour répondre aux besoins d’environnements complexes.

Pour toute personne gérant des environnements AWS volumineux ou dynamiques, CloudFormation est un outil essentiel pour garantir la cohérence, la sécurité et l’automatisation de toutes vos déploiements AWS.

Source:
https://dzone.com/articles/automate-aws-infrastructure-deployment