【发布时间】:2016-04-16 06:09:46
【问题描述】:
我正在尝试将 EC2 实例的属性用作变量,但它一直失败或无法正常工作。正如您在下面看到的,我想将实例的私有 IP 插入到将被复制到实例的配置文件中。然后,remote-exec 脚本会将文件移动到位 (/etc/vault.d/server-config.json)
instances.tf
resource "template_file" "tpl-vault-server-config" {
template = "${file("${path.module}/templates/files/vault-server-config.json.tpl")}"
vars {
aws_private_ip = "${aws_instance.ec2-consul-server.private_ip}"
}
}
provisioner "file" {
source = "${template_file.tpl-vault-server-config.rendered}"
destination = "/tmp/vault-server-config.json"
}
vault-server-config.json.tpl
backend "consul" {
address = "127.0.0.1:8500"
path = "vault"
tls_enable = 1
tls_ca_file = "/etc/consul.d/ssl/ca.cert"
tls_cert_file = "/etc/consul.d/ssl/consul.cert"
tls_key_file = "/etc/consul.d/ssl/consul.key"
}
listener "tcp" {
address = "${aws_private_ip}:8200"
tls_cert_file = "/etc/consul.d/ssl/consul.cert"
tls_key_file = "/etc/consul.d/ssl/consul.key"
}
terraform plan 的错误是:
* aws_instance.ec2-consul-server: missing dependency: template_file.tpl-vault-server-config
问题:
- 我是否采取了错误的方法?
- 我缺少一些基本的东西吗?
- 如何将实例的属性放入文件中?
提前致谢。
【问题讨论】:
-
您的
ec2-consul-server定义在哪里?如果您的aws_instance依赖于provisioner,而provisioner又依赖于template file...,那么您可能在这里得到了循环依赖顺序,而aws_instance又依赖于aws_instance