Publicidad
Publicidad

Más contenido relacionado

Similar a Terraform - IAC - de quoi s'agit t'il ?.pdf(20)

Publicidad

Terraform - IAC - de quoi s'agit t'il ?.pdf

  1. TERRAFORM - IAC - DE TERRAFORM - IAC - DE QUOI S'AGIT T'IL ? QUOI S'AGIT T'IL ? DOMINIQUE DUMONT DOMINIQUE DUMONT
  2. QUI SUIS-JE ? QUI SUIS-JE ? Dominique Dumont (@dod38fr) Contributeur Open-Source depuis 1996 Debian Developer depuis 2011 Freelance devops depuis 2020
  3. PROBLÈME À RÉSOUDRE PROBLÈME À RÉSOUDRE déployer une infra pour héberger une application déployer plusieurs environments (dev prod…) la faire évoluer déroules un Plan de Reprise d'Activité (PRA ou DRP)
  4. PREMIÈRE APPROCHE PREMIÈRE APPROCHE
  5. LA CONSOLE LA CONSOLE ok pour apprendre dans un environnement de dev
  6. LE PROBLÈME LE PROBLÈME Quant on veut faire l'environnement de prod, il faut: avoir noté les détails de l'étape précédente ne pas se tromper
  7. COMPLICATION COMPLICATION En cas de catastrophe (PRA): il faut rejouer l'installation sous stress gros risque d'erreurs
  8. SOLUTION: INFRA AS CODE SOLUTION: INFRA AS CODE
  9. PRINCIPE PRINCIPE Décrire le résultat attendu L'outil se débrouille pour déterminer les actions à faire en fonction de l'état de l'infra et le résultat attendu.
  10. AVANTAGES AVANTAGES idempotence: on peut relancer la commande sans soucis en cas de problème immutabilité: une modif faite dans votre dos est détectée et corrigée facile de détruire l'infra (tests) on peut archiver le code avec GIT on peut appliquer les changements d'infra avec une CI/CD
  11. INCONVÉNIENTS INCONVÉNIENTS faut que l'infra offre une API (pas applicable sur bare metal)
  12. LES OUTILS D'IAC LES OUTILS D'IAC
  13. TERRAFORM - HCL TERRAFORM - HCL Pour décrire: les ressources les relations entre ces ressources les paramètres d'entrée (e.g. env dev vs prod) resource "azurerm_servicebus_namespace" "default" { name = local.cluster-name location = var.location resource_group_name = azurerm_resource_group.cluster.name sku = "Basic" }
  14. TERRAFORM - COMMANDES TERRAFORM - COMMANDES terraform plan: vérifier ce qui ca se passer terraform apply: appliquer les changements terraform destroy: tout détruire
  15. TERRAFORM - PROVIDERS TERRAFORM - PROVIDERS Interface entre Terraform et les ressources dans le cloud Beaucoup de : Azure, AWS, GitHub, Kubernetes, OVH, CloudFlare, providers
  16. TERRAFORM - MODULES TERRAFORM - MODULES Abstraction qui englobe plusieurs ressources, un peu comme une librairie Beaucoup de modules disponibles
  17. CLOUD FORMATION CLOUD FORMATION seulement pour AWS YAML "enrichi" (exemple: !Sub !Join) beaucoup moins souple que HCL PolicyDocument: Id: CrossAccessPolicy Statement: - Sid: CrossAccPolicyDoc Action: "s3:ListBucket" Resource: !Sub 'arn:aws:s3:::${S3BUCKET}' Principal: AWS: !Join ['', ["arn:aws:iam::", !Ref PublisherAccountID
  18. AWS CDK AWS CDK permet de décrire les ressources avec Python, Java, TypeScript… Développé par AWS Originellement disponible que pour AWS Peut maintenant s'appuyer sur les providers de Terraform CDK function = _lambda.Function( self, "lambda_function", runtime=_lambda.Runtime.PYTHON_3_8, handler="index.handler", code=_lambda.Code.from_asset("lambda"), layers=[layer] )
  19. RETOUR D'EXPÉRIENCE RETOUR D'EXPÉRIENCE
  20. TERRAFORM TERRAFORM permet de décliner assez facilement des déploiements dev, pre-prod, prod… pas trop de problèmes de compatiblité sur les upgrades tfstate un peu pénible à gérer et partager
  21. AUTRES AUTRES CloudFormation trop limité par YAML extensions sur YAML difficiles à suivre
  22. CONCLUSION CONCLUSION CloudFormation et CDK assez peu utilisés Terraform est devenu un standard de facto Beaucoup de postes ou de missions demandent des compétences Terraform
Publicidad