Manually create AWS state disk symlink (#355)

Co-authored-by: Nils Hanke <Nirusu@users.noreply.github.com>
This commit is contained in:
Malte Poll 2022-10-24 11:55:11 +02:00 committed by GitHub
parent 8ef1400810
commit 07f2ed94f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 12 deletions

View File

@ -0,0 +1,15 @@
[Unit]
Description=Force symlink creation for AWS nvme disks
Before=prepare-state-disk.service
After=network-online.target
Wants=network-online.target
ConditionKernelCommandLine=constel.csp=aws
[Service]
Type=oneshot
ExecStart=/bin/bash /usr/sbin/aws-nvme-disk
RemainAfterExit=yes
StandardOutput=tty
StandardInput=tty
StandardError=tty
TimeoutSec=infinity

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
# Copyright (c) Edgeless Systems GmbH
#
# SPDX-License-Identifier: AGPL-3.0-only
set -euo pipefail
shopt -s extglob nullglob
AWS_STATE_DISK_DEVICENAME="sdb"
AWS_STATE_DISK_SYMLINK="/dev/${AWS_STATE_DISK_DEVICENAME}"
# hack: aws nvme udev rules are never executed. Create symlinks for the nvme devices manually.
while [ ! -L "${AWS_STATE_DISK_SYMLINK}" ]
do
for nvmedisk in /dev/nvme*n1
do
linkname=$(nvme amzn id-ctrl -b "${nvmedisk}" | tail -c +3072 | tr -d ' ') || true
if [ -n "${linkname}" ] && [ "${linkname}" == "${AWS_STATE_DISK_DEVICENAME}" ]; then
ln -s "${nvmedisk}" "${AWS_STATE_DISK_SYMLINK}"
fi
done
if [ -L "${AWS_STATE_DISK_SYMLINK}" ]; then
break
fi
echo "Waiting for state disk to appear.."
sleep 2
done
echo "AWS state disk found"
echo ${AWS_STATE_DISK_SYMLINK}$(readlink -f "${AWS_STATE_DISK_SYMLINK}")

View File

@ -33,6 +33,11 @@ install() {
install_and_enable_unit "configure-constel-csp.service" \
"basic.target"
# aws nvme disks
inst_multiple \
tail \
tr
# azure scsi disks
inst_multiple \
cut \
@ -57,16 +62,8 @@ install() {
inst_simple "/usr/lib/udev/rules.d/65-gce-disk-naming.rules" \
"/usr/lib/udev/rules.d/65-gce-disk-naming.rules"
inst_script "/usr/sbin/ebsnvme-id" \
"/usr/sbin/ebsnvme-id"
inst_script "/usr/bin/ec2-metadata" \
"/usr/bin/ec2-metadata"
inst_script "/usr/lib/udev/ec2nvme-nsid" \
"/usr/lib/udev/ec2nvme-nsid"
inst_script "/usr/lib/udev/ec2nvme-nsid" \
"/usr/sbin/ec2nvme-nsid"
inst_script "/usr/sbin/ec2udev-vbd" \
"/usr/sbin/ec2udev-vbd"
inst_simple "/usr/lib/udev/rules.d/70-ec2-nvme-devices.rules" \
"/usr/lib/udev/rules.d/70-ec2-nvme-devices.rules"
inst_script "$moddir/aws-nvme-disk.sh" \
"/usr/sbin/aws-nvme-disk"
install_and_enable_unit "aws-nvme-disk.service" \
"basic.target"
}