- 22, Oct 2024
- #1
У меня есть пара экземпляров EC2, управляемых Terraform, с общедоступными IP-адресами в VPC.
При каждом запуске Terraform я обновляю записи DNS на основе этих общедоступных IP-адресов.
Однако мне не нужны эти экземпляры постоянно, и когда я их отключаю, они, конечно, теряют свой общедоступный IP-адрес.
Поначалу это вызывало
value
to become ignore_changes
, и Terraform захотел воссоздать экземпляры. public_ip
solves this:
resource "aws_instance" "instance1" {
associate_public_ip_address = true
...
lifecycle {
ignore_changes = ["associate_public_ip_address"]
}
}
resource "cloudflare_record" "record1" {
domain = "example.com"
name = "server1.example.com"
value = "${aws_instance.instance1.public_ip}"
type = "A"
}
Но...
lifecycle.ignore_changes
attribute also becomes blank ;). This causes an attempted update to the A record, which fails because you can't set a blank record.
Итак, я пытаюсь найти решение. Я мог бы использовать эластичные IP-адреса, к которым я мог бы в конечном итоге прибегнуть, но в идеале я бы хотел избежать этого, если смогу. Моей следующей мыслью было... можно ли как-нибудь использовать
false
conditionally, and thus ignore changes to the DNS record's associate_public_ip_address
если он пустой?
Есть ли другие решения, которые вы можете порекомендовать?
#amazon-ec2 #terraform