AWS – Génération des scripts CloudFormation

Dans un environnement Cloud, l’approche « Infra as a Code » devient vite indispensable pour gérer ses déploiements de manière automatique, répétitive et rapide.

AWS fournit l’outil CloudFormation, et il existe de nombreux autres outils tel que Terraform, Ansible parmi les plus connus.

Ils permettent, à partir d’un script, de générer sa stack et les ressources associées en une commande, et de les supprimer aussi facilement si nous n’en avons plus l’usage. Le déploiement est répétitif, sûr et identique, et les scripts peuvent facilement être versionnés pour conserver l’historique des évolutions de sa production.

Mais la création d’un script CloudFormation n’est pas simple à écrire, même si de nombreux templates existent.

Voici quelques outils permettant de générer les scripts à partir de ressources existantes et qui facilitent leur mise au point initiale.

 

AWS Console Recorder

AWS Console Recorder est une extension pour Firefox écrite en javascript, à downloader et à activer au niveau de votre browser (installation en 2 minutes).

Il vous permettra d’enregistrer les actions de la console AWS, et de générer :

  • soit pour les SDK sous Javascript, Python
  • soit les scripts CloudFormation, Terraform entre autre
  • soit les commandes aws cli correspondantes

Après connexion à la console AWS, vous cliquez sur l’icône de l’extension pour commencer à enregistrer lorsque vous construisez votre workload. A la fin de l’enregistrement, l’outil produit des scripts avec les commandes aws cli, ou sous format CloudFormation, Terraform, et d’autres.

Exemple d’enregistrement suite à la création d’une instance ec2 à partir d’une AMI, avec le script CloudFormation généré

et à base de code Javascript

Le principe est celui d’un Key Logger, il y a donc un « nettoyage » des scripts à effectuer, et il est préférable de faire un copier/coller des chaines de caractères plutôt qu’une saisie caractère par caractère.

Le code source est disponible sous github, et il est indiqué qu’aucune information n’est transmise sur internet, mais les règles de prudence s’appliquent, et l’utilisation doit être conforme à vos normes de sécurité.

La plupart des ressources AWS sont prises en charge, la liste exhaustive se trouve ici, ainsi que la roadmap pour les fonctionnalités manquantes.

Le projet est porté par Ian McKay, le travail fourni est impressionnant et l’intérêt du produit ne fait pas de doute.
Download de l’extension Firefox ici,  n’hésitez pas à le tester !!

 

AWS Cloud Former

CloudFormer est un outil de création de modèles qui génère un modèle AWS CloudFormation à partir des ressources AWS existantes de votre compte. Il vous suffit de sélectionner les ressources AWS prises en charge qui sont exécutées dans votre compte, puis CloudFormer crée un template CloudFormation, que vous pouvez enregistrer dans un bucket S3.

CloudFormer doit d’abord être installé à partir d’une stack CloudFormation.

Pour cela, dans la page d’accueil de CloudFormation, lancer la création d’une Stack, et sélectionner la sample template nommé CloudFormer :

Cliquez Next

Vous devez renseigner le nom de la Stack, votre user et password que vous utiliserez ensuite pour vous connecter à l’application CloudFormer.

Cliquez Next, puis suivre les étapes de création de la Stack.

Une fois la Stack créée, la sélectionner dans la liste des Stack, et cliquez sur l’onglet Output, la variable CustomVPCWebsiteURL doit apparaitre avec le lien vers le site web de l’outil CloudFormer :

Cliquez sur l’URL indiquée, et vous arrivez sur l’accès Web de CloudFormer

Cliquez Create Template pour lancer la procédure de génération un template CloudFormation.

Il vous sera demandé les informations descriptives du template à créer, puis vous passerez en revue les différents types de ressources avec liste à cocher des ressources que vous voulez sélectionner.

Exemple pour les VPC.

Une fois les objets de votre account sélectionnés, un template est généré que vous pourrez alors enregistrer dans un bucket S3.

En conclusion, l’utilisation de CloudFormer est plus lourde à mettre en place que des « terraform import », mais il a l’avantage de balayer l’ensemble des ressources, avec une sélection graphique des ressources choisies ( au lieu d’un id à renseigner).