0

EC2 インスタンスの属性を変数として使用しようとしていますが、何度も失敗するか、機能しません。以下に示すように、インスタンスにコピーされる構成ファイルにインスタンスのプライベート IP を挿入します。次に、remote-exec スクリプトがファイルを所定の場所 (/etc/vault.d/server-config.json) に移動します。

インスタンス.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

質問:

  • 私は間違ったアプローチを取っていますか?
  • 基本的なものが欠けていますか?
  • インスタンスの属性をファイルに取得するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

0

現在のリソース内で template_file リソースを定義していたことに気付きましたが、これが問題の一部でした。私がそれを修正したとき、物事ははるかに簡単に機能しました。

于 2016-04-15T22:09:46.477 に答える