Обновление счетчика в файле template_file не влияет на вывод - PullRequest
0 голосов
/ 29 ноября 2018

У нас есть система, которая использует несколько подсчитанных ресурсов.До сих пор они были жестко закодированы в 2. Я только что представил новую переменную pairs со значением по умолчанию 1, поэтому мы можем начать увеличивать это значение.Если значение по умолчанию равно 1, результирующее plan не показывает изменений.Вот два элемента в игре среди многих других:

data "template_file" "bootstrapuserdata" {
    count   = "${var.pairs * 2}"
    template = "${file("${path.module}/startup.ps1")}"
    vars {
        domain = "${var.domain}"
        region = "${var.region}"
        publicIp = "${element(var.public_ips, count.index)}"
        stack = "${var.stack}"
    }
}


resource "aws_launch_configuration" "lc" {
    count = "${var.pairs * 2}"
    name_prefix = "lc-${element(var.private_subnet_ids, count.index)}-"
    image_id = "${var.ami_id}"
    instance_type = "${var.instance_type}"
    iam_instance_profile = "${aws_iam_instance_profile.webserver_instance_profile.id}"
    key_name = "${var.key_name}"
    security_groups = ["${var.sg_id}", "${var.sg2_id}"]
    user_data = "${data.template_file.bootstrapuserdata.*.rendered[count.index]}"
    lifecycle {
        create_before_destroy = true
    }
}

Если я изменю значение pairs на 2 (в результате счет для 4 для обоих элементов), я получаю следующую ошибку отplan:

Error: Error refreshing state: 1 error(s) occurred:


* module.servers.aws_launch_configuration.lc: 2 error(s) occurred:

* module.servers.aws_launch_configuration.lc[3]: index 3 out of range for list data.template_file.bootstrapuserdata.*.rendered (max 2) in:

${data.template_file.bootstrapuserdata.*.rendered[count.index]}
* module.servers.aws_launch_configuration.lc[2]: index 2 out of range for list data.template_file.bootstrapuserdata.*.rendered (max 2) in:

${data.template_file.bootstrapuserdata.*.rendered[count.index]}

Похоже, что он не перерисован template_file с обновленным счетчиком.Если я намеренно сломаю template_file, то это будет подтверждено:

data "template_file" "bootstrapuserdata" {
    count   = "${var.pairs * 2}"
    template = "${file("${path.module}/startup.ps1")}"
    vars {
        #domain = "${var.domain}"
        region = "${var.region}"
        publicIp = "${element(var.public_ips, count.index)}"
        stack = "${var.stack}"
    }
}

Вывод:

Error: Error refreshing state: 1 error(s) occurred:

* module.servers.data.template_file.bootstrapuserdata: 2 error(s) occurred:

* module.servers.data.template_file.bootstrapuserdata[1]: data.template_file.bootstrapuserdata.1: failed to render : 28:66: unknown variable accessed: domain
* module.servers.data.template_file.bootstrapuserdata[0]: data.template_file.bootstrapuserdata.0: failed to render : 28:66: unknown variable accessed: domain

Однако, если я действительно , то сломаю template_file:

data "template_file" "bootstrapuserdata" {
    count   = "${var.pairs * 2}"
    template = "${file("${path.module}/startup.ps1")}"
    /*vars {
        domain = "${var.domain}"
        region = "${var.region}"
        publicIp = "${element(var.public_ips, count.index)}"
        stack = "${var.stack}"
    }*/
}

Теперь он знает обо всех 4:

Error: Error refreshing state: 1 error(s) occurred:

* module.servers.data.template_file.bootstrapuserdata: 4 error(s) occurred:

* module.servers.data.template_file.bootstrapuserdata[3]: data.template_file.bootstrapuserdata.3: failed to render : 15:106: unknown variable accessed: domain
* module.servers.data.template_file.bootstrapuserdata[1]: data.template_file.bootstrapuserdata.1: failed to render : 15:106: unknown variable accessed: domain
* module.servers.data.template_file.bootstrapuserdata[2]: data.template_file.bootstrapuserdata.2: failed to render : 15:106: unknown variable accessed: domain
* module.servers.data.template_file.bootstrapuserdata[0]: data.template_file.bootstrapuserdata.0: failed to render : 15:106: unknown variable accessed: domain

Что происходит?Я наткнулся на ошибку Terraform?

Я начал день на Terraform 0.10.6, но обновился до 0.11.10 после просмотра этой проблемы - между ними нет никакой разницы.

1 Ответ

0 голосов
/ 29 ноября 2018

Сделав дальнейший поиск, и обнаружив эту проблему , я попытался немного поэкспериментировать:

Если я переключусь на использование resource "template_file" вместо data "template_file" , а также на изменениеимя моего шаблона , оно исправляет мою проблему.Сохранение его на data и изменение имени не работает, а переключение на resource без изменения имени также не работает.

В целом, это похоже на проблему в Terraform.сам на каком-то уровне, будь то тот, на который я ссылался выше, или нет, я пока не уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...