GNU/Linux >> Tutoriels Linux >  >> Linux

Comment automatiser vos ressources AWS avec les modèles CloudFormation

AWS CloudFormation est un service qui permet aux administrateurs système de configurer et de gérer une collection complète de ressources AWS - y compris leurs configurations, dépendances et interrelations entre elles - dans une seule déclaration. Ils peuvent également apporter des modifications à l'infrastructure existante sans arrêter ni redéployer les applications exécutées dessus.

AWS Cloudformation vous permet de configurer votre infrastructure en tant que code. Il s'agit essentiellement d'une infrastructure en tant que moteur de code qui fonctionne dans le cloud et aide les utilisateurs à provisionner et à gérer le calcul, le stockage et d'autres ressources. Un modèle CloudFormation est un fichier JSON avec des directives sur la façon de créer ou de mettre à jour des ressources AWS. Nous pouvons utiliser l'AWS CLI, les kits SDK AWS comme boto3 ou le service AWS CloudFormation pour créer des modèles.

CloudFormation offre de nombreux avantages tels que :

  • Facilité d'utilisation :CloudFormation utilise un format de modèle qui vous permet de décrire tous les attributs et relations de votre ressource AWS en un seul endroit.
  • Agilité de mise sur le marché :CloudFormation vous permet de créer et de déployer vos ressources AWS sous forme de code.
  • Haut niveau d'automatisation :CloudFormation transforme le code de haut niveau en un ensemble de modèles simples qui peuvent être utilisés pour créer ou mettre à jour des ressources AWS.

Si vous cherchez à automatiser vos déploiements de charge de travail sur AWS, l'utilisation de CloudFormation est l'un des meilleurs moyens de le faire.

Dans cet article, nous allons vous montrer une introduction en douceur à CloudFormation et utiliser CloudFormation pour automatiser vos ressources AWS. Ce guide utilise les ressources S3 pour démontrer. Après ce didacticiel, vous pourrez créer, mettre à jour et supprimer un certain nombre de ressources AWS à l'aide de CloudFormation. Vous pouvez également apprendre à commencer à créer votre propre modèle CloudFormation.

Prérequis

Pour suivre ce tutoriel, vous avez besoin des prérequis suivants :

  • AWS CLI installé sur votre machine locale en version 1.6.1 ou supérieure et configuré avec une région par défaut. La même version doit également être configurée pour Python 2.6 ou 3+.
  • Une compréhension de base des services AWS et une certaine expérience de la console AWS.

Création de votre première pile

Maintenant que les prérequis sont prêts, commençons par configurer et créer votre première pile.

1. Ouvrez votre navigateur préféré. Accédez à ce dépôt GitHub et téléchargez trois fichiers sur votre disque dur local.

  • createstack.json
  • updatestack1.json
  • updatestack2.json

2. Maintenant, accédez à votre Console AWS ---> Cloud Formation .

3. Vous verrez l'écran suivant. Cliquez sur Créer une pile ---> Avec de nouvelles ressources .

4. Vous verrez l'écran suivant. Cliquez sur Le modèle est prêt ---> Télécharger un fichier modèle ---> Choisir un fichier ----> Choisissez votre createstack.json fichier que vous avez téléchargé précédemment---> Suivant .

Lorsque vous créez une nouvelle pile, vous devez fournir un modèle pour votre pile. Vous pouvez le faire de trois manières :

  • Le modèle est prêt :choisissez cette option si vous avez déjà votre modèle en main. Sinon, passez à l'option suivante.
  • Utilisez un exemple de modèle :utilisez cette option pour vous donner une longueur d'avance sur la création de votre modèle. Le guide de l'utilisateur AWS fournit plusieurs exemples de modèles CloudFormation.
  • Ccréer un modèle dans Designer :AWS CloudFormation Designer est la nouvelle façon de créer votre pile. Il utilise une interface glisser-déposer, similaire à d'autres outils populaires comme Sharepoint, pour vous aider à créer votre modèle.

Cette démo utilise la première option, "Le modèle est prêt", puisque vous avez déjà les modèles en main (les fichiers que vous avez téléchargés sur votre disque).

Vous pouvez ouvrir le createstack.json fichier dans votre éditeur pour l'examiner. Vous verrez les lignes suivantes dans le createstack.json dossier.

  • "Resources" :{ est la section créée par AWS CloudFormation. Il s'agit d'un regroupement de toutes les ressources physiques que vous allez créer.
  • "catpics" :est la ressource logique, son type étant un compartiment S3.
  • "Type" :"AWS::S3::Bucket" est la ressource physique qu'AWS CloudFormation va créer.

5. Sur l'écran suivant, donnez un nom à votre pile (htf ) et cliquez sur Suivant . Chaque pile nécessite un nom unique dans la région AWS afin que vous puissiez les différencier. Vous ne pouvez pas utiliser de caractères spéciaux ici, uniquement des lettres, des chiffres et des traits de soulignement (pas d'espaces). AWS génère automatiquement un identifiant de pile unique pour une identification facile.

6. Sur l'écran suivant, conservez la valeur par défaut et cliquez sur Suivant.

7. Sur l'écran suivant, conservez la valeur par défaut et cliquez sur Créer une pile .

À ce stade, AWS CloudFormation charge le modèle et crée la pile pour vous. CloudFormation parcourt chaque section du modèle et crée une ressource physique correspondante. Dans certains cas, AWS CloudFormation effectuera plusieurs vérifications sur votre modèle pour s'assurer que tout est en place. S'il trouve quelque chose qui ne va pas, vous recevrez un message d'erreur décrivant le problème et comment le résoudre.

Le processus de création prend environ 4-5 minutes pour le créer. Vous pouvez voir ce qui se passe en consultant l'état de la pile sur votre tableau de bord CloudFormation, comme indiqué ci-dessous. Vous pouvez voir les catpics ressources logiques dans la partie gauche, et dans chacune de ces ressources, vous pouvez voir les ressources physiques qu'AWS CloudFormation crée pour elles (CREATE_IN_PROGRESS ).

Vous pouvez accéder à l'onglet des ressources pour voir les ressources physiques créées pour cette pile. Dans ce cas, il s'agit d'un bucket S3 nommé catpics avec ID de ressource physique  de htf-catpics-1roqn54xwm3of, comme indiqué ci-dessous.

8. Maintenant, accédez à votre tableau de bord S3. Sur votre tableau de bord S3, vous pouvez voir les objets en cours de création dans le compartiment. Dans ce cas, le nom de la pile pour le compartiment S3 est htf-catpics-1roqn54xwm3of , comme vous pouvez le voir ci-dessous.

Vous pouvez voir que le nom du bucket est suivi de ce modèle :votre nom de pile (htf )-votre nom de pile logique (catpics )-une chaîne aléatoire (1roqn54xwm3of ). Ce modèle est très important à connaître. Lorsque vous ne spécifiez pas les ID de vos ressources physiques dans le modèle, AWS CloudFormation utilise ce modèle pour créer le nom de vos ressources. La puissance de ceci est que vous pouvez maintenant utiliser le même modèle pour créer plusieurs piles; AWS CloudFormation se chargera automatiquement de les nommer de manière unique pour vous !

Pour un service comme S3, un nom unique est très important; le nom du compartiment doit être globalement unique pour que vous puissiez y stocker des données. Les noms de vos buckets ne peuvent pas être identiques. Vous ne parviendrez pas à pousser les objets dans le bucket si vous essayez de le nommer avec le même nom.

Il est important de comprendre pourquoi cela est important. Car avec CloudFormation, il est recommandé de ne pas nommer explicitement l'ID de la ressource physique dans votre modèle. Au lieu de cela, laissez AWS CloudFormation en créer un automatiquement pour vous. Cela signifie que vous pouvez réutiliser votre modèle pour créer plusieurs piles avec différentes ressources sans vous soucier des conflits de nommage. Vous pouvez utiliser votre modèle une fois, dix fois ou cent, et CloudFormation gérera les changements de nom en conséquence.

Mise à jour de votre pile

Maintenant que vous avez créé votre première pile à l'aide d'AWS CloudFormation, examinons comment mettre à jour la pile. Comment mettre à jour une pile est un concept très important à comprendre, à la fois pour une utilisation en production ou pour votre examen. Lors de l'examen, il vous sera probablement demandé de modifier quelque chose dans votre modèle, ou vous devrez peut-être mettre à jour quelque chose dans votre pile.

Dans cette section, vous allez apporter des modifications aux modèles et utiliser ces modèles mis à jour pour mettre à jour votre pile et évaluer les modifications apportées à vos ressources.

Généralement, lors de la mise à jour des piles dans CloudFormation. Vous prendrez le modèle que vous avez utilisé pour créer une pile et ajouterez de nouvelles ressources, mettrez à jour des ressources existantes ou supprimerez des ressources existantes.

1. Ouvrez updatestack1.json fichier que vous avez téléchargé précédemment dans votre éditeur, vous verrez les blocs de code suivants. Comparons ce modèle au createstack.json modèle que vous avez utilisé précédemment. Vous pouvez voir que nous allons ajouter une ressource logique supplémentaire nommée dogpics . Plus important encore, aucune modification n'a été apportée aux ressources logiques existantes, à savoir les catpics existants. . Les ressources catpics n'ont pas été modifiées ou supprimées. Je vais seulement ajouter une ressource logique supplémentaire, qui est dogpics .

2. Accédez à votre tableau de bord CloudFormation. Sélectionnez votre pile (htf ) et cliquez sur Mettre à jour .

3. Sur l'écran suivant, sélectionnez Remplacer le modèle actuel. ---> Télécharger un fichier modèle ---> Choisissez Fichier ---> Sélectionnez votre updatestack1.json fichier ---> Suivant .

4. Sur l'écran suivant, cliquez sur Suivant ---> Suivant ---> Mettre à jour pile, comme indiqué ci-dessous. Vous pouvez voir que CloudFormation vous montre les modifications qui seront apportées. Dans ce cas, nous avons ajouté un ID logique nommé dogpics. CloudFormation nous montre également l'action qui sera effectuée (Ajouter ) et le type de ressource logique (AWS::S3::Bucket). Le Remplacement la colonne est vide.

Tout comme lorsque vous créez une pile, vous pouvez consulter les événements de mise à jour à partir de la page de la pile. Toutes les mises à jour sont effectuées à partir de CloudFormation. Dans ce cas, il est passé un ID de ressource logique supplémentaire, qui est dogpics .

Une fois le processus de mise à jour terminé, vous pouvez voir ci-dessous que nous avons à la fois les catpics et les dogpics ressources dans notre pile.

Accédez à votre tableau de bord S3 et vous pouvez voir qu'un compartiment dogpics supplémentaire nommé htf-dogpics-4qesklu84ugq a été créé. Vous pouvez voir que la dénomination du compartiment utilisant le même modèle suit la chaîne nom de pile-nom de pile logique-aléatoire.

À ce stade, nous ajoutons uniquement de nouvelles ressources logiques à nos ressources, ce qui est assez simple et peu risqué. Nous allons maintenant vous montrer comment supprimer des ressources de votre pile.

Nous allons supprimer la ressource dogpics de notre pile. C'est plus risqué que d'en ajouter, car la suppression de ressources pourrait casser votre pile. Puisque nous sommes encore en train d'apprendre, pratiquons cela en supprimant notre ressource dogpics pour voir ce qui se passe

5. Accédez à votre tableau de bord CloudFormation. Sélectionnez votre htf pile, cliquez sur Mettre à jour ---> Remplacer le modèle actuel ---> Choisir fichier ---> cette fois nous allons sélectionner le createstack.json fichier à nouveau ---> Suivant ---> Suivant ---> Suivant.

6. Sur l'écran suivant, cliquez sur Mettre à jour la pile. . Sous Aperçu de l'ensemble de modifications , vous pouvez voir l'action la colonne est maintenant :Supprimer . Dans ce cas, CloudFormation supprime les dogpics ressource et les ressources physiques correspondantes (htf-dogpics-4qesklu84ugq ).

Accédez à votre tableau de bord S3, vous pouvez voir que le compartiment dogpics a maintenant disparu de votre tableau de bord S3.

Vous serez le DELETE_COMPLETE événement dans votre événement Stack.

La suppression de ressources logiques est un peu risquée car elle peut supprimer des choses, mais ce risque n'est associé qu'aux ressources logiques que vous avez supprimées du modèle (les ressources dogpics). Jusqu'à présent, nous n'avons apporté aucune modification aux autres ressources logiques existantes telles que les ressources catpics. Ainsi, les ressources physiques catpics ne peuvent être affectées par aucune mise à jour de la pile. Il existe une autre option pour mettre à jour votre pile. En utilisant cette option, nous pourrions modifier la configuration d'une ressource logique existante.

7. Ouvrez le updatestack2.json fichier que vous avez téléchargé précédemment dans votre éditeur, vous verrez le bloc de code suivant.

Le fichier updatestack2.json ressemble beaucoup au modèle createstack.json que vous avez utilisé précédemment, à l'exception de deux différences majeures. Nous ajoutons à nouveau la deuxième ressource logique, dogpics. Mais nous avons également modifié les catpics.

Nous avons ajouté une section supplémentaire de la configuration, appelée Propriétés, où nous pouvons définir des propriétés supplémentaires pour une ressource logique donnée. Dans ce cas, nous allons créer un compartiment S3. Nous définissons explicitement le nom de compartiment de la ressource physique sur catsareawesome -comment forger .

8. Accédez à votre tableau de bord CloudFormation. Sélectionnez votre htf pile, cliquez sur Mettre à jour ---> Remplacer le modèle actuel ---> Choisir fichier ---> cette fois, nous allons sélectionner le  updatestack2.json fichier ---> Suivant ---> Suivant ---> Suivant.

9. Sur l'écran suivant, cliquez sur Mettre à jour la pile. . Remarquez l'aperçu de l'ensemble de modifications panneau, vous pouvez savoir quel sera l'effet de cette mise à jour.

Le premier changement semble familier. Nous allons ajouter une ressource logique supplémentaire pour dogpics , qui sera un compartiment S3. Mais nous voyons aussi un Modifier action. Et modifier est en fait la chose la plus risquée que vous puissiez faire à une pile CloudFormation.

La raison en est que les ressources existantes, qui sont en place et potentiellement utilisées par d'autres environnements, pourraient être modifiées par la mise à jour de la pile. Ainsi, la modification des ressources logiques existantes est potentiellement plus risquée à utiliser.

Il y a 3 possibilités qu'une ressource physique soit affectée lorsque vous mettez à jour une pile de cette façon. La première possibilité est qu'une ressource soit mise à jour sans interruption de service.

La deuxième possibilité est que la ressource est mise à jour et que le service est interrompu par un certain niveau de perturbation. Par exemple, lorsque vous mettez à jour votre pile pour modifier la taille de votre instance EC2. Lorsque vous faites cela, vous devrez redémarrer votre instance EC2 manuellement. Une nouvelle AMI sera lancée et vous pourriez rencontrer des temps d'arrêt. Mais une fois la nouvelle AMI lancée, votre service sera disponible immédiatement.

La dernière possibilité est que la mise à jour supprime l'intégralité de votre ressource physique existante et la remplace par une nouvelle (Remplacement ). Il s'agit de la possibilité la plus risquée lors de la mise à jour de votre pile CloudFormation. Vous devriez vraiment faire attention lorsque vous faites cela. Lorsque ce type de remplacement se produit, vous serez le Remplacement la colonne est Vrai , comme illustré dans la capture d'écran ci-dessous.

Sur votre tableau de bord CloudFormation Stacks, vous pouvez voir qu'il est écrit "La mise à jour demandée nécessite la création d'une nouvelle ressource physique, donc en créer une". CloudFormation supprime donc la ressource existante et en crée une nouvelle.

Accédez à votre tableau de bord S3, vous verrez que le seau catpics a maintenant disparu, et un nouveau, catsareawesome -comment forger , a été créé. Notez que nous fournissons explicitement le nom physique (catsareawesome-howtoforge) pour une ressource dans un modèle CloudFormation, il n'applique aucun caractère aléatoire au nom de la ressource.

Le problème avec cela est que si nous utilisions ce modèle pour créer une autre pile CloudFormation, cela échouerait car il tenterait de créer un autre compartiment portant exactement le même nom. Et vous ne pouvez pas avoir 2 compartiments portant le même nom dans aucun compte AWS. Vous obtiendrez l'erreur suivante lorsque vous tenterez de créer un autre compartiment portant exactement le même nom.

Supprimer vos piles CloudFormation

Maintenant que nous avons modifié le modèle et mis à jour notre pile, nous devons nous assurer que nous supprimons la pile après avoir terminé de travailler dessus. Si nous ne supprimons pas les piles inutilisées, elles resteront indéfiniment dans notre tableau de bord CloudFormation Stack. Nous devrions y aller manuellement et le supprimer.

Dans votre tableau de bord CloudFormation, sélectionnez votre pile, puis sélectionnez Supprimer . Lorsque CloudFormation supprime la pile, il supprime également toutes les ressources de cette pile. Il n'y a aucun moyen de supprimer une seule ressource telle que le compartiment S3 ou l'instance EC2. Cette action est faite à dessein.

Conclusion

Dans ce guide, nous avons examiné comment les piles CloudFormation sont créées et modifiées. Nous avons examiné certaines des façons de modifier les modèles et de mettre à jour les piles existantes. Nous avons ensuite examiné certaines des possibilités associées à la mise à jour des piles. Et enfin, nous avons examiné comment supprimer les piles CloudFormation une fois que vous avez fini de travailler dessus.

Veuillez laisser un commentaire ci-dessous si vous avez des questions ou des suggestions. Merci d'avoir lu !


Linux
  1. Comment naviguer sur votre bureau GNOME Linux avec seulement un clavier

  2. Comment étendre les fonctionnalités de votre bureau Linux avec PlexyDesk

  3. Comment évaluer votre système (CPU, File IO, MySQL) avec Sysbench

  4. Comment intégrer Jenkins avec CloudFormation et Step Functions

  5. Comment sécuriser votre serveur Ubuntu avec le pare-feu CSF

Comment déployer un cluster Kubernetes sur AWS avec Amazon EKS

Comment automatiser des tâches avec des tâches cron sous Linux

Comment surveiller vos serveurs Linux avec Checkmk

Comment :sécuriser votre serveur Ubuntu ou Debian avec IPTables

Comment verrouiller votre serveur CentOS avec IPTables

Comment mapper une adresse IP statique sur votre domaine (avec l'exemple de GoDaddy)