packer-plugin-amazon
packer-plugin-amazon copied to clipboard
Build fails with set_partition_type: Non-standard volume device "/dev/nvme0n1p1" using amazon-instance
This issue was originally opened by @dimisjim as hashicorp/packer#9495. It was migrated here as a result of the Packer plugin split. The original body of the issue is below.
Overview of the Issue
I am trying to build an AMI with amazon-instance builder.
Bundler fails with set_partition_type: Non-standard volume device "/dev/nvme0n1p1"
Reproduction Steps
run packer build
Packer version
1.5.6
Simplified Packer Buildfile
{
"min_packer_version": "1.5.6",
"builders": [{
"type": "amazon-instance",
"name": "packer-builder",
"region": "eu-west-1",
"instance_type": "t3.large",
"account_id": "<my_account>",
"s3_bucket": "<my_bucket>",
"x509_cert_path": "<path/to/certificate.pem>",
"x509_key_path": "<path/to/private-key.pem>",
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"architecture": "x86_64",
"name": "*amzn2-ami-hvm-2.0.*",
"root-device-type": "ebs"
},
"owners": ["amazon"],
"most_recent": true
},
"ssh_username": "ec2-user",
"ami_name": "<ami_name>",
"ami_description": "<ami_name>"
}],
"provisioners": [
{
"type": "shell",
"script": "files/provision.sh"
}
]
}
Using this provisioning script to install the ami tools:
# Install EC2 AMI tools required by the amazon-instance packer builder
wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
rpm -K ec2-ami-tools.noarch.rpm
rpm -Kv ec2-ami-tools.noarch.rpm
sudo yum install -y ec2-ami-tools.noarch.rpm
rpm -qil ec2-ami-tools | grep ec2/amitools/version
export RUBYLIB=$RUBYLIB:/usr/lib/ruby/site_ruby:/usr/lib64/ruby/site_ruby
ec2-ami-tools-version
ec2-bundle-vol --version
which ec2-bundle-vol
sudo sed -i 's#/sbin:/bin:/usr/sbin:/usr/bin#/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin#g' /etc/sudoers
sudo touch /etc/profile.d/myenvvars.sh
sudo chmod +x /etc/profile.d/myenvvars.sh
sudo bash -c 'echo "export RUBYLIB=$RUBYLIB:/usr/lib/ruby/site_ruby:/usr/lib64/ruby/site_ruby" >> /etc/profile.d/myenvvars.sh'
sudo bash -c 'echo "export PATH=/usr/local/bin:$PATH:" >> /etc/profile.d/myenvvars.sh'
Operating system and Environment details
Running packer in Ubuntu 20.04
Log Fragments and crash.log files
==> packer-builder: Uploading X509 Certificate...
==> packer-builder: Bundling the volume...
==> packer-builder: /usr/lib/ruby/site_ruby/ec2/platform/linux/image.rb:253:in `set_partition_type': Non-standard volume device "/dev/nvme0n1p1" (FatalError)
==> packer-builder: from /usr/lib/ruby/site_ruby/ec2/platform/linux/image.rb:71:in `initialize'
packer-builder: Setting partition type to bundle "/" with...
==> packer-builder: from /usr/lib/ruby/site_ruby/ec2/amitools/bundlevol.rb:172:in `new'
==> packer-builder: from /usr/lib/ruby/site_ruby/ec2/amitools/bundlevol.rb:172:in `bundle_vol'
==> packer-builder: from /usr/lib/ruby/site_ruby/ec2/amitools/bundlevol.rb:231:in `main'
==> packer-builder: from /usr/lib/ruby/site_ruby/ec2/amitools/tool_base.rb:201:in `run'
==> packer-builder: from /usr/lib/ruby/site_ruby/ec2/amitools/bundlevol.rb:239:in `<main>'
==> packer-builder: Volume bundling failed. Please see the output above for more
==> packer-builder: details on what went wrong.
==> packer-builder:
==> packer-builder: One common cause for this error is ec2-bundle-vol not being
==> packer-builder: available on the target instance.
==> packer-builder: Provisioning step had errors: Running the cleanup provisioner, if present...
==> packer-builder: Terminating the source AWS instance...
I'm encountering a similar error, albeit within a standard (i.e. non-nvme) instance store-backed type.
In my case, the job had been running fine for a good few years and started failing in the last month or so, and is emitting an error like:
/usr/lib/ruby/site_ruby/ec2/platform/linux/image.rb:778:in `evaluate': Failed to evaluate 'udevadm info '/dev/xvda1' |grep -Po '(?<=^E: ID_PART_TABLE_TYPE=).*''. Reason: missing option (FatalError)