%title: Terraform %author: Hubert # Terraform : Notions et Définitions
* terraform = GO https://www.terraform.io/docs/providers/index.html
* provider : fournisseur de ressources par API (principalement) Registry des providers : https://registry.terraform.io/ Certains intégrés dans le binaire GO ``` provider "kubernetes" { version = "~> 1.10" } ``` ------------------------------------------------------------------------- # Terraform : Notions et Définitions
* resource : élément qui peut être CRUD via le provider * Create, Remove, Update, Delete * un objet d'une ressource est unique (1 nom) dans un même module ``` resource "ressource_type" "ressource_nom" { arg = "valeur" } ``` exemple : ``` resource "aws_instance" "web" { ami = "some-ami-id" instance_type = "t2.micro" } ```
* data sources : ressource non modifiable ``` data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["myami-*"] } } ``` ------------------------------------------------------------------------- # Terraform : Notions et Définitions
* meta arguments ``` resource "ressource_type" "ressource_nom" { count = nb arg = "valeur" } ``` Remarque : count = itération
* le For each ``` variable "instances" { type = "map" default = { clef1 = "123" clef2 = "456" clef3 = "789" } } resource "aws_instance" "server" { for_each = var.instances ami = each.value instance_type = "t2.micro" tags = { Name = each.key } } ``` ------------------------------------------------------------------------- # Terraform : Notions et Définitions
* State : stockage de l'état des ressources * par défaut terraform.tfstate * Remote state : * consul * s3 * postgres * ... Attention aux données sensibles