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...