【问题标题】:Using resource attributes as variable in Terraform templates在 Terraform 模板中使用资源属性作为变量
【发布时间】: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

标签: consul terraform


【解决方案1】:

我意识到我在当前资源中定义了 template_file 资源,这是问题的一部分。当我解决了这个问题后,事情就变得容易多了。

【讨论】:

    猜你喜欢
    • 2019-11-20
    • 2020-12-08
    • 2018-08-01
    • 2022-01-13
    • 1970-01-01
    • 2018-09-18
    • 2022-10-13
    • 2019-11-19
    • 2021-12-28
    相关资源
    最近更新 更多