Packer allows us to create templates for generating cross-platform machine images, and HashiCorp provides its own configuration language for this task. In this lab, we’ll test our HCL2 skills by fixing and otherwise neaten up an inaccurately written HCL2 Packer template. Just want to test your HCL2 reviewing skills? No Packer knowledge is needed to take this lab.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Fix Whitespace
Open the provided template:
cd packer
vim ami-test.pkr.hcl
To make viewing the template easier, let’s neaten up the template by adjusting the tabs/whitespace:
source "amazon-ebs" "ubuntu-ami-test": { access_key = "", secret_key = "", security_group_ids = [""], subnet_id = "", region = "us-east-1", ami_name = "ubuntu-ami-test_{{timestamp}}", instance_type = "t2.micro", source_ami = "ami-068663a3c619dd892", communicator = "ssh", ssh_username = "ubuntu" } build { sources = [ "source.amazon-ebs.ubuntu-ami-test" ] provisioner "shell" [ script = "init.sh" ] }
- Adjust Structural Errors
Update the template to remove the unnecessary colon (
:
) in the initialsource
block. Theprovisioner
block also needs to be updated to work as an object not an array:source "amazon-ebs" "ubuntu-ami-test" { access_key = "", secret_key = "", security_group_ids = [""], subnet_id = "", region = "us-east-1", ami_name = "ubuntu-ami-test_{{timestamp}}", instance_type = "t2.micro", source_ami = "ami-068663a3c619dd892", communicator = "ssh", ssh_username = "ubuntu" } build { sources = [ "source.amazon-ebs.ubuntu-ami-test" ] provisioner "shell" { script = "init.sh" } }
Finally, remove any commas:
source "amazon-ebs" "ubuntu-ami-test" { access_key = "" secret_key = "" security_group_ids = [""] subnet_id = "" region = "us-east-1" ami_name = "ubuntu-ami-test_{{timestamp}}" instance_type = "t2.micro" source_ami = "ami-068663a3c619dd892" communicator = "ssh" ssh_username = "ubuntu" } build { sources = [ "source.amazon-ebs.ubuntu-ami-test" ] provisioner "shell" { script = "init.sh" } }
- Run the Build
Using the credentials on the hands-on lab page, update the variables to use the provided access key, secret key, subnet ID, and security group.
Save and exit the file.
Run the build:
packer build .