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 05:07] – [Fonctions] sgariepy | gestion_configuration:terraform:toc [2019/11/04 15:21] – sgariepy | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | Télécharger du site de Terraform, décompresser et copier dans un répertoire du PATH: | ||
+ | |||
+ | $ sudo mv ./terraform / | ||
+ | |||
+ | |||
+ | Sur macOS, peut être installé avec Brew: | ||
+ | |||
+ | $ brew install terraform | ||
Ligne 9: | Ligne 18: | ||
$ terraform init | $ terraform init | ||
+ | |||
+ | |||
+ | Validation (non garantie): | ||
+ | |||
+ | $ terraform validate | ||
Ligne 58: | Ligne 72: | ||
} | } | ||
</ | </ | ||
+ | |||
Faire l' | Faire l' | ||
Ligne 67: | Ligne 82: | ||
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, | ||
+ | </ | ||
Ligne 89: | Ligne 154: | ||
</ | </ | ||
+ | |||
+ | ===== 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 ====== | ||
Ligne 246: | Ligne 343: | ||
host_ip = cidrhost(var.network_info, | host_ip = cidrhost(var.network_info, | ||
</ | </ | ||
+ | |||
+ | On peut utiliser '' | ||
Ligne 251: | Ligne 350: | ||
=> Référence: | => 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 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Modules ====== | ||
+ | |||
+ | |||
+ | * Réutilisation du code | ||
+ | * Remote ou local source | ||
+ | * [[https:// | ||
+ | * Root module | ||
+ | * Versioning | ||
+ | * Provider inheritance | ||
+ | |||
+ | |||
+ | Composantes: | ||
+ | |||
+ | * Variables d' | ||
+ | * Ressources | ||
+ | * Variables de sortie | ||
+ | |||
+ | Example d' | ||
+ | |||
+ | < | ||
+ | # Créer le module | ||
+ | module " | ||
+ | name = " | ||
+ | source = " | ||
+ | } | ||
+ | |||
+ | |||
+ | # L' | ||
+ | ressource " | ||
+ | bucket = module.bucket.bucket_id | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====== Sources ====== | ||
+ | * PluralSight Terraform Getting started. | ||
gestion_configuration/terraform/toc.txt · Dernière modification : 2023/10/03 21:46 de sgariepy