scwrypts/zsh/aws/efs/mount
yage fa9bb38462 [RELEASE] v1.0.0
=====================================================================

Finally decided to port personal scripts into a standalone library.

--- Release Notes ------------------------

- added support for python, zsh, and zx scripts
- added support for "interactive" scripts which drop the user to a REPL
- added support for passing arguments to commands
- added support for python/node virtualenv management through scwrypts
- added contributing and usage docs
- updated zsh plugin to write commands to history
- licensed under GPLv3

--- New Scripts --------------------------

zsh/scwrypts )
  - configure
  - environment/copy
  - environment/delete
  - environment/edit
  - environment/synchronize
  - logs/clear
  - logs/view

zsh )
  - aws/ecr/login
  - aws/efs/mount
  - aws/efs/unmount
  - aws/route53/backup
  - aws/s3/media-sync/pull
  - aws/s3/media-sync/push

python )
  - redis/interactive

=====================================================================
2022-05-02 17:07:07 -06:00

65 lines
1.7 KiB
Bash
Executable File

#!/bin/zsh
source ${0:a:h}/common.zsh
__CHECK_IMPORTS
#####################################################################
_EFS_CONNECT() {
__GETSUDO || exit 1
[ ! -d $AWS__EFS__LOCAL_MOUNT_POINT ] && {
sudo mkdir $AWS__EFS__LOCAL_MOUNT_POINT \
&& __STATUS "created local mount point '$AWS__EFS__LOCAL_MOUNT_POINT'"
}
local FS_ID=$(\
_AWS efs describe-file-systems \
| jq -r '.[] | .[] | .FileSystemId' \
| __FZF 'select a filesystem to mount' \
)
[ ! $FS_ID ] && __ABORT
local MOUNT_POINT="$AWS__EFS__LOCAL_MOUNT_POINT/$FS_ID"
[ -d "$MOUNT_POINT" ] && {
__STATUS "$FS_ID is already mounted"
exit 0
}
local MOUNT_TARGETS=$(_AWS efs describe-mount-targets --file-system-id $FS_ID)
local ZONE=$(\
echo $MOUNT_TARGETS \
| jq -r '.[] | .[] | .AvailabilityZoneName' \
| sort -u | __FZF 'select availability zone'\
)
[ ! $ZONE ] && __ABORT
local MOUNT_IP=$(\
echo $MOUNT_TARGETS \
| jq -r ".[] | .[] | select (.AvailabilityZoneName == \"$ZONE\") | .IpAddress" \
| head -n1 \
)
__SUCCESS 'ready to mount!'
__REMINDER 'your device must be connected to the appropriate VPN'
__STATUS "file system id : $FS_ID"
__STATUS "availability zone : $ZONE"
__STATUS "file system ip : $MOUNT_IP"
__STATUS "local mount point : $MOUNT_POINT"
__Yn 'proceed?' || __ABORT
sudo mkdir $MOUNT_POINT \
&& sudo mount \
-t nfs4 \
-o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport \
$MOUNT_IP:/ \
"$MOUNT_POINT" \
&& __SUCCESS "mounted at '$MOUNT_POINT'" \
|| {
sudo rmdir $MOUNT_POINT >/dev/null 2>&1
__FAIL 2 "unable to mount '$FS_ID'"
}
}
#####################################################################
_EFS_CONNECT