Top 9 des meilleurs appareils de chauffage au kérosène sur le marché 2020 Commentaires
23 septembre 2020
Test du Zodiac Baracuda G3 W03000
23 septembre 2020

CloudFormation est un outil pour automatiser la création, la mise à jour et la gestion de l'ensemble de votre pile de ressources. Il fournit un moyen de transformer votre infrastructure en code, sous la forme d'un fichier YAML, dont la version peut être contrôlée avec votre logiciel.

Qu'est-ce que CloudFormation?

Le concept de CloudFormation est assez simple: la création manuelle de ressources peut être pénible, et même si elle peut être automatisée à l'aide de requêtes CLI ou API, si vous devez mettre à jour votre pile à l'avenir, ce sera toujours un processus principalement manuel. Plutôt que de se soucier de cela, CloudFormation offre un moyen de modéliser la structure et la configuration de toutes vos ressources.

Cela se fait avec un modèle YAML ou JSON, qui contient toutes les informations requises pour votre pile de produits, y compris les ressources à créer, les paramètres et la configuration de ces ressources et les sorties qu'elles renvoient. Ce fichier peut être contrôlé par version via Git, et même utilisé pour créer un pipeline de déploiement continu qui poussera automatiquement les modifications

Cependant, vous n'êtes pas obligé de créer le modèle YAML manuellement. Il est beaucoup plus facile d’utiliser le «Designer» Web de CloudFormation, qui affichera visuellement toute votre pile de produits. Par exemple, voici l'un des exemples de modèles, pour un déploiement WordPress à mise à l'échelle automatique, à charge équilibrée en utilisant une instance RDS comme base de données.

instance wordpress cloudformation

Vous pouvez faire glisser de nouveaux composants hors du catalogue fourni et lier les composants ensemble. Les mises à jour du modèle visuel mettront à jour le modèle YAML sous-jacent. Si vous cliquez sur une ressource de ce modèle, elle défilera automatiquement jusqu'à l'entrée dans la liste des ressources YAML. Très utile.

Une fois que vous déployez ce modèle, toutes les ressources qui lui sont associées seront créées dans votre compte. Lorsque la pile doit être mise à jour, les ressources existantes seront mises à jour avec une nouvelle configuration, les anciennes ressources seront supprimées si elles ne sont plus utilisées et de nouvelles ressources seront lancées lors de leur ajout.

CloudFormation gérera également la création de dépendances dans le bon ordre, sans que vous ayez à y penser vous-même. Par exemple, si vous souhaitez créer une instance EC2 avec un groupe de sécurité, CloudFormation s'assurera de créer d'abord le groupe de sécurité, puis de créer l'instance avec ce groupe de sécurité. Tout ce que vous avez à faire est de les relier dans la console.

Le principal inconvénient de CloudFormation est que si vous vous engagez dans Infrastructure-as-code, vous devrez vous engager pleinement – apporter des modifications manuelles à la configuration des ressources en dehors de CloudFormation n'est pas sûr, car les mises à jour de CloudFormation peuvent écraser vos modifications manuelles pour appliquer ce que vous avez dans votre modèle. Par exemple, si vous avez déployé une adresse IP élastique et que vous souhaitez la pointer vers une autre instance, vous devrez le faire à partir de la console CloudFormation et non de la console de gestion EC2. Techniquement, les modifications manuelles persisteront au moins jusqu'à la prochaine mise à jour de CloudFormation, et si la configuration du modèle ne change pas entre-temps, CloudFormation n'appliquera pas le schéma dans le modèle. Ainsi, bien que vous puissiez vous en sortir avec des changements manuels à court terme, cela n'est pas conseillé et est entièrement éphémère.

Utilisation de l'éditeur en ligne

Dirigez-vous vers le Console CloudFormation, cliquez sur "Créer une pile", puis sélectionnez "Avec de nouvelles ressources".

créer une nouvelle pile

Cela ouvrira une boîte de dialogue dans laquelle vous sélectionnerez votre modèle CloudFormation. Vous pouvez importer un modèle existant depuis S3, mais si vous ne faites que commencer, nous vous suggérons d'essayer l'un des exemples de modèles. Nous allons sélectionner le modèle simple "LAMP Stack", qui déploie un seul serveur Web. Cliquez sur «Afficher dans le concepteur» pour ouvrir le modèle.

ouvrir en designer

Ce modèle est assez basique. Juste une instance EC2 et un groupe de sécurité pour cette instance.

modèle d'exemple cloudformation

Si vous souhaitez ajouter quelque chose de nouveau au modèle, le moyen le plus simple est de rechercher la ressource dans la barre latérale et de la faire glisser. Par exemple, si vous souhaitez ajouter une adresse IP Elastic à associer à cette nouvelle instance, regardez dans le "EC2 »Pour trouver« EIP »et faites-la glisser dans:

glisser en IP élastique

Par défaut, il n'est connecté à rien. Vous devrez le joindre à l'instance EC2 pour avoir un effet. Les points de couleur violette sont des propriétés. Vous pouvez faire glisser à partir de ces propriétés pour former des liens vers d'autres ressources. Pour lier l'adresse IP Elastic, faites glisser le coin supérieur «EIPAssociation» vers l'instance. Les ressources compatibles seront surlignées en vert lors du glissement.

lier EIP à l'instance

Si vous cliquez sur une ressource, vous serez redirigé vers l'entrée dans le modèle YAML. Les modifications apportées à ce modèle se propageront au concepteur, mais vous devrez peut-être appuyer sur le bouton d'actualisation dans le coin supérieur droit.

Formatage YAML

Dans l'ensemble, le modèle YAML comprendra quelques sections distinctes:

Métadonnées, principalement utilisé par CloudFormation Designer pour suivre visuellement où les choses se trouvent, mais peut également être utilisé pour les métadonnées générales.

Paramètres, arguments qui sont passés à la console CloudFormation et peuvent être passés dans le modèle au moment de l'exécution. Par exemple, le modèle par défaut comprend quelques paramètres permettant de spécifier le nom, le nom d'utilisateur et le mot de passe de la base de données MySQL, tels que:

DBName:
    Par défaut: MyDatabase
    Description: nom de la base de données MySQL
    Type: Chaîne
    MinLength: '1'
    Longueur max: '64'
    AllowedPattern: '(a-zA-Z) (a-zA-Z0-9) *'
    ContrainteDescription: doit commencer par une lettre et ne contenir que des caractères alphanumériques.

Mappages, ce sont un peu compliqués, mais ils ressemblent fondamentalement à Cas déclarations. Vous pouvez les utiliser pour modifier les valeurs des paramètres en fonction d'une clé. Par exemple, AWS l'utilise pour modifier l'ID AMI en fonction de la région dans laquelle le modèle est déployé. Vous pouvez utiliser le Fn :: FindInMap fonction intrinsèque pour rechercher ces valeurs ailleurs dans le modèle. Vous voudrez peut-être en savoir plus à ce sujet dans la documentation AWS.

Mappages: 
  RegionMap: 
    us-east-1: 
      «HVM64»: "ami-0ff8a91507f77f867"
    us-west-1: 
      «HVM64»: "ami-0bdb828fd58c52235"
    eu-west-1: 
      «HVM64»: "ami-047bb4163c506cd98"
    ap-sud-est-1: 
      «HVM64»: "ami-08569b978cc4dfa10"
    ap-nord-est-1: 
      «HVM64»: "ami-06cd52961ce9f0d85"

Conditions, qui permettent à CloudFormation de déployer des ressources uniquement si les conditions sont remplies. Par exemple, vous pouvez l'utiliser pour déployer des ressources spécifiques dans des environnements de production, de test et de préparation, mais pas dans ceux de développement.

Conditions: 
  CreateProdResources: !Équivaut à ( ! Réf EnvType, prod )

Se transforme, qui permettent traitement personnalisé sur votre modèle avant son déploiement. C'est un peu une fonctionnalité de niche, mais elle est utilisée par SAM pour déployer des fonctions Lambda. Vous devrez le configurer manuellement, puis l'appeler par son nom:

Transformer: (MyMacro, AWS :: sans serveur)

Les sorties, qui vous permettent de lier des ressources entre des piles ou simplement de renvoyer une réponse. Vous pouvez les considérer comme des variables publiques ou privées.

Les sorties:
  BackupLoadBalancerDNSName:
    La description: le DNSName de les sauvegarde charge balancier
    Valeur: ! GetAtt BackupLoadBalancer.DNSName
    État: CreateProdResources
  ID d'instance:
    La description: le Exemple ID
    Valeur: ! Réf EC2Instance

Et enfin, Ressources, qui est simplement un tableau de toutes les ressources du modèle. Cela variera énormément en fonction de ce que vous utilisez, car chaque service aura ses propres propriétés. Par exemple, une instance EC2 avec une AMI personnalisée peut ressembler à ceci:

Ressources:
  MyEC2Instance:
    Type: "AWS :: EC2 :: Instance"
    Propriétés:
      ImageId: "ami-0ff8a91507f77f867"

Vous pouvez consulter Référence complète du schéma d'AWS pour plus d'informations sur le service particulier que vous utilisez, ou référence de ressource et de propriété.

//]]>