DevOps - CDA

Whoami

Le programme

  • DevOps définition
  • Le cloud
    • glossaire
    • Les principaux services d'AWS
    • Exemple de service qui tourne sur AWS
  • Pratiquons sur AWS
  • Automatisons avec Terraform
    • Terraform ? IaC
    • Deployer les services avec Terraform

DevOps

Qu'est-ce que c'est ?

Chacun a sa propre définition, quelle est la vôtre ?

Communication entre deux équipes, les Devs et les Ops

COMMUNICATION

Via des outils

  • CI / CD
  • Alerting
  • Monitoring
  • Les logs

Le Cloud

Qu'est-ce que c'est ?

3 différents types de Cloud :

  • IaaS : Infrastructure as a Service
  • PaaS : Platform as a Service
  • SaaS : Software as a Service

IaaS

  • Infrastructure as a Service
  • OVHCloud
  • Amazon EC2
  • DigitalOcean

PaaS

  • Platform as a Service
  • AWS Lambda
  • Heroku

SaaS

  • Software as a Service
  • Dropbox
  • Swile
  • Google Apps (meet, calendar, etc)

AWS

Lambda

  • Faire tourner du code dans le cloud
  • plusieurs runtime (Java, Node, Go, Python, Rust, etc)
  • paiement a la seconde
  • limité a 15mn
  • peut-être déclenché depuis plusieurs évènements

S3

  • Object Storage
  • Contrôle d'accès
  • Possibilité d'archiver

DynamoDB

  • Base de donnée NoSQL
  • Backup automatisé
  • On-demande
  • Encryption

ECS (Elastic Container Service)

  • permet de lancer des containers
  • intègre un loadbalancer

EC2

  • C'est une VM

Cloudwatch

  • Permet de consulter les logs (comme Kibana ou Datadog)
  • Alarmes
  • Dashboard

TP

AWS

  • Région de Stockholm
  • Un compte par groupe
  • préfixer les ressources par gX (X étant le numéro du groupe)

Lambda objectifs :

  • Déployer une lambda qui va récupérer les taux de changes en fonction de l'Euro
  • Déclenchement une fois par jour
  • En NodeJS
  • Lire les logs dans Cloudwatch

S3 objectifs :

  • Créer un bucket S3
  • Le rendre public
  • Uploader le frontend dans ce bucket
  • Y accéder via le browser

AWS CLI

A quoi ça sert ?

  • permet d'interagir avec AWS en ligne de commande
  • supporte des clés d'accès

Documentation

Exemples


aws s3 ls
aws s3 cp s3://MON_BUCKET monFichier
aws lambda list-functions

TP

Refaire la même chose qu'avec l'interface

  • Lambda
  • S3

Terraform

Concepts

  • IaC = Infrastructure as Code
  • Décrire son infrastructure avec du code
  • Fichier .tf
  • Modulaire
  • Fonctionne avec un state interne

Glossaires

Providers
Permet d'interagir avec des API (cloud)
Ressources
Décrire un objet d'infrastructure (Lambda, S3 buckets, etc)
Data sources
Permet d'obtenir des informations d'une ressource externe à Terraform

Provider


terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "3.75.2"
    }
  }
}
provider "aws" {
  region = "eu-west-1"
}

Ressource


resource "aws_lambda_function" "my_lambda" {
  filename      = "myLambda.zip"#Le zip contenant le code source
  function_name = "myLambda" #Le nom de la fonction dans AWS
  handler       = "report.Reports"# = nomDuFicher.nomDeLaMethode
  source_code_hash = filebase64sha256("myLambda.zip")
  runtime     = "nodejs16.x"
  memory_size = 1024
  timeout     = 900
  environment {}
}
                

Data


data "aws_ami" "example" {
  most_recent = true

  owners = ["self"]
  tags = {
    Name   = "app-server"
    Tested = "true"
  }
}
                

CLI (1/2)

terraform init
Initialise un workspace terraform
terraform validate
Valide les fichiers TF, via la syntaxe et la cohérence mais ne fait aucun appel réseau
terraform plan
Permet de connaitre les changements qui vont être appliqué sur l'infra par Terraform

CLI (2/2)

terraform apply
Permet appliquer les changements sur l'infra
terraform import
Permet d'importer dans le state une ressource déjà créé

TP

Again, again and again !

  • Créer un dossier 'infra'
  • Créer un fichier 'main.tf' avec le provider AWS
  • Créer un fichier 'lambda.tf'
  • A vous de jouer !

A mon tour !