packer-plugin-amazon icon indicating copy to clipboard operation
packer-plugin-amazon copied to clipboard

Build fails with set_partition_type: Non-standard volume device "/dev/nvme0n1p1" using amazon-instance

Open ghost opened this issue 4 years ago • 1 comments

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

ghost avatar Mar 29 '21 10:03 ghost

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)

dannykansas avatar May 11 '23 19:05 dannykansas