Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Terraformer la planète AWS - Devoxx FR 2018, par Nicolas Diez, Maxence Maireaux et Aurélien Maury

WeScale
April 26, 2018

Terraformer la planète AWS - Devoxx FR 2018, par Nicolas Diez, Maxence Maireaux et Aurélien Maury

Quand on parle de Cloud, Amazon Web Services est incontournable. Grâce à ses API vous pouvez créer des architectures réseau, serveurs et services complexes en quelques minutes, pour un usage basique comme pour des sites à fort traffic. Toute la puissance de l’infrastructure Amazon au bout d’un script… Encore faut-il l’utiliser au mieux et ne pas se perdre en chemin !
Dans cet atelier, nous verrons ensemble les concepts de base d’AWS et un outil de déploiement d’infrastructure qui monte ces derniers temps : Terraform. Avec Terraform, vous pourrez décrire votre stack infrastructure, la variabiliser, déployer, corriger, et effacer avec quelques commandes simples. Je vous transmettrai tous les concepts de base qui vous permettront d'être autonome par la suite.
Venez découvrir l’approche Infrastructure-As-Code par la pratique en construisant votre premier serveur web dans les bonnes pratiques (et dans le cadre de l’offre gratuite d’AWS).
Pré-requis : Disposer d’un compte AWS et d’un couple access key - secret key pour accéder aux API d’AWS.

WeScale

April 26, 2018
Tweet

More Decks by WeScale

Other Decks in Technology

Transcript

  1. #DevoxxFR 5 • Pré-requis • AWS : Culture générale •

    Terraform : Crash course • Hands-on ! Spoiler De quoi parle-t-on ?
  2. • OS • Terraform 0.11.7 • IDE (PyCharm Community +

    plugin Terraform) • Compte AWS • Access key + secret key Pré-requis Terraformer la planète AWS
  3. • Cloud provider • Leader mondial • IaaS • PaaS

    • SaaS • FaaS (Serverless) AWS C’est quoi ? Terraformer la planète AWS
  4. • 12 mois de free tier (https://aws.amazon.com/fr/free) • Ressources entrant

    dans le cadre du free tier • Frais faibles en dehors du free tier AWS Facturation dans le cadre du Hands-on Terraformer la planète AWS
  5. • VPC ◦ Internet Gateway ◦ Nat Gateway • EC2

    ◦ Instance ◦ Application Load Balancer ◦ Autoscaling • CloudFront AWS Utilisation dans le cadre du Hands-on Terraformer la planète AWS
  6. • Régions ◦ Une région est une zone de déploiement

    logique, conçue pour être complètement isolées les unes des autres. • Zone de disponibilité ◦ Chaque région est composée de 2 à 4 zones de disponibilités. Les zones de disponibilité sont des abstractions de datacenters, éloignés physiquement et reliées par un réseau à faible latence. AWS Notion Globale Terraformer la planète AWS
  7. Un Virtual Private Cloud (VPC) est un réseau virtuel dédié

    à votre compte AWS. Il est logiquement isolé des autres réseaux virtuels dans le cloud AWS. Vous pouvez lancer vos ressources AWS, comme des instances Amazon EC2, dans votre VPC. Vous pouvez configurer votre VPC en modifiant sa plage d'adresses IP, en créant des sous-réseaux et en configurant des tables de routage, des passerelles de réseau et des paramètres de sécurité. • VPC : ◦ isolation logique ◦ réseau virtuel ◦ gestion totale de la configuration réseau AWS Notions réseaux - VPC Terraformer la planète AWS
  8. Un sous-réseau est une plage d'adresses IP dans votre VPC.

    Vous pouvez lancer des ressources AWS dans un sous-réseau spécifié. Utilisez un sous-réseau public pour les ressources qui doivent être connectées à Internet et un sous-réseau privé pour les ressources qui ne doivent pas l'être connectées. • 2 types de subnet : ◦ public : applications disponibles sur internet ◦ privé : accès privé uniquement, nécessite un bastion AWS Notions réseaux - Subnet Terraformer la planète AWS
  9. • Subnet public ◦ applications disponibles sur internet ◦ IP

    publique ◦ Internet Gateway pour l’accès interne • Subnet privé : ◦ IP privé uniquement ◦ Accès via bastion / VPN ◦ Accès internet par Nat Gateway AWS Notions réseaux Terraformer la planète AWS
  10. • Décrire son infrastructure dans des fichiers .tf • $

    terraform init • $ terraform plan • $ terraform apply • $ terraform destroy • Repeat Terraform Le workflow Terraformer la planète AWS
  11. • Plan : ◦ lecture fichier état ◦ construction graphe

    de dépendances ◦ affichage du déploiement prévu Terraform Comment ça marche Terraformer la planète AWS
  12. • Apply : ◦ lecture fichier état ◦ construction graphe

    de dépendances ◦ affichage du déploiement prévu ◦ déploiement effectif Terraform Comment ça marche Terraformer la planète AWS
  13. • Destroy : ◦ lecture fichier état ◦ construction graphe

    de dépendances ◦ destruction des ressources Terraform Comment ça marche Terraformer la planète AWS
  14. • Hashicorp Configuration Language • JSON allégé Syntaxe Formalisme Terraformer

    la planète AWS provider “aws” { alias = “paris” region = “eu-west-3” }
  15. • Providers • Ressources • Variables • Datasources • Outputs

    • Backends Terraform Les concepts Terraformer la planète AWS
  16. • Client avec les API d’un fournisseur de service •

    Chaque ressource peut avoir son provider • Plusieures instance de provider vers le même fournisseur Syntaxe Providers Terraformer la planète AWS provider “aws” { alias = “paris” region = “eu-west-3” } https://www.terraform.io/docs/providers/aws
  17. • Correspond à un objet créé • Lien entre les

    objets • Forcer la création Syntaxe Ressources Terraformer la planète AWS resource “aws_instance” “web” { instance_type = “t2.micro” } https://www.terraform.io/docs/providers/aws
  18. • Variable... • Peut avoir un type (string, int, list,

    map) • Peut avoir une valeur par défaut Syntaxe Variables Terraformer la planète AWS variable “stack_name” { type = “string” default = “unnamed” } https://www.terraform.io/docs/configuration/variables.html
  19. • Les variables peuvent être injecté dans le reste du

    code Terraform • Une librairie de fonction de transformation est disponible Syntaxe Utilisation des variables Terraformer la planète AWS resource “aws_instance” “web” { subnet = “${var.subnet}” count = “${var.db_instance_count + 1}” } https://www.terraform.io/docs/configuration/interpolation.html
  20. • Récupère de l’information auprès d’API • Permet de se

    raccorder à l’existant Syntaxe Datasources Terraformer la planète AWS data “aws_ami” “centos7_ami” { filter { product_code = “aw0evgkw8e5c1q413zgy5pjce” product_type = “marketplace” } most_recent = “true” } resource "aws_instance" "web" { ami = "${data.aws_ami.centos7_ami.id}” } https://www.terraform.io/docs/configuration/data-sources.html
  21. • Affichage en fin d’apply • Consultable via la commande

    terraform output • Consultable via Datasource de type terraform_remote_state Syntaxe Outputs Terraformer la planète AWS output "s3_arn" { value = "${aws_s3_bucket.my_bucket.arn}" } https://www.terraform.io/intro/getting-started/outputs.html
  22. • Sauvegarde de l’état de l’infrastructure • Configurable par CLI,

    HCL ou mixte • Ressource partagée par l’équipe Syntaxe Backends Terraformer la planète AWS output "s3_arn" { value = "${aws_s3_bucket.my_bucket.arn}" } https://www.terraform.io/docs/backends/index.html
  23. Terraform vs CloudFormation Terraformer la planète AWS CloudFormation Terraform MultiCloud

    Partage de l’état Modularité Conditions Rolling update Import de l’existant Rollback en cas d’erreur