Rolling out AMI upgrades with Terraform
Remember that we used the data resource "aws_ami" to pull the latest AMI belonging to the AWS account configured in the template? At that time, we didn't put much effort into it, blindly pulling any existing AMI , as long as it was the latest updated one:
data "aws_ami" "app-ami" {
most_recent = true
owners = ["self"]
} With Packer building our AMIs, we can put a bit more effort into this resource. We need to make sure that it pulls the image that is suitable for this application. First, simplify the Packer template: remove any variables and make sure that the "ami_name" key looks as simple as the following:
"ami_name": "centos-7-base-puppet-{{timestamp}}", Rebake the image and then modify the Terraform application module to use the following image:
data "aws_ami" "app-ami" {
most_recent = true
owners = ["self"]
filter {
name = "name"
values = ["centos-7-base-puppet*"]
}
} From the aws_instance resource, we can now remove...