Aller au contenu

Setup

Introduction

Le point d'entrée unique, quelque soit l'outil utilisé, est l'API AWS. Comme la plupart des plateformes modernes, c'est via cette API que toutes les modifications de ressources sont reçues par la plateforme.

Même s'il reste possible d'attaquer directement l'API, on utilisera bien souvent des outils pour nous faciliter la vie. Lorsque l'on manipule les ressources d'un cloud provider plusieurs solutions/outils sont disponibles.

Dashboard/console

C'est bien souvent le point d'entrée lorsque l'on découvre une plateforme cloud. Il a l'avantage d'être facile d'accès et permet de découvrir de façon ergonomique les ressources et les différents services. Cependant, il ne sera pas adapté lorsque l'on va vouloir standardiser et industrialiser la création de notre infrastructure. L'inconvénient d'utiliser le dashboard pour la création et gestion des resources (ce qui est parfois nommé 'ClikOps') est que cela ne tient pas à l'échelle avec beaucoup de ressources. Cela n'est pas pratique s'il fallait recréer ou changer toutes les ressources à la main. Cela rentre dans ce que Google et ses SRE appèllent le Toil

Note

Parfois certaines configurations ne pourront pas être réalisées via le dashboard

CLI

La plateforme AWS propose l'outil aws-cli en ligne de commande (Command Line Interface). L'ensemble des resources peuvent être créées via cet outil et il peut être pratique pour apporter une certaine automatisation. Par exemple, on pourra créer des scripts qui lanceront une suite de commandes AWS CLI pour instancier notre infra puis pour la détruire (pratique pour instancier un lab par exemple)

IaC

L'Infrastructure As Code (IaC) est une best practice devops impliquant l'automatisation des créations/configuration de resources via du code. Cela a pour avantage de gagner du temps via la réutilisabilité du code et permet réduire les potentielles erreurs bêtes. De plus il est possible d'appliquer les pratiques déjà existantes pour le code classique :

  • Versioning/audit
  • Dev best practices (DRY/YAGNI...)
  • Potentielles chaines de CI/CD de l'infra elle-même
  • ...

Plusieurs outils existent et notamment CloudFormation et Terraform.

CloudFormation

C'est l'outil même d'AWS permettant d'instancier des infrastructures (stacks) décrites via des fichiers yaml/json. AWS permet également de simplifier la création de ces fichiers via plusieurs outils CDK/SAM.

Terraform

C'est l'outil d'Infrastructure As Code (IaC) que l'on va privilégier pour ce TP. Terraform a une belle maturité puisqu'il existe depuis 2014 et est maintenu par Hashicorp (racheté par IBM pour plus de 6 Mds !! )

C'est un outil ayant une approche déclarative (on décrit l'infra que l'on veut et l'outil la fait converger), à mettre en opposition avec l'approche plutôt imperative du CLI AWS.

Terraform conserve l'état de l'existant et les dépendances entre les resources afin de faire converger l'infrastructure vers l'état attendu. Un gros avantage de Terraform est sa communauté ainsi que la richesse des providers et modules disponibles et maintenus par la communauté permettant de configurer facilement beaucoup de clouds, tels que AWS/Azure/GCP/Openstack, mais aussi directement des outils comme Vault, Kubernetes, Helm, Gitlab, Keycloak, Pagerduty... Vous pouvez retrouver la liste ici.

Les outils d'Infrastructure As Code sont aussi le point d'entrée essentiel de toute approche GitOps que nous découvrirons en fin de ce cours.

Lors de cette session, nous découvrirons ces trois modes d'instanciation. Nous commencerons souvent par le dashboard qui permettra de découvrir les ressources introduites pour ensuite réaliser une implémentation IaC avec Terraform.

Installation

Dashboard

Pour le dashboard, pas besoin d'installation particulière, votre navigateur préféré suffira. Toutes les informations de connexion vous ont été transmises par mail.

console AWS

  • Puis signing as IAM User (nous verrons ce que signifie IAM)
  • Renseigner les informations suivantes :
    • Account ID : Il s'agit du compte de l'organisation dans laquelle sera créé toutes les resources (Orga : takima-school dans notre cas)
    • User : Votre compte IAM reçu par mail
    • Password : Votre mot de passe temporaire reçu par mail

AWS CLI

Doc d'installation

Terraform

wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
récupérer le binaire qui convient sur ce lien (binaire 386) [package bin](https://developer.hashicorp.com/terraform/downloads)
unzip le package pour récupérer le binaire
puis faire entrer le bin 'terraform' dans votre PATH (dans un dossier du PATH ou modifier le PATH)

Verifier l'installation

terraform -help