gestion_configuration:terraform:toc
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
gestion_configuration:terraform:toc [2019/10/15 02:02] – sgariepy | gestion_configuration:terraform:toc [2019/10/17 01:40] – [Sources] sgariepy | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Terraform ====== | ====== Terraform ====== | ||
+ | |||
+ | * [[https:// | ||
Ligne 7: | Ligne 9: | ||
$ terraform init | $ terraform init | ||
+ | |||
+ | |||
+ | Validation (non garantie): | ||
+ | |||
+ | $ terraform validate | ||
Ligne 42: | Ligne 49: | ||
</ | </ | ||
- | Dans le répertoire de travail de Terraform, créer un fichier de configuration '' | + | Dans le répertoire de travail de Terraform, créer un fichier de configuration '' |
< | < | ||
- | workspaces | + | terraform |
- | hostname | + | backend |
- | organization = " | + | hostname |
+ | organization = " | ||
+ | |||
+ | workspaces { | ||
+ | name = " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | Faire l' | ||
+ | |||
+ | < | ||
+ | $ terraform init | ||
</ | </ | ||
Sources : [[https:// | Sources : [[https:// | ||
+ | ====== Variables ====== | ||
+ | On peut spécifier le nom, le type et la valeur par défaut d'une variable. | ||
+ | |||
+ | < | ||
+ | # Spécifier la valeur par défaut et le type (les deux sont facultatifs) | ||
+ | variable " | ||
+ | type = string | ||
+ | default = " | ||
+ | } | ||
+ | |||
+ | # Spécifier la valeur de la variable | ||
+ | environment_name = " | ||
+ | </ | ||
+ | |||
+ | On peut déclarer des variables de plusieurs sources, celles-ci on une précédence: | ||
+ | |||
+ | * Variable d' | ||
+ | * Fichier | ||
+ | * Ligne de commande | ||
+ | |||
+ | Cela signifie qu'une variable qui est initialisée dans un fichier écrasera la valeur de cette variable initialisé depuis une variable d' | ||
+ | |||
+ | |||
+ | Spécifier une valeur //in-line// en ligne de commande: | ||
+ | < | ||
+ | $ terraform -plan -var ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Exemples ===== | ||
+ | |||
+ | Avec map: | ||
+ | |||
+ | < | ||
+ | variable " | ||
+ | type = map(string) | ||
+ | default = { | ||
+ | development = " | ||
+ | uat = " | ||
+ | production = " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Utilisation: | ||
+ | |||
+ | < | ||
+ | cidr_block = lookup(var.cidr, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Datasources ====== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Ressources ====== | ||
+ | |||
+ | Random provider: | ||
+ | |||
+ | < | ||
+ | resource " | ||
+ | min = 10000 | ||
+ | max = 99999 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Resource Arguments ===== | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Exemple de '' | ||
+ | |||
+ | < | ||
+ | resource " | ||
+ | count = 2 | ||
+ | tags { | ||
+ | Name = " | ||
+ | } | ||
+ | depends_on = [aws_iam_role_policy.allow_s3] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Exemple de '' | ||
+ | |||
+ | < | ||
+ | resource " | ||
+ | for_each { | ||
+ | food = " | ||
+ | cash = " | ||
+ | } | ||
+ | bucket = " | ||
+ | acl = each.value | ||
+ | } | ||
+ | </ | ||
====== Provisioner ====== | ====== Provisioner ====== | ||
+ | |||
===== File ===== | ===== File ===== | ||
+ | Simple: | ||
+ | |||
+ | < | ||
+ | provisioner " | ||
+ | source = "/ | ||
+ | destination = "/ | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Avec '' | ||
< | < | ||
Ligne 72: | Ligne 206: | ||
</ | </ | ||
+ | Avec '' | ||
+ | < | ||
+ | provisioner { | ||
+ | content = <<EOF | ||
+ | access_key = | ||
+ | secret_key = | ||
+ | security_token = | ||
+ | use_https = True | ||
+ | bucket_location = US | ||
+ | |||
+ | EOF | ||
+ | destination = "/ | ||
+ | } | ||
+ | </ | ||
===== Remote ===== | ===== Remote ===== | ||
+ | Inline: | ||
< | < | ||
Ligne 87: | Ligne 236: | ||
+ | Script: | ||
+ | |||
+ | < | ||
+ | provisioner " | ||
+ | scripts = [ | ||
+ | " | ||
+ | ] | ||
+ | } | ||
+ | </ | ||
====== Syntaxe ====== | ====== Syntaxe ====== | ||
Ligne 101: | Ligne 259: | ||
map = {name = " | map = {name = " | ||
</ | </ | ||
+ | |||
+ | Références: | ||
+ | |||
+ | < | ||
+ | var.taco_day | ||
+ | aws_instance.taco_truck.name | ||
+ | local.taco_toppings.cheeses | ||
+ | module.taco_hut.locations | ||
+ | </ | ||
+ | |||
+ | Référencer une chaîne, nombre et booléen: | ||
+ | |||
+ | < | ||
+ | local.taco_count # retourne le nombre | ||
+ | </ | ||
+ | |||
+ | |||
+ | Référencer un élément d'une liste ou une map: | ||
+ | |||
+ | < | ||
+ | local.taco_toppings[2] # retourne l' | ||
+ | local.taco_map[" | ||
+ | </ | ||
+ | |||
+ | Valeurs des ressources: | ||
+ | |||
+ | < | ||
+ | var.region # us-east-1 | ||
+ | data.aws_availability_zones.azs.names[1] # retourne la deuxième zone de disponibilité | ||
+ | </ | ||
+ | |||
+ | Interpolation: | ||
+ | |||
+ | < | ||
+ | taco_name = " | ||
+ | </ | ||
+ | |||
+ | ====== Locals ====== | ||
+ | |||
+ | |||
+ | < | ||
+ | locals { | ||
+ | common_tags = { | ||
+ | BillingCode = var.billing_code_tag | ||
+ | Environment = var.environment_tag | ||
+ | } | ||
+ | |||
+ | s3_bucket_name = " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ====== Fonctions ====== | ||
+ | |||
+ | Exemples de fonctions communes: | ||
+ | |||
+ | |||
+ | < | ||
+ | min(42, 8, 13) # Numérique | ||
+ | lower(" | ||
+ | merge(map1, map2) # Collection | ||
+ | file(path) | ||
+ | cidrsubnet(" | ||
+ | timestamp() | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | # Configure networking | ||
+ | variable network_info { | ||
+ | default = " | ||
+ | } | ||
+ | |||
+ | cidr_block = cidrsubnet(var.network_info, | ||
+ | host_ip = cidrhost(var.network_info, | ||
+ | </ | ||
+ | |||
+ | On peut utiliser '' | ||
+ | |||
+ | |||
+ | |||
+ | => Référence: | ||
+ | |||
+ | ====== Gérer les environnements ====== | ||
+ | |||
+ | On peut gérer les environnements de différentes façons. | ||
+ | |||
+ | < | ||
+ | |-- /dev | ||
+ | | |-- dev.state | ||
+ | | |-- dev.tfvars | ||
+ | |-- /uat | ||
+ | | |-- uat.state | ||
+ | | |-- uat.tfvars | ||
+ | |-- /prod | ||
+ | | |-- prod.state | ||
+ | | |-- prod.tfvars | ||
+ | |-- main_config.tf | ||
+ | |-- common.tfvars | ||
+ | </ | ||
+ | |||
+ | La commande à utiliser: | ||
+ | |||
+ | < | ||
+ | $ terraform plan -state=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Workspaces ===== | ||
+ | |||
+ | |||
+ | < | ||
+ | $ terraform workspace new dev | ||
+ | $ terraform plan | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Sources ====== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | * PluralSight Terraform Getting started. | ||
+ | |||
gestion_configuration/terraform/toc.txt · Dernière modification : 2023/10/03 21:46 de sgariepy