web-dev-qa-db-fra.com

Bloc conditionnel Terraform basé sur l'environnement

Je cherche à utiliser les new conditionals dans Terraform pour activer ou désactiver un bloc de configuration en fonction de l’événement.

Voici le bloc que je voudrais transformer en conditionnel si, par exemple, j'ai une variable à activer pour la production.

access_logs {
    bucket = "my-bucket"
    prefix = "${var.environment_name}-alb"
}

Je pense avoir la logique pour vérifier l'environnement conditionnel, mais je ne sais pas comment coller la configuration ci-dessus dans la logique.

"${var.environment_name == "production" ? 1 : 0 }"

Est-il possible d'activer et de désactiver le bloc access_logs via la variable environment_name? Si ce n'est pas possible, existe-t-il une solution de contournement?

7
jmreicha

Dans la terraform en cours, l'instruction if n'est qu'une valeur et ne peut pas être utilisée pour le bloc.

Il existe une solution de contournement dans ce cas. Vous pouvez définir l'attribut enabled du bloc access_log sur false. Notez qu'il ne s'agit pas d'une solution générale, mais que vous ne pouvez l'utiliser qu'avec le bloc access_log.

access_logs {
    bucket  = "my-bucket"
    prefix  = "${var.environment_name}-alb"
    enabled = "${var.environment_name == "production" ? true : false }"
}

Voir également:

8
minamijoyo

Les conditions de terraform ne doivent actuellement être utilisées que pour déterminer une valeur. Elles ne doivent pas être utilisées en tant qu'instruction if enveloppant un bloc.

Et vous pouvez également utiliser des conditions pour déterminer une valeur en fonction d'une logique.

https://www.terraform.io/docs/configuration/interpolation.html#conditionals

1
ptierno