Пользовательские данные AWS EC2 - как отладить сбой при монтировании EFS

Я использую том EFS на своем экземпляре EC2 (Amazon linux AMI). Я могу смонтировать том без проблем, если я подключусь к серверу и запущу что-то вроде:

sudo mount -t nfs -o nfsvers = 4.1, rsize = 1048576, wsize = 1048576, hard, timeo = 600, retrans = 2 fs-xxxxxxxxx.efs.ap-southeast-2.amazonaws.com:/ efs

Но если я добавлю сценарий оболочки в раздел пользовательских данных своего экземпляра и загружу его, я ничего не получу, как я могу его отладить? Есть ли какие-то журналы или что-то в файловой системе, на которые я могу посмотреть? Я не получаю ошибок, просто нет подключенного диска. Любая помощь приветствуется.

Я использую следующий сценарий оболочки:

#!/bin/bash
# Make sure all packages are up-to-date
yum update -y

# Make sure that NFS utilities and AWS CLI utilities are available
yum install -y jq nfs-utils python27 python27-pip awscli
pip install --upgrade awscli

# Name of the EFS filesystem (match what was created in EFS)
EFS_FILE_SYSTEM_NAME="xxxx.efs.ap-southeast-2.amazonaws.com"

# Gets the EC2 availability zone for the current ECS instance

EC2_AVAIL_ZONE="ap-southeast-2b"
# Gets the EC2 region for the current ECS instance

EC2_REGION="Asia Pacific (Sydney)"

# Creates the mount-point for the EFS filesystem
DIR_TGT="efs"
mkdir "${DIR_TGT}"

# Get the EFS filesystem ID.
EFS_FILE_SYSTEM_ID="$(/usr/local/bin/aws efs describe-file-systems --region "${EC2_REGION}" | jq '.FileSystems[]' | jq "select(.Name==\"${EFS_FILE_SYSTEM_NAME}\")" | jq -r '.FileSystemId')"

if [ -z "${EFS_FILE_SYSTEM_ID}" ]; then
    echo "ERROR: variable not set" 1> /etc/efssetup.log
    exit
fi

# Create the mount source path
DIR_SRC="${EC2_AVAIL_ZONE}.${EFS_FILE_SYSTEM_ID}.efs.${EC2_REGION}.amazonaws.com"

# Actually mount the EFS filesystem
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,soft,timeo=600,retrans=2 "${DIR_SRC}:/" "${DIR_TGT}"

# Create a backup of the existing /etc/fstab
cp -p "/etc/fstab" "/etc/fstab.back-$(date +%F)"

# Add the new mount point to /etc/fstab
echo -e "${DIR_SRC}:/ \t\t ${DIR_TGT} \t\t nfs \t\t nfsvers=4.1,rsize=1048576,wsize=1048576,soft,timeo=600,retrans=2 \t\t 0 \t\t 0" | tee -a /etc/fstab

person Jimi    schedule 21.03.2018    source источник
comment
DIR_TGT="efs" должен быть абсолютным путем к существующему каталогу, например DIR_TGT="/srv/efs"   -  person Michael - sqlbot    schedule 22.03.2018


Ответы (1)


вы можете найти UserData журналы на cloud-init-output.log

/var/log/cloud-init.log and
/var/log/cloud-init-output.log

Ваш EC2_REGION должен быть ap-southeast-2, а не Asia Pacific (Sydney). Поскольку вы уже упомянули имя конечной точки, вам не нужно создавать конечную точку EFS.

mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,soft,timeo=600,retrans=2 "${EFS_FILE_SYSTEM_NAME}:/" "${DIR_TGT}"

Если вы хотите построить его, используйте следующий Соглашение о конечной точке EFS DNS:

file-system-id.efs.aws-region.amazonaws.com

Так и должно быть

DIR_SRC="${EFS_FILE_SYSTEM_ID}.efs.${EC2_REGION}.amazonaws.com"
person Sudharsan Sivasankaran    schedule 21.03.2018
comment
спасибо за исчерпывающий ответ. Я сейчас просто прорабатываю код, чтобы отладить это. - person Jimi; 23.03.2018
comment
Привет, @Sudharsan, я не вижу в журналах ничего, что связано с не монтируемой файловой системой. Кажется, это не вызывает у меня ошибок. Просто диск не монтируется. Где еще можно это найти? - person Jimi; 27.03.2018
comment
Вы видите свой echo? вы можете попробовать запустить скрипт вручную один раз, чтобы увидеть, есть ли какие-либо ошибки. - person Sudharsan Sivasankaran; 27.03.2018