I'm marking this bug as Invalid the test-case specified is working in upstream cloud-init as well as existing Ubuntu instances with cloud- init. I believe this issue observed is an Amazon Linux specific issue and should be handled in the Amazon Linux forum. If you feel there still remains an upstream or Ubuntu-specific cloud-init issue, please re-open with further details.
** Changed in: cloud-init Status: Incomplete => Invalid -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to cloud-init. https://bugs.launchpad.net/bugs/1672833 Title: AWS NVME SSD (i3 family) ephemeral storage fails to mount via fs_setup Status in cloud-init: Invalid Bug description: I launched an AWS `i3.large` instance and attempted to configure it's NVME SSD ephemeral storage via fs_setup like so: fs_setup: - label: nvme0n1 filesystem: ext4 extra_opts: ["-E", "nodiscard"] device: /dev/nvme0n1 partition: auto mounts: - [ /dev/nvme0n1, "/media/nvme0n1", "ext4", "defaults,discard", "0", "2" ] I also attempted to manually add a full volume partition using disk_store, but that did not change the error output below. The above configuration failed with the following messages in /var/log/cloud-init.log, leading to the ephemeral storage device provided by the 'i3' family not being mounted at the requested path: Mar 14 15:25:53 cloud-init[2718]: helpers.py[DEBUG]: Running config-mounts using lock (<FileLock using file '/var/lib/cloud/instances/i-0305fb6a917397bf8/sem/config_mounts'>) Mar 14 15:25:53 cloud-init[2718]: cc_mounts.py[DEBUG]: Attempting to determine the real name of /dev/nvme0n1 Mar 14 15:25:53 cloud-init[2718]: cc_mounts.py[DEBUG]: Ignoring nonexistent named mount /dev/nvme0n1 Mar 14 15:25:53 cloud-init[2718]: cc_mounts.py[DEBUG]: changed /dev/nvme0n1 => None The block device for these instance types (i3 family) are automatically mapped to /dev/nvme0n1 [1] and is visible via `sudo fdisk -l` run from the machine after boot: Disk /dev/nvme0n1: 475.0 GB, 475000000000 bytes, 927734375 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes However, it appears that for these instance types, while the device is automatically made visible, it is not added to the EC2 instance metadata: [root@ip-10-0-1-247 ec2-user]# curl http://169.254.169.254/latest/meta-data/block-device-mapping/ ami ebs1 ...which is what fs_setup and disk_setup use to get the list of valid device names to perform operations on: https://git.launchpad.net/cloud- init/tree/cloudinit/sources/DataSourceEc2.py#n164 It appears that fs_setup and disk_setup only consider devices provided by the instance metadata, as evidenced by the code path here: https://git.launchpad.net/cloud-init/tree/cloudinit/config/cc_disk_setup.py#n144 https://git.launchpad.net/cloud-init/tree/cloudinit/cloud.py#n84 which is no longer a valid strategy for mounting ephemeral instance storage via cloud-config. Note that after instance launch I was able to manually create the partition table and a full volume primary partition (at /dev/nvme0n1p1), then create a filesystem via 'sudo mkfs.ext4 /dev/nvme0n1p1', then finally mount the correct disk at '/media/nvme0n1p1' via 'mount'. As a workaround to the issue above, I'll simply run these commands manually via the 'runcmd' option in cloud-config. **[1] The AWS documentation for the block device mappings states here: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html that "[NVMe instance store volumes] These volumes are mapped automatically as /dev/nvme[0-7]n1. You do not need to specify the NVMe volumes supported by an instance type in a block device mapping." This means they do not follow the standard 'ephemeral<number>' virtual name mapping that other instances use. To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-init/+bug/1672833/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp