AWS CloudFormation

Le 18 novembre dernier, AWS a annoncé la sortie de son AWS CloudFormation Registry et CLI, une extension d’AWS CloudFormation prenant en charge la création de ressources tierces via la console AWS CloudFormation. C’est également la première fois que le service AWS est associé à des partenaires de lancement tels que Spotinst et Fortinet.


Maintenant, grâce à la prise en charge de ces ressources tierces, AWS améliore toute la pratique de la création d’infrastructure dans le cloud, car le provisionnement s’étend désormais au-delà des ressources AWS pour inclure également des outils SaaS en provenance d’autres fournisseurs, renforçant la façon dont nous construisons dans le cloud.

Par conséquent, le but de cet article est de montrer l’importance d’IaC ‘Infrastructure as Code’ dans le domaine du cloud computing et de souligner l’importance des développements d’AWS pour son service AWS CloudFormation.


Les principes de l’IaC

IaC, abréviation de Infrastructure as Code, est la pratique selon laquelle les ressources sont décrites  par des scripts par opposition à l’utilisation de consoles de gestion qui permettent de créer manuellement des environnements de ressources.
Par conséquent, dans le cas d’AWS CloudFormation, vous n’avez pas besoin d’utiliser la console AWS ou de SDK pour créer des ressources AWS.
De plus, avec AWS CloudFormation Registry, vous avez plus besoin d’utiliser la console d’outils tiers pour utiliser leurs ressources.

Ces scripts lisibles permettent le déploiement automatique des ressources ainsi que les services requis qui vont avec. En effet, les outils IaC vont créer toutes les ressources nécessaire comme par exemple : les réseaux, les machines virtuelles, les équilibreurs de charge et les différents accès pour vos applications.


De plus, chaque fois qu’un script IaC est appliqué, il en résulte toujours le même environnement que celui décrit dans le script.

Par conséquent, les avantages deviennent évidents. L’IaC est une pratique courante pour les DevOps car l’objectif du DevOps est de réaliser l’automatisation du processus de production. En effet, avec l’IaC, nous sommes en mesure d’automatiser la construction de l’infrastructure, ce qui est encore plus crucial dans les environnements cloud.


Même si les environnements cloud soustraient une grande partie de l’architecture sous-jacente aux développeurs, ils nécessitent des configurations fastidieuses des ressources dépendante des contraintes du cloud provider choisi.
Par conséquent, les services IaC tels qu’AWS Cloudformation fournissent une certaine forme de répit face au besoin de configurations répétitives.

D’autres avantages incluent l’indépendance entre les états et les modèles.
Étant donné que l’IaC nous permet de modéliser notre infrastructure dans un format basé sur un script, nous pouvons définir l’état souhaité de notre infrastructure cloud.
Par conséquent, si l’infrastructure s’écarte trop de l’état souhaité, nous pouvons automatiser sa récupération à l’aide du modèle initialement utilisé.

De même, nous pouvons utiliser le même modèle pour répliquer l’état souhaité dans plusieurs environnements (Production/Pré-Production/Recette par exemple). Ceci est extrêmement avantageux à des fins de test, car cela permet  d’avoir des scénarios réels. Ainsi, au lieu d’avoir à configurer ardûment chaque composant pour refléter l’infrastructure à tester, nous pouvons simplement automatiser le provisionnement d’une infrastructure identique, suivi de tests automatisés facilités par les différents outils de CI / CD mis à disposition par le Cloud Provider.

Par conséquent, les outils IaC peuvent être considérés comme des livres  de recettes pour notre infrastructure cloud.
En fait, l’utilisation de cette analogie de livre de recettes pour les services IaC est si courante que Jeff Barr – Chief Evangelist d’AWS a habilement intitulé son blog d’introduction d’AWS CloudFormation https://aws.amazon.com/blogs/aws/cloudformation-create-your-aws-stack-from-a-recipe/, en 2011.

Cependant, les gens ne réalisent pas que les outils IaC ne sont pas comme vos livres de recettes ordinaires, mais plutôt comme des cuisines entièrement automatisées qui analysent ces recettes et cuisinent des infrastructures cloud complètes pour vous.

Nous pouvons convenir que l’IaC, en général, est impératif pour une expérience DevOps complète. La question est maintenant de savoir quels services le plus grand fournisseur de cloud, AWS, fournit en termes d’IaC ?
Avant, la réponse était CloudFormation et son générateur CDK (AWS Cloud Development Kit).


CloudFormation et ses avantages avec CloudFormation Registry

AWS CloudFormation fournit un langage commun pour vous permettre de décrire et de provisionner toutes les ressources d’infrastructure dans votre environnement cloud.
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/registry.html

CloudFormation vous permet de définir les ressources AWS souhaitées ainsi que leurs configurations et connexions dans des documents de plan directeurs appelés modèles CloudFormation. Ces modèles sont ensuite exécutés dans la console AWS CloudFormation pour provisionner l’infrastructure définie.
Ce faisant, le service garantit que les composants de l’infrastructure cloud sont déployés de la bonne manière en fonction des dépendances décrites dans le modèle CloudFormation.

Par exemple, si vous souhaitez qu’une instance EC2 s’exécute dans un VPC, CloudFormation garantit que le VPC est d’abord provisionné, puis l’instance EC2.
Cela signifie également que nous n’avons plus besoin d’utiliser la gestion AWS pour configurer et ajouter manuellement l’instance EC2 dans le VPC.

Cependant, un domaine que AWS CloudFormation n’avait pas était le provisionnement des ressources tierces. Oui, les ressources AWS constituent le cœur de l’infrastructure de l’application, mais ces composants communique très probablement avec des outils SaaS tiers quelque part dans le flux de travail de vos applications.
Pour revenir à l’exemple d’une instance EC2 dans un VPC, nous pouvons avoir besoin de cette instance EC2 pour ensuite interagir avec l’API Stripe.

Par conséquent, même si nous avons réussi à automatiser avec vos DevOps du côté AWS, nous ne disposions toujours pas d’outils lorsqu’il s’agissait de connecter nos infrastructures tiers à l’infrastructure AWS principale.
Cela nous ramènerait souvent à la case départ car les avantages de l’IaC discutés ci-dessus étaient limités aux seules ressources AWS.

C’est là qu’intervient AWS Cloud Registry !

Désormais, avec la nouvelle version, la capacités d’AWS CloudFormation a ce connecter sur les ressources externes est résolu. Le registre AWS CloudFormation permet le provisionnement de ces outils tiers externes avec les ressources AWS.

Avec la sortie de ce nouveau service, il y a un total de sept outils SaaS offrant leurs ressources sur le registre.
Par exemple, avec la prise en charge d’Atlassian Opsgenie par le registre AWS CloudFormation, vous pouvez désormais provisionner des ressources Opsgenie telles que des utilisateurs, des équipes et des intégrations avec vos ressources AWS.
Vous pouvez donc automatiser la configuration des services de gestion des incidents Opsgenie dans votre infrastructure AWS.

Cela signifie que nous pouvons désormais bénéficier davantage des pratiques DevOps, car AWS a étendu ses services IaC sur des piles de technologies externes et ne se limite pas uniquement à AWS.
De plus, AWS CloudFormation Registry est open source, de sorte que la communauté peut constamment créer plus de ressources personnalisées qui peuvent être provisionnées automatiquement via l’AWS CloudFormation CLI. Cela améliore l’adoption du cloud, en particulier en utilisant le IaC pour déployer vos architectures AWS.


Un pas de plus avec AWS CloudFormation CLI

AWS CloudFormation fournit des ressources tierces à inclure dans les livres de recettes de vos infrastructures cloud souhaitées.


Si nous devons suivre cette analogie de recette, le registre CloudFormation peut être considéré comme votre garde-manger de ressources, où votre garde-manger stocke les ressources fournies par les partenaires SaaS tiers.

La question est alors de savoir si vous souhaitez étendre ce garde-manger?

C’est là que le composant CLI entre dans la nouvelle version d’AWS CloudFormation. L’AWS CloudFormation CLI nous fournit un ensemble d’ustensiles qui nous permet de créer nos propres ressources personnalisées que nous pourrons ensuite inclure dans les modèles AWS CloudFormation, ce qui nous donne la liberté d’étendre nos garde-manger à l’infini.

AWS fournit la CFN ( CloudFormation Command Line Interface ) qui nous permet d’initialiser nos projets de ressources personnalisés, et génère automatiquement la structure de code de base pour nous et ensuite nous permet de tester nos ressources construites tout en l’enregistrant dans nos registres AWS CloudFormation privé .

AWS nous fournit un ensemble complet de ressources pour commencer à créer ces nouvelles ressources. De plus, la poussée de l’open source avec AWS CloudFormation open source signifie que nous pouvons nous attendre à ce que beaucoup de bibliothèque de ressources soit disponible et facile à inclus dans nos modèles AWS CloudFormation.

Améliorant ainsi toute l’expérience d’utilisation du service IaC, augmentant la vitesse avec laquelle nous construisons dans le cloud.


Récapitulatif de ce que AWS CloudFormation signifie pour le DevOps

Avec le registre AWS CloudFormation et l’interface CLI, nous voyons les avantages d’avoir des ressources tierces non AWS dans nos processus d’infrastructure cloud.

Nous pouvons être assurés que l’utilisation d’AWS CloudFormation pour des applications et la gestion des infrastructures cloud couvre désormais l’intégralité de votre besoins et pas seulement des ressources AWS spécifiques.

La flexibilité de l’AWS CloudFormation CLI et la fiabilité de l’expansion du registre AWS CloudFormation ne peuvent que signifier qu’avec le temps, comme de plus en plus de ressources seront disponibles, nous pouvons nous attendre à ce que le développement dans le cloud deviennent beaucoup plus facile. Nous ne devons plus réinventer la roue, il nous suffit maintenant de nous soucier de la destination.

Bonne lecture ! Contactez-nous si vous avez des besoins en Développement ou en Service Managés Cloud.