diff options
author | Scott Moser <smoser@ubuntu.com> | 2015-07-22 15:17:10 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2015-07-22 15:17:10 -0400 |
commit | d68b340f8a6abf40f4d5cb546c91122c8856aa83 (patch) | |
tree | 8b617c3adcb7afaa6f535918429e6a064fccd5e1 /udev/66-azure-ephemeral.rules | |
parent | de18aa66ad5cfdff5e0e25ae4f8f7a0328021b5b (diff) | |
parent | 452ea086beb8b28b41f5ccc610f4e5433010e35b (diff) | |
download | vyos-cloud-init-d68b340f8a6abf40f4d5cb546c91122c8856aa83.tar.gz vyos-cloud-init-d68b340f8a6abf40f4d5cb546c91122c8856aa83.zip |
mounts: support reliably detecting and using Azure ephemeral disks
Azure's ephemeral disks are not guaranteed to be assigned the same name by
the kernel every boot. This causes problems on ~2% of Azure instances, and
can be fixed by using udev rules to give us a deterministic path to mount;
this patch introduces those udev rules and modifies the Azure data source
to use them.
Changes to a couple of config modules were also required. In some places,
they just needed to learn to dereference symlinks. In cc_mounts this
wasn't sufficient because the dereferenced device would have been put in
/etc/fstab (rather defeating the point of using the udev rules in the
first place). A fairly hefty refactor was required to separate "is this a
valid block device?" from "what shall I put in fstab?".
LP: #1411582
Diffstat (limited to 'udev/66-azure-ephemeral.rules')
-rw-r--r-- | udev/66-azure-ephemeral.rules | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/udev/66-azure-ephemeral.rules b/udev/66-azure-ephemeral.rules new file mode 100644 index 00000000..b9c5c3ef --- /dev/null +++ b/udev/66-azure-ephemeral.rules @@ -0,0 +1,18 @@ +# Azure specific rules +ACTION!="add|change", GOTO="cloud_init_end" +SUBSYSTEM!="block", GOTO="cloud_init_end" +ATTRS{ID_VENDOR}!="Msft", GOTO="cloud_init_end" +ATTRS{ID_MODEL}!="Virtual_Disk", GOTO="cloud_init_end" + +# Root has a GUID of 0000 as the second value +# The resource/resource has GUID of 0001 as the second value +ATTRS{device_id}=="?00000000-0000-*", ENV{fabric_name}="azure_root", GOTO="ci_azure_names" +ATTRS{device_id}=="?00000000-0001-*", ENV{fabric_name}="azure_resource", GOTO="ci_azure_names" +GOTO="cloud_init_end" + +# Create the symlinks +LABEL="ci_azure_names" +ENV{DEVTYPE}=="disk", SYMLINK+="disk/cloud/$env{fabric_name}" +ENV{DEVTYPE}=="partition", SYMLINK+="disk/cloud/$env{fabric_name}-part%n" + +LABEL="cloud_init_end" |