web-dev-qa-db-fra.com

Accès aux variables Terraform dans le fichier de modèle de fournisseur user_data

Je lance un aws_launch_configuration instance utilisant terraform.

J'utilise un script Shell pour le user_data variable, comme ceci:

resource "aws_launch_configuration" "launch_config" {
    ...
     user_data                     = "${file("router-init.sh")}"
    ....  
}

Dans ce router-init.sh, l'une des choses que je voudrais faire, c'est d'avoir accès aux adresses IP pour les autres instances que je lance via terraform.

Je sais que je peux utiliser un splat pour accéder à toutes les adresses IP de cette instance, par exemple:

output ip_address {
    value = ${aws_instance.myAWSInstance.*.private_ip}"
}

Existe-t-il un moyen de passer/accéder à ces adresses IP dans le script router-init.sh?

10
Timothy T.

Vous pouvez le faire en utilisant un template_file source de données :

data "template_file" "init" {
  template = "${file("router-init.sh.tpl")}"

  vars = {
    some_address = "${aws_instance.some.private_ip}"
  }
}

Puis référencez-le à l'intérieur du modèle comme:

#!/bin/bash

echo "SOME_ADDRESS = ${some_address}" > /tmp/

Ensuite, utilisez-le pour le user_data:

 user_data = ${data.template_file.init.rendered}
16
Brandon Miller