-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Fedor Baart
committed
Aug 28, 2017
1 parent
07e64eb
commit bfb168b
Showing
1 changed file
with
103 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
################################################################################################### | ||
#### Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
#### | ||
#### Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file | ||
#### except in compliance with the License. A copy of the License is located at | ||
#### | ||
#### http://aws.amazon.com/apache2.0/ | ||
#### | ||
#### or in the "license" file accompanying this file. This file is distributed on an "AS IS" | ||
#### BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||
#### License for the specific language governing permissions and limitations under the License. | ||
################################################################################################### | ||
|
||
################################################################################################### | ||
#### This configuration file mounts an Amazon EFS file system to a directory named /efs. To mount | ||
#### the file system to a different path, modify the MOUNT_DIRECTORY value in the "option_settings" | ||
#### section. | ||
#### | ||
#### The FILE_SYSTEM_ID setting references a resource named "FileSystem", which is created by the | ||
#### storage-efs-createfilesystem.config configuration file. To use this file to mount a | ||
#### file system that you created outside of AWS Elastic Beanstalk, replace the Ref with the | ||
#### resource ID (e.g., fs-e7605f4e): | ||
#### | ||
#### FILE_SYSTEM_ID: fs-e7605f4e | ||
#### | ||
#### If your environment and file system are in a custom VPC, you must configure the VPC to allow | ||
#### DNS resolution and DNS host names. See this topic in the VPC User Guide for more information: | ||
#### http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html | ||
################################################################################################### | ||
|
||
option_settings: | ||
aws:elasticbeanstalk:application:environment: | ||
FILE_SYSTEM_ID: '`{"Ref" : "FileSystem"}`' | ||
MOUNT_DIRECTORY: '/efs' | ||
|
||
############################################## | ||
#### Do not modify values below this line #### | ||
############################################## | ||
REGION: '`{"Ref": "AWS::Region"}`' | ||
|
||
packages: | ||
yum: | ||
nfs-utils: [] | ||
jq: [] | ||
|
||
commands: | ||
01_mount: | ||
command: "/tmp/mount-efs.sh" | ||
|
||
files: | ||
"/tmp/mount-efs.sh": | ||
mode: "000755" | ||
content : | | ||
#!/bin/bash | ||
|
||
EFS_REGION=$(/opt/elasticbeanstalk/bin/get-config environment | jq -r '.REGION') | ||
EFS_MOUNT_DIR=$(/opt/elasticbeanstalk/bin/get-config environment | jq -r '.MOUNT_DIRECTORY') | ||
EFS_FILE_SYSTEM_ID=$(/opt/elasticbeanstalk/bin/get-config environment | jq -r '.FILE_SYSTEM_ID') | ||
|
||
echo "Mounting EFS filesystem ${EFS_DNS_NAME} to directory ${EFS_MOUNT_DIR} ..." | ||
|
||
echo 'Stopping NFS ID Mapper...' | ||
service rpcidmapd status &> /dev/null | ||
if [ $? -ne 0 ] ; then | ||
echo 'rpc.idmapd is already stopped!' | ||
else | ||
service rpcidmapd stop | ||
if [ $? -ne 0 ] ; then | ||
echo 'ERROR: Failed to stop NFS ID Mapper!' | ||
exit 1 | ||
fi | ||
fi | ||
|
||
echo 'Checking if EFS mount directory exists...' | ||
if [ ! -d ${EFS_MOUNT_DIR} ]; then | ||
echo "Creating directory ${EFS_MOUNT_DIR} ..." | ||
mkdir -p ${EFS_MOUNT_DIR} | ||
if [ $? -ne 0 ]; then | ||
echo 'ERROR: Directory creation failed!' | ||
exit 1 | ||
fi | ||
chmod 777 ${EFS_MOUNT_DIR} | ||
if [ $? -ne 0 ]; then | ||
echo 'ERROR: Permission update failed!' | ||
exit 1 | ||
fi | ||
else | ||
echo "Directory ${EFS_MOUNT_DIR} already exists!" | ||
fi | ||
|
||
mountpoint -q ${EFS_MOUNT_DIR} | ||
if [ $? -ne 0 ]; then | ||
echo "mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${EFS_FILE_SYSTEM_ID}.efs.${EFS_REGION}.amazonaws.com:/ ${EFS_MOUNT_DIR}" | ||
mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${EFS_FILE_SYSTEM_ID}.efs.${EFS_REGION}.amazonaws.com:/ ${EFS_MOUNT_DIR} | ||
if [ $? -ne 0 ] ; then | ||
echo 'ERROR: Mount command failed!' | ||
exit 1 | ||
fi | ||
else | ||
echo "Directory ${EFS_MOUNT_DIR} is already a valid mountpoint!" | ||
fi | ||
|
||
echo 'EFS mount complete.' |