hashicorp / packer-plugin-amazon

Packer plugin for Amazon AMI Builder
https://www.packer.io/docs/builders/amazon
Mozilla Public License 2.0
69 stars 104 forks source link

Please document/log that StepStopEBSBackedInstance is silently skipped when building with a spot instance #448

Open dgersting opened 6 months ago

dgersting commented 6 months ago

Overview of the Issue

When using amazon-ebs on a spot instance, it turns out packer is silently skipping the step in which it shuts down the EC2 instance. AWS will then reboot the instance as part of the AMI creation so it can snapshot the disk at rest. This reboot has been causing me issues due to the "on boot" scripts being baked in via packer.

It's pretty widely documented that packer will stop the ec2 instance before creating the AMI, however... it turns out this is silently skipped if the instance is a spot instance. With this logic undocumented and no logging (not even trace logging) available, this has been a very frustrating behavior to track down.

https://github.com/hashicorp/packer-plugin-amazon/blob/main/builder/ebs/builder.go#L385 https://github.com/hashicorp/packer-plugin-amazon/blob/main/builder/common/step_stop_ebs_instance.go#L29

Reproduction Steps

  1. Create basic packer config using amazon-ebs using a spot instance
  2. Run packer build with debug or trace logging
  3. Observe StepStopEBSBackedInstance is silently skipped after StepCleanupTempKeys

Plugin and Packer version

> packer version 
Packer v1.10.0
dgersting commented 6 months ago

With a little more testing, I understand the need for this as you cannot stop an instance associated with a one-time spot request. However, if packer had made that known (with docs and/or logging) that would have saved me a lot of time troubleshooting packer.