From 231c9181f6d0442c1cd9cd760899c0e97e582c46 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 11 May 2021 08:41:44 -0700 Subject: [PATCH 01/24] Added database and cache type parameters and removed S3 paths. --- templates/00-master.yaml | 46 +++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/templates/00-master.yaml b/templates/00-master.yaml index 6352da9..27e2102 100644 --- a/templates/00-master.yaml +++ b/templates/00-master.yaml @@ -52,6 +52,7 @@ Metadata: - Label: default: Database Tier Parameters: + - DatabaseType - DatabaseInstanceType - DatabaseEncrpytedBoolean - DatabaseCmk @@ -61,6 +62,7 @@ Metadata: - Label: default: Caching Tier Parameters: + - CacheType - UseSessionCacheBoolean - SessionCacheNodeType - UseApplicationCacheBoolean @@ -292,6 +294,13 @@ Parameters: DatabaseCmk: Description: AWS KMS Customer Master Key (CMK) to encrypt database cluster Type: String + DatabaseType: + AllowedValues: + - MySQL + - PostgreSQL + Default: PostgreSQL + Description: Indicates whether to use Aurora MySQL or PostgreSQL. + Type: String DatabaseEncrpytedBoolean: AllowedValues: - true @@ -453,6 +462,13 @@ Parameters: Default: r4.large Description: The Amazon EC2 instance type that adds data to the file system. Type: String + CacheType: + AllowedValues: + - Redis + - Memcached + Default: Memcached + Description: Indicates whether to use ElastiCache Memcached or Redis. + Type: String UseSessionCacheBoolean: AllowedValues: - true @@ -865,7 +881,7 @@ Resources: !Ref DataSubnet4Cidr DataSubnet5Cidr: !Ref DataSubnet5Cidr - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/01-newvpc.yaml + TemplateURL: 01-newvpc.yaml securitygroups: DependsOn: vpc Type: AWS::CloudFormation::Stack @@ -875,7 +891,7 @@ Resources: !Ref SshAccessCidr Vpc: !GetAtt [ vpc, Outputs.Vpc ] - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/02-securitygroups.yaml + TemplateURL: 02-securitygroups.yaml bastion: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -891,7 +907,7 @@ Resources: !Ref NumberOfAZs Subnet: !GetAtt [ vpc, Outputs.PublicSubnet ] - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/03-bastion.yaml + TemplateURL: 03-bastion.yaml publicalb: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -907,12 +923,14 @@ Resources: !GetAtt [ securitygroups, Outputs.PublicAlbSecurityGroup ] Vpc: !GetAtt [ vpc, Outputs.Vpc ] - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/03-publicalb.yaml + TemplateURL: 03-publicalb.yaml rds: DependsOn: [ securitygroups ] Type: AWS::CloudFormation::Stack Properties: Parameters: + DatabaseType: + !Ref DatabaseType DatabaseInstanceType: !Ref DatabaseInstanceType # DatabaseMasterUsername: @@ -931,7 +949,7 @@ Resources: !GetAtt [ vpc, Outputs.DataSubnet ] NumberOfSubnets: !Ref NumberOfAZs - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/03-rds.yaml + TemplateURL: 03-rds.yaml efsfilesystem: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -955,13 +973,15 @@ Resources: !Ref EfsPerformanceMode Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/03-efsfilesystem.yaml + TemplateURL: 03-efsfilesystem.yaml sessioncache: Condition: DeployWithSessionCache DependsOn: securitygroups Type: AWS::CloudFormation::Stack Properties: Parameters: + CacheType: + !Ref CacheType Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] ElastiCacheClusterName: @@ -972,13 +992,15 @@ Resources: !GetAtt [ securitygroups, Outputs.ElastiCacheSecurityGroup ] NumberOfSubnets: !Ref NumberOfAZs - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/03-elasticache.yaml + TemplateURL: 03-elasticache.yaml applicationcache: Condition: DeployApplicationCache DependsOn: securitygroups Type: AWS::CloudFormation::Stack Properties: Parameters: + CacheType: + !Ref CacheType Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] ElastiCacheClusterName: @@ -989,7 +1011,7 @@ Resources: !GetAtt [ securitygroups, Outputs.ElastiCacheSecurityGroup ] NumberOfSubnets: !Ref NumberOfAZs - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/03-elasticache.yaml + TemplateURL: 03-elasticache.yaml webnocache: DependsOn: [ publicalb, rds, efsfilesystem ] Condition: DeployWithoutSessionCache @@ -1032,7 +1054,7 @@ Resources: !Ref MoodleLocale ElastiCacheClusterEndpointAddress: '' - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/04-web.yaml + TemplateURL: 04-web.yaml webcached: DependsOn: [ publicalb, rds, efsfilesystem, sessioncache ] Condition: DeployWithSessionCache @@ -1075,7 +1097,7 @@ Resources: !Ref MoodleLocale ElastiCacheClusterEndpointAddress: !GetAtt sessioncache.Outputs.ElastiCacheClusterEndpointAddress - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/04-web.yaml + TemplateURL: 04-web.yaml cloudfront: Condition: DeployCloudFront DependsOn: publicalb @@ -1088,7 +1110,7 @@ Resources: !GetAtt [ publicalb, Outputs.PublicAlbDnsName ] DomainName: !Ref DomainName - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/04-cloudfront.yaml + TemplateURL: 04-cloudfront.yaml route53: Condition: DeployRoute53 DependsOn: publicalb @@ -1103,7 +1125,7 @@ Resources: !Ref HostedZoneName DomainName: !Ref DomainName - TemplateURL: https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/05-route53.yaml + TemplateURL: 05-route53.yaml Outputs: DnsName: From 9b5b37ea9a32b3c6a0c005e21924540c887845af Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 11 May 2021 10:10:41 -0700 Subject: [PATCH 02/24] Added initial support for Aurora MySQL Support. --- templates/03-rds.yaml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/templates/03-rds.yaml b/templates/03-rds.yaml index 547e89e..61ad272 100644 --- a/templates/03-rds.yaml +++ b/templates/03-rds.yaml @@ -1,7 +1,7 @@ --- AWSTemplateFormatVersion: 2010-09-09 -Description: Reference Architecture to host Moodle on AWS - Creates RDS Aurora PostgreSQL database cluster +Description: Reference Architecture to host Moodle on AWS - Creates RDS Aurora MySQL or PostgreSQL database cluster Metadata: AWS::CloudFormation::Interface: @@ -9,6 +9,7 @@ Metadata: - Label: default: Database Parameters Parameters: + - DatabaseType - DatabaseInstanceType # - DatabaseMasterUsername # - DatabaseMasterPassword @@ -19,6 +20,8 @@ Metadata: - NumberOfSubnets - Subnet ParameterLabels: + DatabaseType: + default: Aurora database type DatabaseEncrpytedBoolean: default: Encrypted DB Cluster DatabaseCmk: @@ -95,13 +98,16 @@ Parameters: - 6 Default: 3 Description: Number of subnets. This must match your selections in the list of subnets below. - Type: String + Type: String Subnet: Description: Select existing subnets. The number selected must match the number of subnets above. Subnets selected must be in separate AZs. Type: List Conditions: - + UseMySQL: + !Equals [!Ref DatabaseType, MySQL] + UsePostgreSQL: + !Equals [!Ref DatabaseType, PostgreSQL] NumberOfSubnets1: !Equals [ 1, !Ref NumberOfSubnets ] NumberOfSubnets2: @@ -156,6 +162,9 @@ Resources: !If [ UseAWS-ManagedCMK, !Ref 'AWS::NoValue', !Ref DatabaseCmk ] MasterUsername: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSInstanceSecretArn, ':SecretString:username}}' ]] MasterUserPassword: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSInstanceSecretArn, ':SecretString:password}}' ]] + Port: + !If [ UsePostgreSQL, 5432, 3306 ] + Port: 5432 StorageEncrypted: !Ref DatabaseEncrpytedBoolean Tags: @@ -172,7 +181,8 @@ Resources: DBClusterIdentifier: !Ref DatabaseCluster DBInstanceClass: !Ref DatabaseInstanceType DBSubnetGroupName: !Ref DataSubnetGroup - Engine: aurora-postgresql + Engine: + !If [ UsePostgreSQL, aurora-postgresql, aurora-mysql ] Tags: - Key: Name Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] @@ -185,7 +195,8 @@ Resources: DBClusterIdentifier: !Ref DatabaseCluster DBInstanceClass: !Ref DatabaseInstanceType DBSubnetGroupName: !Ref DataSubnetGroup - Engine: aurora-postgresql + Engine: + !If [ UsePostgreSQL, aurora-postgresql, aurora-mysql ] Tags: - Key: Name Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] @@ -232,5 +243,7 @@ Outputs: Value: !Ref DataSubnetGroup DatabaseClusterEndpointAddress: Value: !GetAtt DatabaseCluster.Endpoint.Address + DatabaseClusterEndpointPort: + Value: !GetAtt DatabaseCluster.Endpoint.Port From e794e2df05f390020780a2b56453a349ab8784eb Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 11 May 2021 10:18:19 -0700 Subject: [PATCH 03/24] Added S3 deployment path parameter for testing. --- templates/00-master.yaml | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/templates/00-master.yaml b/templates/00-master.yaml index 27e2102..b035dfc 100644 --- a/templates/00-master.yaml +++ b/templates/00-master.yaml @@ -11,6 +11,7 @@ Metadata: - Label: default: General AWS Parameters: + - DeploymentLocation - EC2KeyName - SshAccessCidr - HostedZoneName @@ -85,6 +86,8 @@ Metadata: Parameters: - MoodleLocale ParameterLabels: + DeploymentLocation: + default: Location to deploy from (S3 URL) BastionInstanceType: default: Bastion Instance Type CloudFrontAcmCertificate: @@ -188,6 +191,9 @@ Metadata: Parameters: + DeploymentLocation: + Description: Location to deploy from (S3 URL) + Type: String BastionInstanceType: AllowedValues: - t2.nano @@ -881,7 +887,7 @@ Resources: !Ref DataSubnet4Cidr DataSubnet5Cidr: !Ref DataSubnet5Cidr - TemplateURL: 01-newvpc.yaml + TemplateURL: !Sub '${DeploymentLocation}/01-newvpc.yaml' securitygroups: DependsOn: vpc Type: AWS::CloudFormation::Stack @@ -891,7 +897,7 @@ Resources: !Ref SshAccessCidr Vpc: !GetAtt [ vpc, Outputs.Vpc ] - TemplateURL: 02-securitygroups.yaml + TemplateURL: !Sub '${DeploymentLocation}/02-securitygroups.yaml' bastion: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -907,7 +913,7 @@ Resources: !Ref NumberOfAZs Subnet: !GetAtt [ vpc, Outputs.PublicSubnet ] - TemplateURL: 03-bastion.yaml + TemplateURL: !Sub '${DeploymentLocation}/03-bastion.yaml' publicalb: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -923,7 +929,7 @@ Resources: !GetAtt [ securitygroups, Outputs.PublicAlbSecurityGroup ] Vpc: !GetAtt [ vpc, Outputs.Vpc ] - TemplateURL: 03-publicalb.yaml + TemplateURL: !Sub '${DeploymentLocation}/03-publicalb.yaml' rds: DependsOn: [ securitygroups ] Type: AWS::CloudFormation::Stack @@ -949,7 +955,7 @@ Resources: !GetAtt [ vpc, Outputs.DataSubnet ] NumberOfSubnets: !Ref NumberOfAZs - TemplateURL: 03-rds.yaml + TemplateURL: !Sub '${DeploymentLocation}/03-rds.yaml' efsfilesystem: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -973,7 +979,7 @@ Resources: !Ref EfsPerformanceMode Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] - TemplateURL: 03-efsfilesystem.yaml + TemplateURL: !Sub '${DeploymentLocation}/03-efsfilesystem.yaml' sessioncache: Condition: DeployWithSessionCache DependsOn: securitygroups @@ -992,7 +998,7 @@ Resources: !GetAtt [ securitygroups, Outputs.ElastiCacheSecurityGroup ] NumberOfSubnets: !Ref NumberOfAZs - TemplateURL: 03-elasticache.yaml + TemplateURL: !Sub '${DeploymentLocation}/03-elasticache.yaml' applicationcache: Condition: DeployApplicationCache DependsOn: securitygroups @@ -1011,7 +1017,7 @@ Resources: !GetAtt [ securitygroups, Outputs.ElastiCacheSecurityGroup ] NumberOfSubnets: !Ref NumberOfAZs - TemplateURL: 03-elasticache.yaml + TemplateURL: !Sub '${DeploymentLocation}/03-elasticache.yaml' webnocache: DependsOn: [ publicalb, rds, efsfilesystem ] Condition: DeployWithoutSessionCache @@ -1054,7 +1060,7 @@ Resources: !Ref MoodleLocale ElastiCacheClusterEndpointAddress: '' - TemplateURL: 04-web.yaml + TemplateURL: !Sub '${DeploymentLocation}/04-web.yaml' webcached: DependsOn: [ publicalb, rds, efsfilesystem, sessioncache ] Condition: DeployWithSessionCache @@ -1097,7 +1103,7 @@ Resources: !Ref MoodleLocale ElastiCacheClusterEndpointAddress: !GetAtt sessioncache.Outputs.ElastiCacheClusterEndpointAddress - TemplateURL: 04-web.yaml + TemplateURL: !Sub '${DeploymentLocation}/04-web.yaml' cloudfront: Condition: DeployCloudFront DependsOn: publicalb @@ -1110,7 +1116,7 @@ Resources: !GetAtt [ publicalb, Outputs.PublicAlbDnsName ] DomainName: !Ref DomainName - TemplateURL: 04-cloudfront.yaml + TemplateURL: !Sub '${DeploymentLocation}/04-cloudfront.yaml' route53: Condition: DeployRoute53 DependsOn: publicalb @@ -1125,7 +1131,7 @@ Resources: !Ref HostedZoneName DomainName: !Ref DomainName - TemplateURL: 05-route53.yaml + TemplateURL: !Sub '${DeploymentLocation}/05-route53.yaml' Outputs: DnsName: From 57b198639214ed66f86c8d5df35f1e98dd8258d1 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 11 May 2021 10:43:40 -0700 Subject: [PATCH 04/24] Added cachetype parameter. --- templates/03-elasticache.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/templates/03-elasticache.yaml b/templates/03-elasticache.yaml index 284f193..a46d745 100644 --- a/templates/03-elasticache.yaml +++ b/templates/03-elasticache.yaml @@ -10,12 +10,15 @@ Metadata: - Label: default: Cache Parameters Parameters: + - CacheType - ElastiCacheNodeType - ElastiCacheClusterName - ElastiCacheSecurityGroup - NumberOfSubnets - Subnet ParameterLabels: + CacheType: + default: Cache Type ElastiCacheClusterName: default: Cache Cluster Name ElastiCacheNodeType: From a4f0a5aebc6d7ae2749564b70eea460151aaba6a Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 11 May 2021 11:18:42 -0700 Subject: [PATCH 05/24] Parameter missing in ElastiCache and RDS templates. --- .DS_Store | Bin 0 -> 8196 bytes templates/03-elasticache.yaml | 8 +++++++- templates/03-rds.yaml | 8 +++++++- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5f51fd15ee1545732633c583dafbce830ef2fc64 GIT binary patch literal 8196 zcmeHMT}&KR6g~$iotc(0)K-|ag$)}lDzz-(PfP0pTM>mo3Y1@=v&>k=&d%V@EL)%` z>Wd~dK2=+zFPfMbd}?f;Otdeii9ZioZPoO_2OspsN2AfibMKucEk92tO47N>z31M0 z&Y649cfXmNvkL&&ku~A~6#yVnWm4Ti%?5?(SzT8Of|(+cNd5pe=-`71UMjcFI-Cd* z2oVSo2oVSo2ocx{2+*C)inPhSFSKDBA`l{QS0cc^4^gU2CIY!EB>!|!!&3l~ECt|& z`jiK7pJ*Txfm{}nyV5g7_JDya1}O##chX0hImtvImxUDWfWjRxSQ ^Mda7v<)F z2_eHaL?A?9Jp%0Yk$KLZhS}TmcW*XjyD8FMOU>Gr=hxTYz=Fb}ZN=LqR!XF&2WH&d zfUo;muS3s_vr)h9&!mF>pzGSJeLZ!;GILYvo=(^Cb;~g`+}ScrGMN~*9K+3ZxLL>W z_;Ut?LS|)3Eni%0YHF;Dwl*)-MHgFJ<8{%d*4CvZSt_rIAL%}so?lozyY&185gY~| z2q;|>?8S{EwY|Ac5oy7j`ABc(BbAjMTKAJm&xkecIs?{%Ii;3*6lgaM`!nVo1vNbF z+S#<@O{rzmx;>q>b>D2aZD#C^_~sd(^~O9m<9BkyDOJsS=5dqktT{7D*5taIJ*jWj zw_L|NVP-s%u|&NHKwjCocYpQ$57jq4`dIRM$*xkhY`3C}5k!t}J!6@fp`2y-Go!jU zZ90bKoEo09JS%0JgN~jy%dkn7uislzFE_uU0tK) zd304;mn4lcZM$L6u40K=fgguKR@nukK{Yf&8}!2{7?6W=a30=(cVPvtz{l_zd+zLFp3Xg6EJaK!)IN#ze z>TU3f5^;l9v|w^0;zl0tQj-5GalhXw*m}>Ny_K=rgAFZh?W?D{<{WP)6lam338zn< z9{eEh;3PYFEpnf-e=}YW5&O(D5~Gm1U06pW)e^Br<+RZvHIV}nQCltGTIInAS?ZEn zD2xv&afzs^ZWG!@rCBC2t3^Wlh;mpW&Z@;idsIot>~&K?jB6rESyFK=6F24I2XG0l z!k6$h@$VM=48Owf2q@t$tl-?M#u(P%!*~ee*no|A1dkF6+p!aSuowHVpO`p~6F7-e zs1p-Ub0*H>JTBl_Tp~ukg0B)EU&Ge}M!t>j;QP3;hJW38<_U=(Zp^>AfsA9j&MDI7 znR};WINIU}6pH;-u>Akn=D+`M@hHOWg$RTQ{2K(YC^?YqpeJnh9cQ_Al Date: Tue, 11 May 2021 14:24:25 -0700 Subject: [PATCH 06/24] Added MySQL support to rds.yaml. --- .gitignore | 1 + templates/03-rds.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/templates/03-rds.yaml b/templates/03-rds.yaml index e90d5b4..a402b8a 100644 --- a/templates/03-rds.yaml +++ b/templates/03-rds.yaml @@ -162,16 +162,16 @@ Resources: BackupRetentionPeriod: 30 DatabaseName: !Ref DatabaseName DBSubnetGroupName: !Ref DataSubnetGroup - Engine: aurora-postgresql - DBClusterParameterGroupName: default.aurora-postgresql11 + Engine: + !If [ UsePostgreSQL, aurora-postgresql, aurora-mysql ] + DBClusterParameterGroupName: + !If [ UsePostgreSQL, default.aurora-postgresql11, default.aurora-mysql5.7 ] KmsKeyId: !If [ UseAWS-ManagedCMK, !Ref 'AWS::NoValue', !Ref DatabaseCmk ] MasterUsername: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSInstanceSecretArn, ':SecretString:username}}' ]] MasterUserPassword: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSInstanceSecretArn, ':SecretString:password}}' ]] Port: !If [ UsePostgreSQL, 5432, 3306 ] - - Port: 5432 StorageEncrypted: !Ref DatabaseEncrpytedBoolean Tags: - Key: Name From 51bca78637795e1015b67d7949adc0d391575148 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 11 May 2021 14:25:28 -0700 Subject: [PATCH 07/24] Removed .DS_Store --- .DS_Store | Bin 8196 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5f51fd15ee1545732633c583dafbce830ef2fc64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMT}&KR6g~$iotc(0)K-|ag$)}lDzz-(PfP0pTM>mo3Y1@=v&>k=&d%V@EL)%` z>Wd~dK2=+zFPfMbd}?f;Otdeii9ZioZPoO_2OspsN2AfibMKucEk92tO47N>z31M0 z&Y649cfXmNvkL&&ku~A~6#yVnWm4Ti%?5?(SzT8Of|(+cNd5pe=-`71UMjcFI-Cd* z2oVSo2oVSo2ocx{2+*C)inPhSFSKDBA`l{QS0cc^4^gU2CIY!EB>!|!!&3l~ECt|& z`jiK7pJ*Txfm{}nyV5g7_JDya1}O##chX0hImtvImxUDWfWjRxSQ ^Mda7v<)F z2_eHaL?A?9Jp%0Yk$KLZhS}TmcW*XjyD8FMOU>Gr=hxTYz=Fb}ZN=LqR!XF&2WH&d zfUo;muS3s_vr)h9&!mF>pzGSJeLZ!;GILYvo=(^Cb;~g`+}ScrGMN~*9K+3ZxLL>W z_;Ut?LS|)3Eni%0YHF;Dwl*)-MHgFJ<8{%d*4CvZSt_rIAL%}so?lozyY&185gY~| z2q;|>?8S{EwY|Ac5oy7j`ABc(BbAjMTKAJm&xkecIs?{%Ii;3*6lgaM`!nVo1vNbF z+S#<@O{rzmx;>q>b>D2aZD#C^_~sd(^~O9m<9BkyDOJsS=5dqktT{7D*5taIJ*jWj zw_L|NVP-s%u|&NHKwjCocYpQ$57jq4`dIRM$*xkhY`3C}5k!t}J!6@fp`2y-Go!jU zZ90bKoEo09JS%0JgN~jy%dkn7uislzFE_uU0tK) zd304;mn4lcZM$L6u40K=fgguKR@nukK{Yf&8}!2{7?6W=a30=(cVPvtz{l_zd+zLFp3Xg6EJaK!)IN#ze z>TU3f5^;l9v|w^0;zl0tQj-5GalhXw*m}>Ny_K=rgAFZh?W?D{<{WP)6lam338zn< z9{eEh;3PYFEpnf-e=}YW5&O(D5~Gm1U06pW)e^Br<+RZvHIV}nQCltGTIInAS?ZEn zD2xv&afzs^ZWG!@rCBC2t3^Wlh;mpW&Z@;idsIot>~&K?jB6rESyFK=6F24I2XG0l z!k6$h@$VM=48Owf2q@t$tl-?M#u(P%!*~ee*no|A1dkF6+p!aSuowHVpO`p~6F7-e zs1p-Ub0*H>JTBl_Tp~ukg0B)EU&Ge}M!t>j;QP3;hJW38<_U=(Zp^>AfsA9j&MDI7 znR};WINIU}6pH;-u>Akn=D+`M@hHOWg$RTQ{2K(YC^?YqpeJnh9cQ_Al Date: Tue, 11 May 2021 19:35:09 -0700 Subject: [PATCH 08/24] Added DatabaseClusterReadEndpointAddress output value. --- templates/03-rds.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/03-rds.yaml b/templates/03-rds.yaml index a402b8a..5980961 100644 --- a/templates/03-rds.yaml +++ b/templates/03-rds.yaml @@ -251,5 +251,6 @@ Outputs: Value: !GetAtt DatabaseCluster.Endpoint.Address DatabaseClusterEndpointPort: Value: !GetAtt DatabaseCluster.Endpoint.Port - + DatabaseClusterReadEndpointAddress: + Value: !GetAtt DatabaseCluster.ReadEndpoint.Address From 3da56c2ae939ddfd5525e20751678e94fcc4af55 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Wed, 12 May 2021 13:21:12 -0700 Subject: [PATCH 09/24] Added support for Redis based on CacheType parameter. --- templates/03-elasticache.yaml | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/templates/03-elasticache.yaml b/templates/03-elasticache.yaml index f9aaada..671b498 100644 --- a/templates/03-elasticache.yaml +++ b/templates/03-elasticache.yaml @@ -89,7 +89,10 @@ Parameters: Type: List Conditions: - + UseRedis: + !Equals [!Ref CacheType, Redis] + UseMemcached: + !Equals [!Ref CacheType, Memcached] NumberOfSubnets1: !Equals [ 1, !Ref NumberOfSubnets ] NumberOfSubnets2: @@ -130,8 +133,25 @@ Conditions: Subnet5: !Condition NumberOfSubnets6 Resources: - - ElastiCacheCluster: + ElastiCacheClusterRedis: + Condition: UseRedis + Type: AWS::ElastiCache::ReplicationGroup + Properties: + ReplicationGroupId: !Ref ElastiCacheClusterName + ReplicationGroupDescription: !Ref ElastiCacheClusterName + AtRestEncryptionEnabled: true + TransitEncryptionEnabled: false + AutoMinorVersionUpgrade: true + MultiAZEnabled: true + CacheNodeType: !Ref ElastiCacheNodeType + CacheSubnetGroupName: !Ref ElastiCacheSubnetGroup + SecurityGroupIds: + - !Ref ElastiCacheSecurityGroup + Engine: redis + NumCacheClusters: + !Ref NumberOfSubnets + ElastiCacheClusterMemcached: + Condition: UseMemcached Type: AWS::ElastiCache::CacheCluster Properties: AZMode: cross-az @@ -175,4 +195,4 @@ Resources: ] Outputs: ElastiCacheClusterEndpointAddress: - Value: !GetAtt ElastiCacheCluster.ConfigurationEndpoint.Address + Value: !If [UseRedis, !GetAtt ElastiCacheClusterRedis.ConfigurationEndPoint.Address, !GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Address ] \ No newline at end of file From ac5ad16b66a50417e359d8af4a8106f96cd6fedb Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Wed, 12 May 2021 14:45:46 -0700 Subject: [PATCH 10/24] Corrected output value. --- templates/03-elasticache.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/03-elasticache.yaml b/templates/03-elasticache.yaml index 671b498..31fa83a 100644 --- a/templates/03-elasticache.yaml +++ b/templates/03-elasticache.yaml @@ -195,4 +195,4 @@ Resources: ] Outputs: ElastiCacheClusterEndpointAddress: - Value: !If [UseRedis, !GetAtt ElastiCacheClusterRedis.ConfigurationEndPoint.Address, !GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Address ] \ No newline at end of file + Value: !If [UseRedis, !GetAtt ElastiCacheClusterRedis.PrimaryEndPoint.Address, !GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Address ] \ No newline at end of file From f3f31ab0e6654b9f95de7545fea2f9432d85936a Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Wed, 26 May 2021 12:33:29 -0700 Subject: [PATCH 11/24] Switched to Launch Template. --- templates/04-web.yaml | 75 +++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/templates/04-web.yaml b/templates/04-web.yaml index 6fb7a2f..cf4c12a 100644 --- a/templates/04-web.yaml +++ b/templates/04-web.yaml @@ -372,10 +372,12 @@ Resources: WebAutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: - Cooldown: 60 + Cooldown: '60' HealthCheckGracePeriod: 120 HealthCheckType: ELB - LaunchConfigurationName: !Ref WebLaunchConfiguration + LaunchTemplate: + LaunchTemplateId: !Ref WebLaunchConfiguration + Version: !GetAtt WebLaunchConfiguration.LatestVersionNumber MaxSize: !Ref WebAsgMax MinSize: !Ref WebAsgMin Tags: @@ -417,7 +419,7 @@ Resources: AdjustmentType: ChangeInCapacity AutoScalingGroupName: Ref: WebAutoScalingGroup - Cooldown: 300 + Cooldown: '300' ScalingAdjustment: 1 CPUAlarmHigh: Type: AWS::CloudWatch::Alarm @@ -441,7 +443,7 @@ Resources: AdjustmentType: ChangeInCapacity AutoScalingGroupName: Ref: WebAutoScalingGroup - Cooldown: 300 + Cooldown: '300' ScalingAdjustment: -1 CPUAlarmLow: Type: AWS::CloudWatch::Alarm @@ -461,7 +463,7 @@ Resources: MetricName: CPUUtilization WebLaunchConfiguration: - Type: AWS::AutoScaling::LaunchConfiguration + Type: AWS::EC2::LaunchTemplate Metadata: AWS::CloudFormation::Init: configSets: @@ -565,7 +567,6 @@ Resources: enabled: 'true' ensureRunning: 'true' files: /etc/awslogs/awslogs.conf - install_aws_ini: commands: install_aws_ini: @@ -746,35 +747,39 @@ Resources: enabled: true ensureRunning: true Properties: - IamInstanceProfile: !Ref WebInstanceProfile - ImageId: !Ref LatestAmiId - InstanceMonitoring: true - InstanceType: !Ref WebInstanceType - KeyName: !Ref EC2KeyName - SecurityGroups: - - !Ref WebSecurityGroup - UserData: - "Fn::Base64": - !Sub | - #!/bin/bash -xe - yum update -y - - #Create directory structure - mkdir -p /var/www/moodle/html - mkdir -p /var/www/moodle/data - mkdir -p /var/www/moodle/cache - mkdir -p /var/www/moodle/temp - mkdir -p /var/www/moodle/local - - #Mount shared storage - mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/data /var/www/moodle/data - mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/cache /var/www/moodle/cache - mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/temp /var/www/moodle/temp - - #Run CloudFormation Init Scripts - /opt/aws/bin/cfn-init --configsets deploy_webserver --verbose --stack ${AWS::StackName} --resource WebLaunchConfiguration --region ${AWS::Region} - /opt/aws/bin/cfn-signal --exit-code $? --stack ${AWS::StackName} --resource WebAutoScalingGroup --region ${AWS::Region} - + LaunchTemplateData: + IamInstanceProfile: + Arn: !GetAtt WebInstanceProfile.Arn + ImageId: !Ref LatestAmiId + InstanceType: !Ref WebInstanceType + Monitoring: + Enabled: true + KeyName: !Ref EC2KeyName + SecurityGroupIds: + - !Ref WebSecurityGroup + CreditSpecification: + CpuCredits: standard + UserData: + Fn::Base64: + !Sub | + #!/bin/bash -xe + yum update -y + + #Create directory structure + mkdir -p /var/www/moodle/html + mkdir -p /var/www/moodle/data + mkdir -p /var/www/moodle/cache + mkdir -p /var/www/moodle/temp + mkdir -p /var/www/moodle/local + + #Mount shared storage + mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/data /var/www/moodle/data + mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/cache /var/www/moodle/cache + mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/temp /var/www/moodle/temp + + #Run CloudFormation Init Scripts + /opt/aws/bin/cfn-init --configsets deploy_webserver --verbose --stack ${AWS::StackName} --resource WebLaunchConfiguration --region ${AWS::Region} + /opt/aws/bin/cfn-signal --exit-code $? --stack ${AWS::StackName} --resource WebAutoScalingGroup --region ${AWS::Region} Outputs: From 726fc0f56efe55090c2af23884919ea9e4027ccd Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Thu, 27 May 2021 09:06:51 -0700 Subject: [PATCH 12/24] Create S3 artifact bucket. --- templates/03-s3.yaml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 templates/03-s3.yaml diff --git a/templates/03-s3.yaml b/templates/03-s3.yaml new file mode 100644 index 0000000..727f236 --- /dev/null +++ b/templates/03-s3.yaml @@ -0,0 +1,28 @@ +--- +AWSTemplateFormatVersion: 2010-09-09 + +Description: Reference Architecture to host Moodle on AWS - Creates S3 artifact bucket + +Metadata: + + AWS::CloudFormation::Interface: + ParameterGroups: + - Label: + default: S3 Parameters + Parameters: + - S3BucketName + ParameterLabels: + S3BucketName: + default: S3 Bucket Name + +Parameters: + S3BucketName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Description: The S3 Bucket name. + Type: String + +Resources: + S3Bucket: + Type: AWS::S3::Bucket + Properties: + BucketName: !Ref S3BucketName \ No newline at end of file From fd0cff36940948dbca5f52629a07ee76ebc37048 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Thu, 27 May 2021 09:16:10 -0700 Subject: [PATCH 13/24] Added S3 bucket output valiue. --- templates/03-s3.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/templates/03-s3.yaml b/templates/03-s3.yaml index 727f236..b0bf22a 100644 --- a/templates/03-s3.yaml +++ b/templates/03-s3.yaml @@ -17,7 +17,6 @@ Metadata: Parameters: S3BucketName: - AllowedPattern: ^([a-zA-Z0-9]*)$ Description: The S3 Bucket name. Type: String @@ -25,4 +24,8 @@ Resources: S3Bucket: Type: AWS::S3::Bucket Properties: - BucketName: !Ref S3BucketName \ No newline at end of file + BucketName: !Ref S3BucketName + +Outputs: + BucketName: + Value: !Ref S3Bucket \ No newline at end of file From b6016a7de2c63bb5d7f9abb6c24018d2ae66772a Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Thu, 27 May 2021 14:49:59 -0700 Subject: [PATCH 14/24] Added call to create S3 bucket template. --- templates/00-master.yaml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/templates/00-master.yaml b/templates/00-master.yaml index b035dfc..7ca64c5 100644 --- a/templates/00-master.yaml +++ b/templates/00-master.yaml @@ -898,6 +898,16 @@ Resources: Vpc: !GetAtt [ vpc, Outputs.Vpc ] TemplateURL: !Sub '${DeploymentLocation}/02-securitygroups.yaml' + + s3: + DependsOn: securitygroups + Type: AWS::CloudFormation::Stack + Properties: + Parameters: + S3BucketName: + !Sub '${AWS::StackName}' + TemplateURL: !Sub '${DeploymentLocation}/03-s3.yaml' + bastion: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -1132,7 +1142,7 @@ Resources: DomainName: !Ref DomainName TemplateURL: !Sub '${DeploymentLocation}/05-route53.yaml' - + Outputs: DnsName: Description: DNS name of the new load balancer for Moodle. From fd1a8e99bfde5058d0d5f5908bc0e24c3ea097f9 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 1 Jun 2021 16:25:10 -0700 Subject: [PATCH 15/24] Added template to create CodeCommit repo. --- templates/00-master.yaml | 10 ++++++++++ templates/03-codecommit.yaml | 35 +++++++++++++++++++++++++++++++++++ templates/03-s3.yaml | 3 +-- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 templates/03-codecommit.yaml diff --git a/templates/00-master.yaml b/templates/00-master.yaml index 7ca64c5..9ca3ddb 100644 --- a/templates/00-master.yaml +++ b/templates/00-master.yaml @@ -908,6 +908,16 @@ Resources: !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-s3.yaml' +codecommit: + DependsOn: s3 + Type: AWS::CloudFormation::Stack + Properties: + Parameters: + RepoName: + !Sub '${AWS::StackName}' + TemplateURL: !Sub '${DeploymentLocation}/03-codecommit.yaml' + + bastion: DependsOn: securitygroups Type: AWS::CloudFormation::Stack diff --git a/templates/03-codecommit.yaml b/templates/03-codecommit.yaml new file mode 100644 index 0000000..6d853c6 --- /dev/null +++ b/templates/03-codecommit.yaml @@ -0,0 +1,35 @@ +--- +AWSTemplateFormatVersion: 2010-09-09 + +Description: Reference Architecture to host Moodle on AWS - Creates AWS CodeCommit repository + +Metadata: + AWS::CloudFormation::Interface: + ParameterGroups: + - Label: + default: CodeCommit Parameters + Parameters: + - RepoName + ParameterLabels: + S3BucketName: + default: CodeCommit Repo Name + +Parameters: + RepoName: + Description: The CodeCommit repo name. + Type: String + +Resources: + MoodleRepo: + Type: AWS::CodeCommit::Repository + Properties: + RepositoryName: !Ref RepoName + RepositoryDescription: This is a repository for my project with code from MySourceCodeBucket. + +Outputs: + ReporArn: + Value: !GetAtt MoodleRepo.Arn + RepoHTTP: + Value: !GetAtt MoodleRepo.CloneUrlHttp + RepoName: + Value: !GetAtt MoodleRepo.Name \ No newline at end of file diff --git a/templates/03-s3.yaml b/templates/03-s3.yaml index b0bf22a..59dec61 100644 --- a/templates/03-s3.yaml +++ b/templates/03-s3.yaml @@ -4,7 +4,6 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Reference Architecture to host Moodle on AWS - Creates S3 artifact bucket Metadata: - AWS::CloudFormation::Interface: ParameterGroups: - Label: @@ -28,4 +27,4 @@ Resources: Outputs: BucketName: - Value: !Ref S3Bucket \ No newline at end of file + Value: !Ref S3Bucket \ No newline at end of file From 9c9bba8746f707175150e941ba27e8259e42e0a6 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 1 Jun 2021 17:53:48 -0700 Subject: [PATCH 16/24] Typo in master.yaml --- templates/00-master.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/00-master.yaml b/templates/00-master.yaml index 9ca3ddb..9314707 100644 --- a/templates/00-master.yaml +++ b/templates/00-master.yaml @@ -908,7 +908,7 @@ Resources: !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-s3.yaml' -codecommit: + codecommit: DependsOn: s3 Type: AWS::CloudFormation::Stack Properties: @@ -917,7 +917,6 @@ codecommit: !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-codecommit.yaml' - bastion: DependsOn: securitygroups Type: AWS::CloudFormation::Stack From 4c90b4772f30b864d4e510f91fb543b543c8526e Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Wed, 2 Jun 2021 11:06:12 -0700 Subject: [PATCH 17/24] Initial CodeCommit support. --- templates/00-master.yaml | 6 ++- templates/03-efsfilesystem.yaml | 67 ++++++++++++++++++++++++++++----- 2 files changed, 63 insertions(+), 10 deletions(-) diff --git a/templates/00-master.yaml b/templates/00-master.yaml index 9314707..300f54a 100644 --- a/templates/00-master.yaml +++ b/templates/00-master.yaml @@ -909,7 +909,7 @@ Resources: TemplateURL: !Sub '${DeploymentLocation}/03-s3.yaml' codecommit: - DependsOn: s3 + DependsOn: securitygroups Type: AWS::CloudFormation::Stack Properties: Parameters: @@ -998,6 +998,10 @@ Resources: !Ref EfsPerformanceMode Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] + RepoHTTP: + !GetAtt [ codecommit, Outputs.CloneUrlHttp ] + RepoArn: + !GetAtt [ codecommit, Outputs.CloneUrlArn ] TemplateURL: !Sub '${DeploymentLocation}/03-efsfilesystem.yaml' sessioncache: Condition: DeployWithSessionCache diff --git a/templates/03-efsfilesystem.yaml b/templates/03-efsfilesystem.yaml index 0ab3981..bb534c4 100644 --- a/templates/03-efsfilesystem.yaml +++ b/templates/03-efsfilesystem.yaml @@ -20,6 +20,8 @@ Metadata: - SecurityGroup - NumberOfSubnets - Subnet + - RepoHttp + - RepoArn ParameterLabels: EncrpytedBoolean: default: Encryption state @@ -39,7 +41,10 @@ Metadata: default: EFS Security Group Subnet: default: Subnets - + RepoHttp: + default: RepoHttp + RepoArn: + default: RepoArn Parameters: EncrpytedBoolean: @@ -154,10 +159,15 @@ Parameters: Subnet: Description: Select existing subnets. Type: List - LatestAmiId : + LatestAmiId: Type : AWS::SSM::Parameter::Value Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 - + RepoHttp: + Description: CodeCommit repository HTTP URL. + Type: String + RepoArn: + Description: CodeCommit Arn. + Type: String Conditions: @@ -294,16 +304,24 @@ Resources: - autoscaling:DescribePolicies - autoscaling:UpdateAutoScalingGroup Resource: '*' + - PolicyName: CodeCommit + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - codecommit:GitPush + Resource: !Ref RepoArn AutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: - Cooldown: 60 + Cooldown: '60' HealthCheckGracePeriod: 120 HealthCheckType: EC2 LaunchConfigurationName: !Ref LaunchConfiguration - MaxSize: 1 - MinSize: 0 - DesiredCapacity: 1 + MaxSize: '1' + MinSize: '0' + DesiredCapacity: '1' Tags: - Key: Name Value: !Join [ '', [ 'EFS ', !Ref ElasticFileSystem, ' data load... will auto terminate.' ] ] @@ -342,7 +360,7 @@ Resources: Properties: AdjustmentType: ChangeInCapacity AutoScalingGroupName: !Ref AutoScalingGroup - Cooldown: 60 + Cooldown: '60' PolicyType: SimpleScaling ScalingAdjustment: 1 LaunchConfiguration: @@ -350,8 +368,37 @@ Resources: Metadata: AWS::CloudFormation::Init: configSets: + moodle_git_config: + - moodle-git-config efs_add_storage: - efs-add-storage + moodle-git-config: + files: + /tmp/moodle-git-config.sh: + content: !Sub | + #!/bin/bash -x + + git config --global user.name 'AWS User' + git config --global user.email noreply@amazon.com + + git config --global credential.helper '!aws codecommit credential-helper $@' + git config --global credential.UseHttpPath true + + mkdir /tmp/moodle + wget -O /tmp/moodle.tgz https://download.moodle.org/download.php/direct/stable311/moodle-3.11.tgz + tar -xvzf /tmp/moodle.tgz --strip-components=1 -C /tmp/moodle/ + cd /tmp/moodle + git init + git checkout -b main + git add . + git commit -m "CloudFormation deployment commit." + git remote add origin https://git-codecommit.us-east-1.amazonaws.com/v1/repos/Moodle-CodeCommit2 + git remote -v + git push -u origin main + + mode: 000777 + owner: root + group: root efs-add-storage: packages: yum: @@ -464,8 +511,10 @@ Resources: "runcmd:\n", "- yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm\n", "- yum-config-manager --enable epel\n", + "- yum install -y git\n", "- yum install -y parallel", "- ntpstat\n", + "- /opt/aws/bin/cfn-init --configsets moodle_git_config --verbose --stack ", !Ref 'AWS::StackName', " --resource LaunchConfiguration --region ", !Ref 'AWS::Region',"\n", "- /opt/aws/bin/cfn-init --configsets efs_add_storage --verbose --stack ", !Ref 'AWS::StackName', " --resource LaunchConfiguration --region ", !Ref 'AWS::Region',"\n", "- /tmp/efs-add-storage.sh ", !Ref ElasticFileSystem, " throughput_data ", !Ref Growth,"\n", "- /opt/aws/bin/cfn-signal -e $? --stack ", !Ref 'AWS::StackName', " --resource AutoScalingGroup --region ", !Ref 'AWS::Region',"\n" @@ -562,7 +611,7 @@ Resources: State: ENABLED Targets: - Arn: !GetAtt EfsSizeMonitorFunction.Arn - Id: 1 + Id: '1' Outputs: ElasticFileSystem: From 5a56db0bda0e89aa9caff88697179b9e5778f46f Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Thu, 10 Jun 2021 15:23:56 -0700 Subject: [PATCH 18/24] CodeCommit implementation. --- templates/00-master.yaml | 6 ++--- templates/03-codecommit.yaml | 4 +-- templates/03-efsfilesystem.yaml | 48 ++++++++++++++++----------------- templates/03-publicalb.yaml | 4 +-- templates/03-s3.yaml | 2 -- templates/04-web.yaml | 39 ++++++++++++++++++++++----- 6 files changed, 63 insertions(+), 40 deletions(-) diff --git a/templates/00-master.yaml b/templates/00-master.yaml index 300f54a..99e996b 100644 --- a/templates/00-master.yaml +++ b/templates/00-master.yaml @@ -976,7 +976,7 @@ Resources: !Ref NumberOfAZs TemplateURL: !Sub '${DeploymentLocation}/03-rds.yaml' efsfilesystem: - DependsOn: securitygroups + DependsOn: codecommit Type: AWS::CloudFormation::Stack Properties: Parameters: @@ -999,9 +999,9 @@ Resources: Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] RepoHTTP: - !GetAtt [ codecommit, Outputs.CloneUrlHttp ] + !GetAtt [ codecommit, Outputs.RepoHTTP ] RepoArn: - !GetAtt [ codecommit, Outputs.CloneUrlArn ] + !GetAtt [ codecommit, Outputs.RepoArn ] TemplateURL: !Sub '${DeploymentLocation}/03-efsfilesystem.yaml' sessioncache: Condition: DeployWithSessionCache diff --git a/templates/03-codecommit.yaml b/templates/03-codecommit.yaml index 6d853c6..1ecae81 100644 --- a/templates/03-codecommit.yaml +++ b/templates/03-codecommit.yaml @@ -11,7 +11,7 @@ Metadata: Parameters: - RepoName ParameterLabels: - S3BucketName: + RepoName: default: CodeCommit Repo Name Parameters: @@ -27,7 +27,7 @@ Resources: RepositoryDescription: This is a repository for my project with code from MySourceCodeBucket. Outputs: - ReporArn: + RepoArn: Value: !GetAtt MoodleRepo.Arn RepoHTTP: Value: !GetAtt MoodleRepo.CloneUrlHttp diff --git a/templates/03-efsfilesystem.yaml b/templates/03-efsfilesystem.yaml index bb534c4..e179c8c 100644 --- a/templates/03-efsfilesystem.yaml +++ b/templates/03-efsfilesystem.yaml @@ -20,7 +20,7 @@ Metadata: - SecurityGroup - NumberOfSubnets - Subnet - - RepoHttp + - RepoHTTP - RepoArn ParameterLabels: EncrpytedBoolean: @@ -41,10 +41,7 @@ Metadata: default: EFS Security Group Subnet: default: Subnets - RepoHttp: - default: RepoHttp - RepoArn: - default: RepoArn + Parameters: EncrpytedBoolean: @@ -162,7 +159,7 @@ Parameters: LatestAmiId: Type : AWS::SSM::Parameter::Value Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 - RepoHttp: + RepoHTTP: Description: CodeCommit repository HTTP URL. Type: String RepoArn: @@ -376,27 +373,27 @@ Resources: files: /tmp/moodle-git-config.sh: content: !Sub | - #!/bin/bash -x + #!/bin/bash -x - git config --global user.name 'AWS User' - git config --global user.email noreply@amazon.com + git config --global user.name 'AWS User' + git config --global user.email noreply@amazon.com - git config --global credential.helper '!aws codecommit credential-helper $@' - git config --global credential.UseHttpPath true + git config --global credential.helper '!aws codecommit credential-helper $@' + git config --global credential.UseHttpPath true - mkdir /tmp/moodle - wget -O /tmp/moodle.tgz https://download.moodle.org/download.php/direct/stable311/moodle-3.11.tgz - tar -xvzf /tmp/moodle.tgz --strip-components=1 -C /tmp/moodle/ - cd /tmp/moodle - git init - git checkout -b main - git add . - git commit -m "CloudFormation deployment commit." - git remote add origin https://git-codecommit.us-east-1.amazonaws.com/v1/repos/Moodle-CodeCommit2 - git remote -v - git push -u origin main + mkdir /tmp/moodle + wget -O /tmp/moodle.tgz https://download.moodle.org/download.php/direct/stable311/moodle-3.11.tgz + tar -xvzf /tmp/moodle.tgz --strip-components=1 -C /tmp/moodle/ + cd /tmp/moodle + git init + git checkout -b main + git add . + git commit -m "CloudFormation deployment commit." + git remote add origin ${RepoHTTP} + git remote -v + git push -u origin main - mode: 000777 + mode: '000755' owner: root group: root efs-add-storage: @@ -481,7 +478,7 @@ Resources: done # set ASG to zero which terminates instance - aws autoscaling update-auto-scaling-group --auto-scaling-group-name $asg_name --desired-capacity 0 --region $region + # aws autoscaling update-auto-scaling-group --auto-scaling-group-name $asg_name --desired-capacity 0 --region $region mode: 000777 owner: root @@ -512,10 +509,11 @@ Resources: "- yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm\n", "- yum-config-manager --enable epel\n", "- yum install -y git\n", - "- yum install -y parallel", + "- yum install -y parallel\n", "- ntpstat\n", "- /opt/aws/bin/cfn-init --configsets moodle_git_config --verbose --stack ", !Ref 'AWS::StackName', " --resource LaunchConfiguration --region ", !Ref 'AWS::Region',"\n", "- /opt/aws/bin/cfn-init --configsets efs_add_storage --verbose --stack ", !Ref 'AWS::StackName', " --resource LaunchConfiguration --region ", !Ref 'AWS::Region',"\n", + "- sudo -H -u ec2-user /tmp/moodle-git-config.sh\n", "- /tmp/efs-add-storage.sh ", !Ref ElasticFileSystem, " throughput_data ", !Ref Growth,"\n", "- /opt/aws/bin/cfn-signal -e $? --stack ", !Ref 'AWS::StackName', " --resource AutoScalingGroup --region ", !Ref 'AWS::Region',"\n" ] diff --git a/templates/03-publicalb.yaml b/templates/03-publicalb.yaml index f7b6ec8..68e834e 100644 --- a/templates/03-publicalb.yaml +++ b/templates/03-publicalb.yaml @@ -149,7 +149,7 @@ Resources: ] LoadBalancerAttributes: - Key: idle_timeout.timeout_seconds - Value: 60 + Value: '60' SecurityGroups: - !Ref PublicAlbSecurityGroup Tags: @@ -159,7 +159,7 @@ Resources: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: HealthCheckIntervalSeconds: 30 - HealthCheckPath: /README.txt + HealthCheckPath: /status.txt HealthCheckTimeoutSeconds: 5 Name: !Join [ '', [ 'PublicALB-', !Ref Vpc ] ] Port: 80 diff --git a/templates/03-s3.yaml b/templates/03-s3.yaml index 59dec61..0f787ec 100644 --- a/templates/03-s3.yaml +++ b/templates/03-s3.yaml @@ -22,8 +22,6 @@ Parameters: Resources: S3Bucket: Type: AWS::S3::Bucket - Properties: - BucketName: !Ref S3BucketName Outputs: BucketName: diff --git a/templates/04-web.yaml b/templates/04-web.yaml index cf4c12a..3d31db9 100644 --- a/templates/04-web.yaml +++ b/templates/04-web.yaml @@ -471,6 +471,7 @@ Resources: - install_logs - install_webserver - install_moodle + - install_codedeploy - install_cacheclient - install_opcache - start_webserver @@ -657,20 +658,26 @@ Resources: mode: '000755' owner: root group: root - /tmp/install_moodle.sh: content: !Sub | #!/bin/bash -xe - wget -O /tmp/moodle.tgz https://download.moodle.org/download.php/direct/stable38/moodle-3.8.3.tgz - tar -xvzf /tmp/moodle.tgz --strip-components=1 -C /var/www/moodle/html/ - wget -O /var/www/moodle/html/lib/aws.phar https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.phar - cp /tmp/config.php /var/www/moodle/html/config.php + mkdir /var/www/moodle/html + mkdir /var/www/moodle/local chown -R root:apache /var/www/moodle/html chown -R apache:apache /var/www/moodle/local - + cp /tmp/status.txt /var/www/moodle/html/status.txt + mode: 000500 owner: root group: root + + /tmp/status.txt: + content: !Sub | + Health Check + + mode: '000644' + owner: root + group: root commands: install_moodle: command: ./install_moodle.sh @@ -740,6 +747,26 @@ Resources: command: ./install_opcache.sh cwd: /tmp ignoreErrors: false + install_codedeploy: + files: + /tmp/install_codedeploy.sh: + content: + !Sub | + #!/bin/bash -xe + + cd /home/ec2-user + wget https://aws-codedeploy-${AWS::Region}.s3.${AWS::Region}.amazonaws.com/latest/install + chmod +x ./install + ./install auto + + mode: 000500 + owner: root + group: root + commands: + install_codedeploy: + command: ./install_codedeploy.sh + cwd: /tmp + ignoreErrors: false start_webserver: services: sysvinit: From 8df278261bf5d0171101374e01775293926ffd9c Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Thu, 10 Jun 2021 15:24:36 -0700 Subject: [PATCH 19/24] Rename master to main. --- templates/{00-master.yaml => 00-main.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/{00-master.yaml => 00-main.yaml} (100%) diff --git a/templates/00-master.yaml b/templates/00-main.yaml similarity index 100% rename from templates/00-master.yaml rename to templates/00-main.yaml From c51fb24f7bc0f75c1857af4c12da8951ef5328db Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Mon, 14 Jun 2021 08:01:25 -0700 Subject: [PATCH 20/24] CodeCommit work. --- templates/03-codedeploy.yaml | 28 ++++++++++++++++++++++++++++ templates/04-web.yaml | 13 ++++++++----- 2 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 templates/03-codedeploy.yaml diff --git a/templates/03-codedeploy.yaml b/templates/03-codedeploy.yaml new file mode 100644 index 0000000..a30a062 --- /dev/null +++ b/templates/03-codedeploy.yaml @@ -0,0 +1,28 @@ +--- +AWSTemplateFormatVersion: 2010-09-09 + +Description: Reference Architecture to host Moodle on AWS - Creates CodePiple and CodeDeploy + +Metadata: + AWS::CloudFormation::Interface: + ParameterGroups: + - Label: + default: S3 Parameters + Parameters: + - S3BucketName + ParameterLabels: + S3BucketName: + default: S3 Bucket Name + +Parameters: + S3BucketName: + Description: The S3 Bucket name. + Type: String + +Resources: + S3Bucket: + Type: AWS::S3::Bucket + +Outputs: + BucketName: + Value: !Ref S3Bucket \ No newline at end of file diff --git a/templates/04-web.yaml b/templates/04-web.yaml index 3d31db9..224b943 100644 --- a/templates/04-web.yaml +++ b/templates/04-web.yaml @@ -661,10 +661,10 @@ Resources: /tmp/install_moodle.sh: content: !Sub | #!/bin/bash -xe - mkdir /var/www/moodle/html - mkdir /var/www/moodle/local - chown -R root:apache /var/www/moodle/html - chown -R apache:apache /var/www/moodle/local + #mkdir /var/www/moodle/html + #mkdir /var/www/moodle/local + #chown -R root:apache /var/www/moodle/html + #chown -R apache:apache /var/www/moodle/local cp /tmp/status.txt /var/www/moodle/html/status.txt mode: 000500 @@ -707,7 +707,7 @@ Resources: echo 'extension=igbinary.so;' >> /etc/php.d/50-memcached.ini #update Moodle source to use DYNAMIC_CLIENT_MODE so Moodle can detect changes to the elasticache cluster membership - sed -i '/\$this->options\[Memcached::OPT_BUFFER_WRITES\] = \$bufferwrites;/a \ \ \ \ \ \ \ \ $this->options[Memcached::OPT_CLIENT_MODE] = Memcached::DYNAMIC_CLIENT_MODE;' /var/www/moodle/html/cache/stores/memcached/lib.php + #sed -i '/\$this->options\[Memcached::OPT_BUFFER_WRITES\] = \$bufferwrites;/a \ \ \ \ \ \ \ \ $this->options[Memcached::OPT_CLIENT_MODE] = Memcached::DYNAMIC_CLIENT_MODE;' /var/www/moodle/html/cache/stores/memcached/lib.php mode: 000500 owner: root @@ -748,6 +748,9 @@ Resources: cwd: /tmp ignoreErrors: false install_codedeploy: + packages: + yum: + ruby: [] files: /tmp/install_codedeploy.sh: content: From beed035698db31c8a6a9b9117e51ff52b4615ad9 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 15 Jun 2021 13:44:27 -0700 Subject: [PATCH 21/24] Updates to RDS and ElastiCache instance types. --- templates/00-main.yaml | 93 +++++++++++++++++++---------------- templates/03-elasticache.yaml | 41 +++++++-------- templates/03-rds.yaml | 23 ++++++--- 3 files changed, 83 insertions(+), 74 deletions(-) diff --git a/templates/00-main.yaml b/templates/00-main.yaml index 99e996b..0d0b9bc 100644 --- a/templates/00-main.yaml +++ b/templates/00-main.yaml @@ -316,14 +316,23 @@ Parameters: Type: String DatabaseInstanceType: AllowedValues: - - db.r4.large - - db.r4.xlarge - - db.r4.2xlarge - - db.r4.4xlarge - - db.r4.8xlarge - - db.r4.16xlarge + - db.t3.large + - db.r5.large + - db.r5.xlarge + - db.r5.2xlarge + - db.r5.4xlarge + - db.r5.8xlarge + - db.r5.12xlarge + - db.r5.16xlarge + - db.r6g.large + - db.r6g.xlarge + - db.r6g.2xlarge + - db.r6g.4xlarge + - db.r6g.8xlarge + - db.r6g.12xlarge + - db.r6g.16xlarge ConstraintDescription: Must be a valid RDS instance class. - Default: db.r4.large + Default: db.r5.large Description: The Amazon RDS database instance class. Type: String DatabaseMasterUsername: @@ -484,25 +493,24 @@ Parameters: Type: String SessionCacheNodeType: AllowedValues: - - cache.t2.micro - - cache.t2.small - - cache.t2.medium - - cache.m4.large - - cache.m4.xlarge - - cache.m4.2xlarge - - cache.m4.4xlarge - - cache.m4.10xlarge - - cache.m3.medium - - cache.m3.large - - cache.m3.xlarge - - cache.m3.2xlarge - - cache.r3.large - - cache.r3.xlarge - - cache.r3.2xlarge - - cache.r3.4xlarge - - cache.r3.8xlarge + - cache.t3.micro + - cache.t3.small + - cache.t3.medium + - cache.m5.large + - cache.m5.xlarge + - cache.m5.2xlarge + - cache.m5.4xlarge + - cache.m5.12xlarge + - cache.m5.24xlarge + - cache.m6g.large + - cache.m6g.xlarge + - cache.m6g.2xlarge + - cache.m6g.4xlarge + - cache.m6g.8xlarge + - cache.m6g.12xlarge + - cache.m6g.16xlarge ConstraintDescription: Must be a valid Amazon ElastiCache node type. - Default: cache.t2.micro + Default: cache.t3.micro Description: The Amazon ElastiCache cluster node type. Type: String UseApplicationCacheBoolean: @@ -514,25 +522,24 @@ Parameters: Type: String ApplicationCacheNodeType: AllowedValues: - - cache.t2.micro - - cache.t2.small - - cache.t2.medium - - cache.m4.large - - cache.m4.xlarge - - cache.m4.2xlarge - - cache.m4.4xlarge - - cache.m4.10xlarge - - cache.m3.medium - - cache.m3.large - - cache.m3.xlarge - - cache.m3.2xlarge - - cache.r3.large - - cache.r3.xlarge - - cache.r3.2xlarge - - cache.r3.4xlarge - - cache.r3.8xlarge + - cache.t3.micro + - cache.t3.small + - cache.t3.medium + - cache.m5.large + - cache.m5.xlarge + - cache.m5.2xlarge + - cache.m5.4xlarge + - cache.m5.12xlarge + - cache.m5.24xlarge + - cache.m6g.large + - cache.m6g.xlarge + - cache.m6g.2xlarge + - cache.m6g.4xlarge + - cache.m6g.8xlarge + - cache.m6g.12xlarge + - cache.m6g.16xlarge ConstraintDescription: Must be a valid Amazon ElastiCache node type. - Default: cache.t2.micro + Default: cache.t3.micro Description: The Amazon ElastiCache cluster node type. Type: String EC2KeyName: diff --git a/templates/03-elasticache.yaml b/templates/03-elasticache.yaml index 31fa83a..d75343e 100644 --- a/templates/03-elasticache.yaml +++ b/templates/03-elasticache.yaml @@ -44,31 +44,24 @@ Parameters: Type: String ElastiCacheNodeType: AllowedValues: - - cache.t2.micro - - cache.t2.small - - cache.t2.medium - - cache.m3.medium - - cache.m3.large - - cache.m3.xlarge - - cache.m3.2xlarge - - cache.m4.large - - cache.m4.xlarge - - cache.m4.2xlarge - - cache.m4.4xlarge - - cache.m4.10xlarge - - cache.r3.large - - cache.r3.xlarge - - cache.r3.2xlarge - - cache.r3.4xlarge - - cache.r3.8xlarge - - cache.r4.large - - cache.r4.xlarge - - cache.r4.2xlarge - - cache.r4.4xlarge - - cache.r4.8xlarge - - cache.r4.16xlarge + - cache.t3.micro + - cache.t3.small + - cache.t3.medium + - cache.m5.large + - cache.m5.xlarge + - cache.m5.2xlarge + - cache.m5.4xlarge + - cache.m5.12xlarge + - cache.m5.24xlarge + - cache.m6g.large + - cache.m6g.xlarge + - cache.m6g.2xlarge + - cache.m6g.4xlarge + - cache.m6g.8xlarge + - cache.m6g.12xlarge + - cache.m6g.16xlarge ConstraintDescription: Must be a valid Amazon ElastiCache node type. - Default: cache.t2.medium + Default: cache.t3.medium Description: The Amazon ElastiCache cluster node type. Type: String ElastiCacheSecurityGroup: diff --git a/templates/03-rds.yaml b/templates/03-rds.yaml index 5980961..4cfe152 100644 --- a/templates/03-rds.yaml +++ b/templates/03-rds.yaml @@ -61,14 +61,23 @@ Parameters: Type: String DatabaseInstanceType: AllowedValues: - - db.r4.large - - db.r4.xlarge - - db.r4.2xlarge - - db.r4.4xlarge - - db.r4.8xlarge - - db.r4.16xlarge + - db.t3.large + - db.r5.large + - db.r5.xlarge + - db.r5.2xlarge + - db.r5.4xlarge + - db.r5.8xlarge + - db.r5.12xlarge + - db.r5.16xlarge + - db.r6g.large + - db.r6g.xlarge + - db.r6g.2xlarge + - db.r6g.4xlarge + - db.r6g.8xlarge + - db.r6g.12xlarge + - db.r6g.16xlarge ConstraintDescription: Must be a valid RDS instance class. - Default: db.r4.large + Default: db.r5.large Description: The Amazon RDS database instance class. Type: String # DatabaseMasterUsername: From e4afd437c042ca58a5fccea05d9cf2b0c743f7b1 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Tue, 15 Jun 2021 14:28:09 -0700 Subject: [PATCH 22/24] Web and EFS/config EC2 instance types updated. --- templates/00-main.yaml | 219 +++++++------------------------- templates/03-efsfilesystem.yaml | 89 ++++--------- 2 files changed, 73 insertions(+), 235 deletions(-) diff --git a/templates/00-main.yaml b/templates/00-main.yaml index 0d0b9bc..2b27e1d 100644 --- a/templates/00-main.yaml +++ b/templates/00-main.yaml @@ -384,97 +384,32 @@ Parameters: Type: Number EfsGrowthInstanceType: AllowedValues: - - t2.nano - - t2.micro - - t2.small - - t2.medium - - t2.large - - t2.xlarge - - t2.2xlarge - - m3.medium - - m3.large - - m3.xlarge - - m3.2xlarge - - m4.large - - m4.xlarge - - m4.2xlarge - - m4.4xlarge - - m4.10xlarge - - m4.16xlarge - - m5.large - - m5.xlarge - - m5.2xlarge - - m5.4xlarge - - m5.12xlarge - - m5.24xlarge - - c3.large - - c3.xlarge - - c3.2xlarge - - c3.4xlarge - - c3.8xlarge - - c4.large - - c4.xlarge - - c4.2xlarge - - c4.4xlarge - - c4.8xlarge - - c5.large - - c5.xlarge - - c5.2xlarge - - c5.4xlarge - - c5.9xlarge - - c5.18xlarge - - r3.large - - r3.xlarge - - r3.2xlarge - - r3.4xlarge - - r3.8xlarge - - r4.large - - r4.xlarge - - r4.2xlarge - - r4.4xlarge - - r4.8xlarge - - r4.16xlarge - - x1.16xlarge - - x1.32xlarge - - x1e.xlarge - - x1e.2xlarge - - x1e.4xlarge - - x1e.8xlarge - - x1e.16xlarge - - x1e.32xlarge - - d2.xlarge - - d2.2xlarge - - d2.4xlarge - - d2.8xlarge - - h1.2xlarge - - h1.4xlarge - - h1.8xlarge - - h1.16xlarge - - i2.xlarge - - i2.2xlarge - - i2.4xlarge - - i2.8xlarge - - i3.large - - i3.xlarge - - i3.2xlarge - - i3.4xlarge - - i3.8xlarge - - i3.16xlarge - - f1.2xlarge - - f1.16xlarge - - g2.2xlarge - - g2.8xlarge - - g3.4xlarge - - g3.8xlarge - - g3.16xlarge - - p2.xlarge - - p2.8xlarge - - p2.16xlarge - - p3.2xlarge - - p3.8xlarge - - p3.16xlarge + - m5.large + - m5.xlarge + - m5.2xlarge + - m5.4xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge + - c5.large + - c5.xlarge + - c5.2xlarge + - c5.4xlarge + - c5.9xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: r4.large + Default: r5.xlarge Description: The Amazon EC2 instance type that adds data to the file system. Type: String CacheType: @@ -565,97 +500,39 @@ Parameters: Type: String WebInstanceType: AllowedValues: - - t2.nano - - t2.micro - - t2.small - - t2.medium - - t2.large - - t2.xlarge - - t2.2xlarge - - m3.medium - - m3.large - - m3.xlarge - - m3.2xlarge - - m4.large - - m4.xlarge - - m4.2xlarge - - m4.4xlarge - - m4.10xlarge - - m4.16xlarge + - t3.nano + - t3.micro + - t3.small + - t3.medium + - t3.large + - t3.xlarge + - t3.2xlarge - m5.large - m5.xlarge - m5.2xlarge - m5.4xlarge - - m5.12xlarge - - m5.24xlarge - - c3.large - - c3.xlarge - - c3.2xlarge - - c3.4xlarge - - c3.8xlarge - - c4.large - - c4.xlarge - - c4.2xlarge - - c4.4xlarge - - c4.8xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge - c5.large - c5.xlarge - c5.2xlarge - c5.4xlarge - c5.9xlarge - - c5.18xlarge - - r3.large - - r3.xlarge - - r3.2xlarge - - r3.4xlarge - - r3.8xlarge - - r4.large - - r4.xlarge - - r4.2xlarge - - r4.4xlarge - - r4.8xlarge - - r4.16xlarge - - x1.16xlarge - - x1.32xlarge - - x1e.xlarge - - x1e.2xlarge - - x1e.4xlarge - - x1e.8xlarge - - x1e.16xlarge - - x1e.32xlarge - - d2.xlarge - - d2.2xlarge - - d2.4xlarge - - d2.8xlarge - - h1.2xlarge - - h1.4xlarge - - h1.8xlarge - - h1.16xlarge - - i2.xlarge - - i2.2xlarge - - i2.4xlarge - - i2.8xlarge - - i3.large - - i3.xlarge - - i3.2xlarge - - i3.4xlarge - - i3.8xlarge - - i3.16xlarge - - f1.2xlarge - - f1.16xlarge - - g2.2xlarge - - g2.8xlarge - - g3.4xlarge - - g3.8xlarge - - g3.16xlarge - - p2.xlarge - - p2.8xlarge - - p2.16xlarge - - p3.2xlarge - - p3.8xlarge - - p3.16xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: t2.large + Default: t3.large Description: The Amazon EC2 instance type for your web instances. Type: String HostedZoneName: diff --git a/templates/03-efsfilesystem.yaml b/templates/03-efsfilesystem.yaml index e179c8c..51f7dc3 100644 --- a/templates/03-efsfilesystem.yaml +++ b/templates/03-efsfilesystem.yaml @@ -63,71 +63,32 @@ Parameters: Type: Number InstanceType: AllowedValues: - - t2.nano - - t2.micro - - t2.small - - t2.medium - - t2.large - - t2.xlarge - - t2.2xlarge - - m3.medium - - m3.large - - m3.xlarge - - m3.2xlarge - - m4.large - - m4.xlarge - - m4.2xlarge - - m4.4xlarge - - m4.10xlarge - - m4.16xlarge - - c3.large - - c3.xlarge - - c3.2xlarge - - c3.4xlarge - - c3.8xlarge - - c4.large - - c4.xlarge - - c4.2xlarge - - c4.4xlarge - - c4.8xlarge - - c5.large - - c5.xlarge - - c5.2xlarge - - c5.4xlarge - - c5.8xlarge - - r3.large - - r3.xlarge - - r3.2xlarge - - r3.4xlarge - - r3.8xlarge - - r4.large - - r4.xlarge - - r4.2xlarge - - r4.4xlarge - - r4.8xlarge - - r4.16xlarge - - i3.large - - i3.xlarge - - i3.2xlarge - - i3.4xlarge - - i3.8xlarge - - i3.16xlarge - - d2.xlarge - - d2.2xlarge - - d2.4xlarge - - d2.8xlarge - - p2.xlarge - - p2.8xlarage - - p2.16xlarge - - g3.4xlarge - - g3.8xlarge - - g3.16xlarge - - f1.2xlarge - - f1.16xlarge - - x1.16xlarge - - x1.32xlarge + - m5.large + - m5.xlarge + - m5.2xlarge + - m5.4xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge + - c5.large + - c5.xlarge + - c5.2xlarge + - c5.4xlarge + - c5.9xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: r4.large + Default: r5.xlarge Description: The Amazon EC2 instance type that adds data to the file system. Type: String EC2KeyName: From a09e450a4eaca3193a45c22eceacc77442768d84 Mon Sep 17 00:00:00 2001 From: Michael Farley Date: Thu, 5 Aug 2021 09:01:51 -0700 Subject: [PATCH 23/24] Store values in parameter store. --- templates/00-main.yaml | 32 +++++++++++ templates/04-web.yaml | 122 +++++++++++------------------------------ 2 files changed, 64 insertions(+), 90 deletions(-) diff --git a/templates/00-main.yaml b/templates/00-main.yaml index 2b27e1d..3a24d9f 100644 --- a/templates/00-main.yaml +++ b/templates/00-main.yaml @@ -1040,6 +1040,38 @@ Resources: !Ref DomainName TemplateURL: !Sub '${DeploymentLocation}/05-route53.yaml' + paramdatabasetype: + Type: AWS::SSM::Parameter + Properties: + Name: MoodleDBType + Description: Moodle Aurora Database Type + Tier: Standard + Type: String + Value: !Ref DatabaseType + paramdatabasewriterdns: + Type: AWS::SSM::Parameter + Properties: + Name: MoodleDBWriterDNS + Description: Moodle Aurora Database Writer DNS + Tier: Standard + Type: String + Value: !Ref rds.Outputs.DatabaseClusterEndpointAddress + paramdatabasereaderdns: + Type: AWS::SSM::Parameter + Properties: + Name: MoodleDBReaderDNS + Description: Moodle Aurora Database Reader DNS + Tier: Standard + Type: String + Value: !Ref rds.Outputs.DatabaseClusterReadEndpointAddress + paramdatabaseport: + Type: AWS::SSM::Parameter + Properties: + Name: MoodleDBPort + Description: Moodle Aurora Database Port Number + Tier: Standard + Type: String + Value: !Ref rds.Outputs.DatabaseClusterEndpointPort Outputs: DnsName: Description: DNS name of the new load balancer for Moodle. diff --git a/templates/04-web.yaml b/templates/04-web.yaml index 224b943..76af6f3 100644 --- a/templates/04-web.yaml +++ b/templates/04-web.yaml @@ -156,97 +156,39 @@ Parameters: Type: String WebInstanceType: AllowedValues: - - t2.nano - - t2.micro - - t2.small - - t2.medium - - t2.large - - t2.xlarge - - t2.2xlarge - - m3.medium - - m3.large - - m3.xlarge - - m3.2xlarge - - m4.large - - m4.xlarge - - m4.2xlarge - - m4.4xlarge - - m4.10xlarge - - m4.16xlarge - - m5.large - - m5.xlarge - - m5.2xlarge - - m5.4xlarge - - m5.12xlarge - - m5.24xlarge - - c3.large - - c3.xlarge - - c3.2xlarge - - c3.4xlarge - - c3.8xlarge - - c4.large - - c4.xlarge - - c4.2xlarge - - c4.4xlarge - - c4.8xlarge - - c5.large - - c5.xlarge - - c5.2xlarge - - c5.4xlarge - - c5.9xlarge - - c5.18xlarge - - r3.large - - r3.xlarge - - r3.2xlarge - - r3.4xlarge - - r3.8xlarge - - r4.large - - r4.xlarge - - r4.2xlarge - - r4.4xlarge - - r4.8xlarge - - r4.16xlarge - - x1.16xlarge - - x1.32xlarge - - x1e.xlarge - - x1e.2xlarge - - x1e.4xlarge - - x1e.8xlarge - - x1e.16xlarge - - x1e.32xlarge - - d2.xlarge - - d2.2xlarge - - d2.4xlarge - - d2.8xlarge - - h1.2xlarge - - h1.4xlarge - - h1.8xlarge - - h1.16xlarge - - i2.xlarge - - i2.2xlarge - - i2.4xlarge - - i2.8xlarge - - i3.large - - i3.xlarge - - i3.2xlarge - - i3.4xlarge - - i3.8xlarge - - i3.16xlarge - - f1.2xlarge - - f1.16xlarge - - g2.2xlarge - - g2.8xlarge - - g3.4xlarge - - g3.8xlarge - - g3.16xlarge - - p2.xlarge - - p2.8xlarge - - p2.16xlarge - - p3.2xlarge - - p3.8xlarge - - p3.16xlarge + - t3.nano + - t3.micro + - t3.small + - t3.medium + - t3.large + - t3.xlarge + - t3.2xlarge + - m5.large + - m5.xlarge + - m5.2xlarge + - m5.4xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge + - c5.large + - c5.xlarge + - c5.2xlarge + - c5.4xlarge + - c5.9xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: t2.large + Default: t3.large Description: The Amazon EC2 instance type for your web instances. Type: String WebSecurityGroup: From 1e7347239e6b047932482f3046b1ac9c3352e6a6 Mon Sep 17 00:00:00 2001 From: Irshad Chohan Date: Tue, 31 Jan 2023 20:34:22 +0530 Subject: [PATCH 24/24] Updated 2.0 reference architecture for Moodle --- CONTRIBUTING.md | 21 + NOTICE | 3 +- README.md | 123 ++- images/aws-refarch-moodle-architecture.png | Bin 165350 -> 634938 bytes templates/00-main.yaml | 1047 +++++++++++--------- templates/01-newvpc.yaml | 552 ++--------- templates/02-securitygroups.yaml | 19 +- templates/03-bastion.yaml | 273 +++-- templates/03-efsfilesystem.yaml | 520 +--------- templates/03-elasticache.yaml | 110 +- templates/03-pipelinehelper.yaml | 806 +++++++++++++++ templates/03-publicalb.yaml | 67 +- templates/03-rds.yaml | 128 ++- templates/03-rdsserverless.yaml | 244 +++++ templates/04-cloudfront.yaml | 31 +- templates/04-efsfilegrowhelper.yaml | 660 ++++++++++++ templates/04-web.yaml | 564 +++-------- templates/05-codepipeline.yaml | 176 ++++ templates/05-route53.yaml | 8 +- 19 files changed, 3085 insertions(+), 2267 deletions(-) create mode 100644 templates/03-pipelinehelper.yaml create mode 100644 templates/03-rdsserverless.yaml create mode 100644 templates/04-efsfilegrowhelper.yaml create mode 100644 templates/05-codepipeline.yaml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 54b90c4..f82f5af 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -59,3 +59,24 @@ If you discover a potential security issue in this project we ask that you notif See the [LICENSE](https://github.com/aws-samples/aws-refarch-moodle/blob/master/LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes. + +## Authors + +Names in alphabetical orders + +v1.0 +- Diego Magalhães +- gamerf +- Henri Yandell +- jtrollin +- MathieuJeandron +- StephaniePar +- Thiago Pádua + +v2.0 +- Irshad Chohan +- Norman Owens +- Preenesh Nayanasudhan +- Stephen Smith +- Vincent Rioux + diff --git a/NOTICE b/NOTICE index 97a83f4..f48b352 100644 --- a/NOTICE +++ b/NOTICE @@ -1,2 +1 @@ -AWS Refarch Moodle -Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. \ No newline at end of file diff --git a/README.md b/README.md index 35a626f..a985872 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,143 @@ # Hosting Moodle on AWS -### Version 1.0.0 +### Version 2.0.0 ---- +## Overview -© 2018 Amazon Web Services, Inc. and its affiliates. All rights reserved. This work may not be reproduced or redistributed, in whole or in part, without prior written permission from Amazon Web Services, Inc. Commercial copying, lending, or selling is prohibited. +This repository provides set of CloudFormation nested templates that deploy a highly available, elastic, and scalable [Moodle 4.1+](https://docs.moodle.org) environment on AWS. Moodle offers a learning platform that provides educators, administrators and learners a single robust, secure and integrated system for personalized learning environment. -Errors or corrections? Please create an issue and we will repsond to you. +These nested templates can be used to deploy Moodle on AWS using [Amazon Virtual Private Cloud (Amazon VPC)](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html), [Amazon Elastic Compute Cloud (Amazon EC2)](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html), [Auto Scaling](http://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html), [Elastic Load Balancing (Application Load Balancer)](http://docs.aws.amazon.com/elasticbalancing/latest/application/introduction.html), [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html), [Amazon ElastiCache](http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/WhatIs.html), [Amazon Elastic File System (Amazon EFS)](http://docs.aws.amazon.com/efs/latest/ug/whatisefs.html), [Amazon CloudFront](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html), [Amazon Route 53](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html), [Amazon Certificate Manager (Amazon ACM)](http://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) with [AWS CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) in yaml format. ---- +This architecture is expansive enough to meet the needs of large institutions / organizations. Smaller organizations can choose to run a subset of the template to meet their needs. These templates can also be run individually and may be modified. -## Overview +This template currently uses [Moodle 4.1+](https://download.moodle.org/download.php/stable401/moodle-latest-401.tgz) stable version downloaded directly from [download.moodle.org](https://download.moodle.org/releases/latest/). Details for downloading are available in the [templates/03-pipelinehelper.yaml](templates/03-pipelinehelper.yaml) template file. -This repository consists of a set of nested templates which deploy a highly available, elastic, and scalable [Moodle](https://docs.moodle.org) environment on AWS. Moodle is a learning platform designed to provide educators, administrators and learners with a single robust, secure and integrated system to create personalized learning environments. This reference architecture provides a set of YAML templates for deploying Moodle on AWS using [Amazon Virtual Private Cloud (Amazon VPC)](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html), [Amazon Elastic Compute Cloud (Amazon EC2)](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html), [Auto Scaling](http://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html), [Elastic Load Balancing (Application Load Balancer)](http://docs.aws.amazon.com/elasticbalancing/latest/application/introduction.html), [Amazon Relational Database Service (Amazon RDS)](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html), [Amazon ElastiCache](http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/WhatIs.html), [Amazon Elastic File System (Amazon EFS)](http://docs.aws.amazon.com/efs/latest/ug/whatisefs.html), [Amazon CloudFront](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html), [Amazon Route 53](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html), [Amazon Certificate Manager (Amazon ACM)](http://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) with [AWS CloudFormation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html). This architecture may be overkill for many Moodle deployments, however the templates can be run individually and/or modified to deploy a subset of the architecture that fits your needs. +## Deployment guide -## TL;DR +Read the [reference architecture](#architecture) and the steps below to understand the deployment scope and options. While following the steps and guidelines to deploy Moodle 4.x, pay careful attention to the parameters and their descriptions. -If you just want to deploy the Moodle stack follow these steps. You can read the detail below to better understand the architecture. +### Pre-requisites +1) Select an [AWS Region](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions) (for example: us-east-1) for your deployment. +2) Give a meaningful `Stack Name` that does `not have` any `special characters` including hyphen(-) Eg: MoodleDevDeploy OR MoodleProd +2) If you plan to use HTTPS, you must [create](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) or [import](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) your certificate into Amazon Certificate Manager (ACM) and provide its [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) when deploying the CloudFormation stack. +3) Alternatively, if you plan to use an SSL Certificate with [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html), you must create or import your certificate into Amazon Certificate Manager in the us-east-1 region before launching Moodle and provide it's ARN when deploying the CloudFormation stack. -1) If you plan to use TLS, you must create or import your certificate into Amazon Certificate Manager before launching Moodle. -2) Deploy the 00-master.yaml stack. **Do not enable session caching in ElastiCache and leave both the Min and Max Auto Scaling Group (ASG) size set to one.** The installation wizard will not complete if you have session caching configured. -3) After the stack deployment completes, navigate to the web site to complete the Moodle installation. *NOTE: You may encounter a 504 Gateway Timeout or CloudFront error on the final step of the installation wizard (after setting admin password). You can simply refresh the page to complete the installation.* You may also see "Installation must be finished from the original IP address, sorry." to solve this you will need to update your database and set the lastip field of the mdl_user table to the internal ip address of your ALB (you can find this by looking at the Network Interfaces from the EC2 page in the AWS Console). From the webserver you can run: -psql -h -U -update mdl_user set lastip=''; -4) Configure Application caching in Moodle Site Configuration (see below for details). -5) Now you can update the stack that you just deployed to enable session caching and set the Min and Max Auto Scaling Group size values as desired. +### Steps +1) Deploy the 00-main.yaml stack. You can also click the `Launch Stack` button below to launch the stack in your logged-in AWS Account. +2) After the stack deployment completes, you will see a `DNS Name` entry under the `Outputs` tab under the main CloudFormation template. This DNS Name value will be your Moodle app URL. You can configure aliases or CNAMEs to point to this DNS Name if you want to customize this. +3) Navigate to the Moodle application URL to complete the installation. + 1) *NOTE: You may encounter a 504 Gateway Timeout or CloudFront error on the final step of the Moodle application installation wizard (after configuring the administrator password). You can safely ignore this error and refresh the page to complete the installation.* + 2) You may also see "Installation must be finished from the original IP address, sorry." If this is the case, update your database and set the `lastip` field of the `mdl_user` table to the internal IP address of your Application Load Balancer which can be found under the `Network Interfaces` section of the `EC2` section of the AWS Console. To update the value in the database, run these commands on the EC2 web server: -*Note you can reach the webserver by changing the minimum number of bastion hosts to 1 in the Auto Scaling Group or enable Systems Manager Session Manager by updating the IAM role assigned to the webserver instance (https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-instance-profile.html) + psql -h -U + update mdl_user set lastip=''; -You can launch this CloudFormation stack, using your account, in the following AWS Regions. The template will work in other regions as Aurora PostgreSQL is deployed globally. +4) Once the Moodle installation wizard completes successfully, you need to update the value of the SSM Parameter `IsMoodleSetupCompleted` to 'Yes'. + 1) In your main `CloudFormation` template, check `Outputs` tab to see parameter `IsMoodleSetupCompleted`. Click the link under `Value` to get details of the parameter. + 3) Edit the parameter and change the value to `Yes`. + 4) Go back to `Outputs` tab to see link for `MoodleCodePipeline`. Click on the link to open Code Pipeline. Click on the `Release Change` button. This will re-run the deployment pipeline and update the Moodle configurations post-installation, in order to adjust the auto-scaling configuration and the session cache configuration. + +5) This template can optionally deploy [Amazon ElastiCache](https://aws.amazon.com/elasticache/) as the Moodle Session and/or Application cache(s). When this feature is activated, you still need to configure the Application Cache within Moodle after deployment (see [how-to](#application-caching) guide). The cache endpoint is listed under the CloudFormation `Output` tab as `ApplicationCacheServerEndpoint`. + +*`NOTE:` To connect to your EC2 web servers, select an EC2 Instance and click on the `Connect` button in the AWS Console. Open the `Session Manager` tab and click on the `Connect` button. Note that this feature uses the [AWS SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-instance-profile.html) that is installed on the instances, allowing you to connect to EC2 Instances without opening the SSH port to Internet traffic. An alternative approach to connect to your instances would be to enable the bastion host through the CloudFormation stack parameters. + +### Launch the CloudFormation Template + +You can launch this CloudFormation template in different AWS Regions. Below are links to help you get started quickly, but note that you can always change the region yourself once you are in the AWS Console. | AWS Region Code | Name | Launch | | --- | --- | --- -| us-east-1 |US East (N. Virginia)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-master.yaml) | -| us-east-2 |US East (Ohio)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-master.yaml) | -| us-west-2 |US West (Oregon)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-master.yaml) | -| eu-west-1 |EU (Ireland)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-master.yaml) | -| eu-central-1 |EU (Frankfurt)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-master.yaml) | -| ap-southeast-2 |AP (Sydney)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-2#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-master.yaml) | +| us-east-1 |US East (N. Virginia)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| us-east-2 |US East (Ohio)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-east-2#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| us-west-2 |US West (Oregon)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=us-west-2#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| eu-west-1 |EU (Ireland)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=eu-west-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| eu-central-1 |EU (Frankfurt)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=eu-central-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| ap-southeast-1 |AP (Singapore)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| ap-southeast-2 |AP (Sydney)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=ap-southeast-2#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| ap-south-1 |India (Mumbai)| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | +| ca-central-1 |Canada (Central))| [![cloudformation-launch-stack](images/cloudformation-launch-stack.png)](https://console.aws.amazon.com/cloudformation/home?region=ca-central-1#/stacks/new?stackName=Moodle&templateURL=https://s3.amazonaws.com/aws-refarch/moodle/latest/templates/00-main.yaml) | ## Architecture -The following sections describe the individual components of the architecture. This architecture borrows liberally from the [WordPress Reference Architecture](https://github.com/awslabs/aws-refarch-wordpress). You may want to review that in addition to the discussion below. +The following sections describe the architecture and its components. This architecture uses a similar approach to the one used in the [WordPress Reference Architecture](https://github.com/awslabs/aws-refarch-wordpress). ![](images/aws-refarch-moodle-architecture.png) ### AWS Certificate Manager -AWS Certificate Manager is a service that lets you easily provision, manage, and deploy Secure Sockets Layer/Transport Layer Security (SSL/TLS) certificates for use with AWS services. You should run SSL/TLS to protect sessions and passwords. If you plan to use Transport Layer Security (TLS), you must create or import a TLS certificate in AWS Certificate Manager before you launching the template. In addition, if you are using CloudFront and hosting Moodle in a region other than us-east-1, you must create or import the certificate in both us-east-1 and the region you are hosting Moodle in. CloudFront always uses certificates from us-east-1. +AWS Certificate Manager lets you easily provision, manage, and deploy Secure Sockets Layer/Transport Layer Security (SSL/TLS) certificates for use with AWS services. You should use SSL/TLS to protect data in transit, including sessions and passwords. If you plan to use SSL/TLS, you must create or import a certificate using AWS Certificate Manager before you deploy the template. In addition, if wish to use CloudFront and host Moodle in a region other than us-east-1, you must create or import the certificate in both us-east-1 and the region you are hosting Moodle in. CloudFront requires certificates in the us-east-1 region. ### Application Load Balancer -An Application Load Balancer distributes incoming application traffic across multiple EC2 instances in multiple Availability Zones. You achieve high availability by clustering multiple Moodle servers behind a load balancer. Moodle provides an overview of [Server Clustering](https://docs.moodle.org/34/en/Server_cluster) that you should review before proceeding. The template will launch an Application Load Balancer (ALB). +The Application Load Balancer distributes incoming application traffic across multiple EC2 instances in multiple Availability Zones. You achieve high availability by clustering multiple Moodle servers behind this load balancer. You can review Moodle's overview of [Server Clustering](https://docs.moodle.org/en/Server_cluster) before proceeding. ### Amazon Autoscaling -Amazon EC2 Auto Scaling helps you ensure that you have the correct number of Amazon EC2 instances available to handle the load for your application. The template configures autoscaling based on CPU utilization. An additional instance is added when the average CPU utilization exceeds 75% for three minutes and removed when the average CPU utilization is less than 25% for three minutes. Based on the instance type you are running, cache configuration you choose, and other factors, you may find that another metric is a better predictor of load. Feel free to change the metrics as needed. +Amazon EC2 Auto Scaling helps ensure that the appropriate number of Amazon EC2 instances are available to handle the load of the application. The template configures autoscaling based on CPU utilization. An additional instance is added when the average CPU utilization exceeds 75% for three minutes and removed when the average CPU utilization is less than 25% for three minutes. Based on the instance type, cache configuration, and other factors, you may find that other metrics are better predictors of load. You can change the metrics to better meet your operational needs. -*Note that the installation wizard causes spikes in CPU that could cause the cluster to scale unexpectedly. Initially, you should deploy a single server by setting the Min and Max ASG size to one. Then, complete the Moodle configuration wizard, and update CloudFormation stack setting the min and max ASG size to your desired limits.* +*`Note:` that the installation wizard causes spikes in CPU that could cause the cluster to scale unexpectedly. To avoid an issue with this during installation, initial deployment starts with minimum and maximum autoscaling values of 1. Once you complete the Moodle installation wizard, update the SSM parameter `IsMoodleSetupCompleted` and run the Moodle pipeline, the minimum and maximum autoscaling values will be updated according to your parameters.* ### Amazon Elastic File System (EFS) -Amazon Elastic File System (Amazon EFS) provides simple, scalable file storage for use with Amazon EC2 instances in the AWS Cloud. While installing Moodle on EFS would make management (updates, patching, etc.) easier, Moodle does not perform well when run from shared storage. Moodle recommends that dirroot is configured on local storage. Therefore, the template uses a combination of Elastic Block Storage (EBS) and EFS storage. Each web server in the Moodle Cluster employs the following directory structure: +Amazon Elastic File System (Amazon EFS) provides simple, scalable file storage in the AWS Cloud. Using EFS makes Moodle operations and management (shared files, updates, patches, etc.) easier. However, Moodle performance may suffer when the application code itself is run from mounted volumes like EFS. Moodle recommends `dirroot` to be on local or high-performance storage. This template follows that recommendation, and uses a combination of Elastic Block Storage (EBS) and EFS for storage. Each web server in the Moodle Cluster employs the following directory structure: ``` $CFG->dirroot = '/var/www/moodle/html' #Stored on root EBS volume +$CFG->localcachedir = '/var/www/moodle/local' #Stored on root EBS volume + $CFG->dataroot = '/var/www/moodle/data' #Stored on shared EFS filesystem $CFG->cachedir = '/var/www/moodle/cache' #Stored on shared EFS filesystem $CFG->tempdir = '/var/www/moodle/temp' #Stored on shared EFS filesystem -$CFG->localcachedir = '/var/www/moodle/local' #Stored on root EBS volume ``` -Elastic File System throughput scales as the file system grows. Initially EFS will have very little storage. Therefore, the template gives you the option to seed the file system with data to establish baseline performance. In addition, you can monitor the file system performance and add additional data if needed. There is a through discussion of this in the WordPress Reference Architecture. However, because we have chosen to install Moodle on local storage (the WordPress reference architecture installed on EFS) this should be less of a concern that it was for WordPress. +With [elastic](https://docs.aws.amazon.com/efs/latest/ug/performance.html#elastic) throughput type, Amazon EFS automatically scales throughput performance up or down to meet the needs of your workload activity. You don't need to specify or provision the throughput capacity to meet your application needs. + +*Moodle recommends the `dirroot` be set as read only for the apache process in a clustered environment [[Reference]](https://docs.moodle.org/400/en/Server_cluster#.24CFG-.3Edirroot). You should not install plugins to a server cluster from the admin page. `Moodle recommends manually installing plugins on each server during planned maintenance`. To follow the infrastructure-as-code methodology, installation/upgrade of plugins can be managed using AWS CodePipeline scripts. See the `.pipeline` folder inside your AWS CodeCommit Moodle repository. + +### AWS CodePipeline +This CloudFormation templates use AWS Services to create a CI/CD pipeline to help manage your Moodle environment. AWS CodeCommit will host a git repository for your Moodle environment. It initially pulls the source from [download.moodle.org.](https://download.moodle.org/download.php/stable400/moodle-4.0.5.tgz). It also adds files required to automate the deployment pipeline. You can explore these files under the `.pipeline` folder. +This template also creates an AWS CodePipeline configuration that build artifacts to deploy on EC2 with autoscaling groups using AWS CodeBuild and AWS CodeDeploy. It can optionally support a BLUE_GREEN deployment. -*Moodle recommends that when running clustered solutions "[dirroot should be always read only for apache process because otherwise built in plugin installation and uninstallation would get the nodes out of sync.](https://docs.moodle.org/34/en/Server_cluster#.24CFG-.3Edirroot)" As this statement implies, you cannot install plugins to a server cluster from the admin page. Moodle recommends manually installing plugins on each server during planned maintenance. To stay true to the infrastructure-as-code methodology employed by CloudFormation, we should script the installation of plugins. Alternatively, you could install the plugin on a single server, create an AMI, and update the Launch Configuration.* +*You can customize the overall pipeline for your Moodle setup.* -### Caching +### AWS Systems Manager - Parameter Store +This template also uses the Parameter Store to host Moodle environment configurations parameters like the database endpoint, the database credentials, the application and session cache endpoints, etc. This allows easy management of these configuration parameters. You can change these parameters and refresh your deployment to quickly implement them. -Caching can have a dramatic impact on Moodle's performance. The template will configure various forms of caching including OPcache, CloudFront and ElastiCache. +### `Caching` +--- +Caching can have a dramatic impact on Moodle's performance. This template configures various forms of caching including OPcache, CloudFront and ElastiCache. #### OPcache -Opcache speeds up PHP execution caching precompiled scripts in memory. OPcache benefits are increased performance and significantly lower memory usage. The template configures OPcache as described [here](https://docs.moodle.org/34/en/OPcache). +[PHP OPcache](https://www.php.net/manual/book.opcache.php) speeds up PHP execution by caching precompiled scripts in memory. This template configures OPcache as described [here](https://docs.moodle.org/400/en/OPcache). #### Amazon ElastiCache -Amazon ElastiCache for Memcached is a Memcached-compatible in-memory key-value store service that can be used as a cache or a data store. Moodle recommends that you [don't use the same memcached server for both sessions and MUC. Events triggering MUC caches to be purged leads to MUC purging the memcached server](https://docs.moodle.org/26/en/Session_handling). Therefore, the template configures two elasticache clusters, one for session caching and one for application caching. +Amazon ElastiCache for `Memcached` is a Memcached-compatible in-memory key-value store service that can be used as a cache or a data store. Moodle recommends that you `don't use the same memcached server for both sessions and MUC` [Refer](https://docs.moodle.org/26/en/Session_handling). Events triggering MUC caches to be purged leads to MUC purging the memcached server]. This template configures two ElastiCache clusters, one for session caching and one for application caching. + +This template also allows you to create `Amazon ElastiCache for Redis` as Redis compatible in-memory key-value store service that can be used as a cache or a data store. -##### Session Caching +#### Session Caching -Moodle recommends that you [store user sessions in one shared memcached server](https://docs.moodle.org/34/en/Server_cluster#Performance_recommendations). The template configures session caching as described [here](https://docs.moodle.org/34/en/Session_handling#Memcached_session_driver). +Moodle recommends that you [store user sessions in one shared memcached server](https://docs.moodle.org/en/Server_cluster#Performance_recommendations). The template configures session caching as described [here](https://docs.moodle.org/en/Session_handling#Memcached_session_driver). -*Note: Moodle installation wizard fails if memcached session caching is enabled during the initial configuration. Therefore, you must leave session caching disabled during the initial installation, and then update the template to enable session caching after completing the installation.* +*`Note:` This template doesn't configure the Session Cache during initial deployment. It waits for you to finish the initial Moodle installation wizard and update the Parameter `IsMoodleSetupCompleted` value to `Yes` in the SSM Parameter Store. Once the installation is completed, you need to run the Moodle pipeline to enable session caching and finalize the other remaining configuration.* -##### Application Caching +#### Application Caching -The template deploys an ElastiCache cluster for application caching, but the application caching must be configured after launch. You can configure memcache as described [here](https://docs.moodle.org/28/en/Caching#Memcached) filling in the auto-discovery endpoint to the list of Servers under both Store Configuration and Enable Clustered Servers (see image below). You can find the endpoint address in the outputs of the application caching stack. Finally, scroll to the bottom of the caching administration page in Moodle and set elasticache as the default store for application caching. +The template deploys an ElastiCache cluster for application caching, `but the application caching must be configured after the Moodle installation is completed`. You can configure [memcached](https://docs.moodle.org/en/Caching#Memcached) or [Redis](https://docs.moodle.org/en/Redis_cache_store) by filling in the auto-discovery endpoint to the list of Servers under both Store Configuration and Enable Clustered Servers (see image below). You can find the `ApplicationCacheServerEndpoint` address in the `Outputs` of the CloudFormation stack. Finally, scroll to the bottom of the caching administration page in Moodle and set ElastiCache as the default store for application caching. ![](images/aws-refarch-moodle-caching.png) +![](images/aws-refarch-moodle-caching-redis.png) #### Amazon CloudFront -Amazon CloudFront is a global content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to your viewers with low latency and high transfer speeds. The template can optionally configure CloudFront to cache content closer to your users. This is especially beneficial if your users are spread across a large geographic area. For example, remote students in an online program. +Amazon CloudFront is a global content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to your viewers with low latency and high transfer speeds. It also helps in caching content closer to user's geography and reduces loads on the web servers. ### Amazon Route 53 -Amazon Route 53 is a highly available and scalable cloud Domain Name System (DNS) web service. The template will optionally configure a Route53 alias that points to either the Application Load Balancer or CloudFront. If you are using another DNS system, you should create a CNAME record in your DNS system to reference either the Application Load Balancer or CloudFront (if deployed). If you don't have access to DNS you can leave Domain Name blank and the template will configure Moodle to use the auto-generated Application Load Balancer domain name. +Amazon Route 53 is a highly available and scalable cloud Domain Name System (DNS) service. The template will optionally configure a Route53 alias that points to either the Application Load Balancer or CloudFront. If you are using another DNS system, you should create a CNAME record in your DNS system to reference either the Application Load Balancer or CloudFront (if deployed). If you don't have access to DNS you can leave Domain Name blank and the template will configure Moodle to use the auto-generated Application Load Balancer domain name. + +--- ## License @@ -115,4 +148,4 @@ Portions copyright. - Moodle is licensed under the General Public License (GPLv3 or later) from the Free Software Foundation. - OPcache is licensed under PHP License, version 3.01. -Please see LICENSE for applicable license terms and NOTICE for applicable notices. \ No newline at end of file +Please see [LICENSE](LICENSE) for applicable license terms and [NOTICE](NOTICE) for applicable notices. diff --git a/images/aws-refarch-moodle-architecture.png b/images/aws-refarch-moodle-architecture.png index 86b6323e54ab420eddbd96069942dc3d5b2abb7e..9e40c851151a7c248e153b1f83e676c4f35a90eb 100644 GIT binary patch literal 634938 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

ljPWm@V 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≠&-mHVF(nVrH} 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

mha-G|KWK|^k1$ka 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

wDF@J_EpVl10>HA4}Z3Nw0`J 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≀LG{P)ZKbuj0DE?!3V1GZ&Xw}bw%*XV?STJN_x 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 z

~yz-vyudmcdQij1fd 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�ujGvn^a-oYC&M0&>EOG|L%-uT}W0R7M|GT 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౦|KVKcQHahbcl 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 diff --git a/templates/00-main.yaml b/templates/00-main.yaml index 3a24d9f..893f85c 100644 --- a/templates/00-main.yaml +++ b/templates/00-main.yaml @@ -3,8 +3,6 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Stack to deploy a highly available, elastic, scalable Moodle environment. This master stack launches multiple nested stacks for different tiers. !! This can only be run in certain AWS Regions - 'us-east-1', 'us-east-2', 'us-west-2', 'eu-west-1'. - - Metadata: AWS::CloudFormation::Interface: ParameterGroups: @@ -16,46 +14,36 @@ Metadata: - SshAccessCidr - HostedZoneName - DomainName - - UseRoute53Boolean + - NotifyEmailAddress - Label: default: Network Parameters: - NumberOfAZs - AvailabilityZones - VpcCidr - - VpcTenancy - PublicSubnet0Cidr - PublicSubnet1Cidr - PublicSubnet2Cidr - - PublicSubnet3Cidr - - PublicSubnet4Cidr - - PublicSubnet5Cidr - - WebSubnet0Cidr - - WebSubnet1Cidr - - WebSubnet2Cidr - - WebSubnet3Cidr - - WebSubnet4Cidr - - WebSubnet5Cidr + - AppSubnet0Cidr + - AppSubnet1Cidr + - AppSubnet2Cidr - DataSubnet0Cidr - DataSubnet1Cidr - DataSubnet2Cidr - - DataSubnet3Cidr - - DataSubnet4Cidr - - DataSubnet5Cidr - Label: - default: File System Tier + default: Shared File Storage Parameters: - - EfsPerformanceMode - - EfsEncrpytedBoolean - - EfsCmk - - EfsGrowth - - EfsGrowthInstanceType + - SharedStorageEncryptionBoolean + - SharedStorageEncryptionCmk - Label: default: Database Tier Parameters: - DatabaseType + - DatabaseUseServerless + - DatabaseMinCapacity + - DatabaseMaxCapacity - DatabaseInstanceType - - DatabaseEncrpytedBoolean + - DatabaseEncryptedBoolean - DatabaseCmk - DatabaseMasterUsername # - DatabaseMasterPassword @@ -63,7 +51,7 @@ Metadata: - Label: default: Caching Tier Parameters: - - CacheType + - CacheEngineType - UseSessionCacheBoolean - SessionCacheNodeType - UseApplicationCacheBoolean @@ -73,6 +61,7 @@ Metadata: - Label: default: Bastion Tier Parameters: + - NeedBastionHost - BastionInstanceType - Label: default: Web Tier @@ -87,33 +76,33 @@ Metadata: - MoodleLocale ParameterLabels: DeploymentLocation: - default: Location to deploy from (S3 URL) + default: "Location to deploy from (S3 URL without trailing slash, e.g.: https://.s3..amazonaws.com)" BastionInstanceType: default: Bastion Instance Type + NeedBastionHost: + default: Need Bastion Host? CloudFrontAcmCertificate: default: CloudFront Certificate ARN DatabaseCmk: default: AWS KMS CMK for RDS - DatabaseEncrpytedBoolean: + DatabaseEncryptedBoolean: default: Encrypted DB Cluster + DatabaseUseServerless: + default: Should the database use Serverless engines? + DatabaseMinCapacity: + default: (If serverless) Minimum capacity for database + DatabaseMaxCapacity: + default: (If serverless) Maximum capacity for database DatabaseInstanceType: - default: DB Instance Class + default: (If NOT serverless) DB Instance Type DatabaseMasterUsername: default: DB Master Username - # DatabaseMasterPassword: - # default: DB Master Password DatabaseName: default: DB Name - EfsCmk: - default: AWS KMS CMK for EFS - EfsEncrpytedBoolean: - default: Encrpyted EFS? - EfsPerformanceMode: - default: EFS Performance Mode - EfsGrowth: - default: Add dummy data (GiB) - EfsGrowthInstanceType: - default: Instance Type + SharedStorageEncryptionBoolean: + default: Shared File Storage Encrypted? + SharedStorageEncryptionCmk: + default: (Optional) Shared File Storage Encryption Key ARN (AWS KMS CMK) EC2KeyName: default: EC2 Key Pair PublicAlbAcmCertificate: @@ -137,7 +126,7 @@ Metadata: HostedZoneName: default: Hosted Zone DomainName: - default: Site Domain + default: Domain Name for Moodle site MoodleLocale: default: Language Code AvailabilityZones: @@ -146,48 +135,28 @@ Metadata: default: Number of Availability Zones VpcCidr: default: VpcCidr - VpcTenancy: - default: VpcTenancy PublicSubnet0Cidr: default: Public Subnet 0 PublicSubnet1Cidr: default: Public Subnet 1 PublicSubnet2Cidr: default: Public Subnet 2 - PublicSubnet3Cidr: - default: Public Subnet 3 - PublicSubnet4Cidr: - default: Public Subnet 4 - PublicSubnet5Cidr: - default: Public Subnet 5 - WebSubnet0Cidr: - default: Web Subnet 0 - WebSubnet1Cidr: - default: Web Subnet 1 - WebSubnet2Cidr: - default: Web Subnet 2 - WebSubnet3Cidr: - default: Web Subnet 3 - WebSubnet4Cidr: - default: Web Subnet 4 - WebSubnet5Cidr: - default: Web Subnet 5 + AppSubnet0Cidr: + default: App Subnet 0 + AppSubnet1Cidr: + default: App Subnet 1 + AppSubnet2Cidr: + default: App Subnet 2 DataSubnet0Cidr: default: Data Subnet 0 DataSubnet1Cidr: default: Data Subnet 1 DataSubnet2Cidr: default: Data Subnet 2 - DataSubnet3Cidr: - default: Data Subnet 3 - DataSubnet4Cidr: - default: Data Subnet 4 - DataSubnet5Cidr: - default: Data Subnet 5 - UseRoute53Boolean: - default: Use Route 53 + NotifyEmailAddress: + default: Email address for any notification UseCloudFrontBoolean: - default: Use Cloud Front + default: Use CloudFront Parameters: @@ -196,99 +165,110 @@ Parameters: Type: String BastionInstanceType: AllowedValues: - - t2.nano - - t2.micro - - t2.small - - t2.medium - - t2.large - - t2.xlarge - - t2.2xlarge - - m3.medium - - m3.large - - m3.xlarge - - m3.2xlarge - - m4.large - - m4.xlarge - - m4.2xlarge - - m4.4xlarge - - m4.10xlarge - - m4.16xlarge - - m5.large - - m5.xlarge - - m5.2xlarge - - m5.4xlarge - - m5.12xlarge - - m5.24xlarge - - c3.large - - c3.xlarge - - c3.2xlarge - - c3.4xlarge - - c3.8xlarge - - c4.large - - c4.xlarge - - c4.2xlarge - - c4.4xlarge - - c4.8xlarge - - c5.large - - c5.xlarge - - c5.2xlarge - - c5.4xlarge - - c5.9xlarge - - c5.18xlarge - - r3.large - - r3.xlarge - - r3.2xlarge - - r3.4xlarge - - r3.8xlarge - - r4.large - - r4.xlarge - - r4.2xlarge - - r4.4xlarge - - r4.8xlarge - - r4.16xlarge - - x1.16xlarge - - x1.32xlarge - - x1e.xlarge - - x1e.2xlarge - - x1e.4xlarge - - x1e.8xlarge - - x1e.16xlarge - - x1e.32xlarge - - d2.xlarge - - d2.2xlarge - - d2.4xlarge - - d2.8xlarge - - h1.2xlarge - - h1.4xlarge - - h1.8xlarge - - h1.16xlarge - - i2.xlarge - - i2.2xlarge - - i2.4xlarge - - i2.8xlarge - - i3.large - - i3.xlarge - - i3.2xlarge - - i3.4xlarge - - i3.8xlarge - - i3.16xlarge - - f1.2xlarge - - f1.16xlarge - - g2.2xlarge - - g2.8xlarge - - g3.4xlarge - - g3.8xlarge - - g3.16xlarge - - p2.xlarge - - p2.8xlarge - - p2.16xlarge - - p3.2xlarge - - p3.8xlarge - - p3.16xlarge + - t3.nano + - t3.micro + - t3.small + - t3.medium + - t3.large + - t3.xlarge + - t3.2xlarge + - m5.large + - m5.xlarge + - m5.2xlarge + - m5.4xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge + - c5.large + - c5.xlarge + - c5.2xlarge + - c5.4xlarge + - c5.9xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge + - t3a.nano + - t3a.micro + - t3a.small + - t3a.medium + - t3a.large + - t3a.xlarge + - t3a.2xlarge + - m5a.large + - m5a.xlarge + - m5a.2xlarge + - m5a.4xlarge + - m5a.8xlarge + - m5a.12xlarge + - m5a.16xlarge + - m5a.24xlarge + - c5a.large + - c5a.xlarge + - c5a.2xlarge + - c5a.4xlarge + - c5a.9xlarge + - c5a.12xlarge + - c5a.18xlarge + - c5a.24xlarge + - r5a.large + - r5a.xlarge + - r5a.2xlarge + - r5a.4xlarge + - r5a.8xlarge + - r5a.12xlarge + - r5a.16xlarge + - r5a.24xlarge + - t4g.nano + - t4g.micro + - t4g.small + - t4g.medium + - t4g.large + - t4g.xlarge + - t4g.2xlarge + - m6g.large + - m6g.xlarge + - m6g.2xlarge + - m6g.4xlarge + - m6g.8xlarge + - m6g.12xlarge + - m6g.16xlarge + - m6g.24xlarge + - c6g.large + - c6g.xlarge + - c6g.2xlarge + - c6g.4xlarge + - c6g.9xlarge + - c6g.12xlarge + - c6g.18xlarge + - c6g.24xlarge + - r6g.large + - r6g.xlarge + - r6g.2xlarge + - r6g.4xlarge + - r6g.8xlarge + - r6g.12xlarge + - r6g.16xlarge + - r6g.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: t2.nano + Default: t4g.nano Description: Bastion EC2 instance type. Type: String + NeedBastionHost: + AllowedValues: + - false + - true + Default: false + Description: Whether you need Bastion host to access machines, else you can use SSM agent by default. + Type: String PublicAlbAcmCertificate: AllowedPattern: ^$|(arn:aws:acm:)([a-z0-9/:-])*([a-z0-9])$ Description: '[ Optional ] The AWS Certification Manager certificate ARN for the ALB certificate - this certificate should be created in the region you wish to run the ALB and must reference the domain name you use below.' @@ -307,15 +287,51 @@ Parameters: Default: PostgreSQL Description: Indicates whether to use Aurora MySQL or PostgreSQL. Type: String - DatabaseEncrpytedBoolean: + DatabaseEncryptedBoolean: AllowedValues: - true - false Default: true Description: Indicates whether the DB instances in the cluster are encrypted. Type: String + DatabaseUseServerless: + AllowedValues: + - true + - false + Default: true + Description: Indicates whether the database should use the serverless engines. + Type: String + DatabaseMinCapacity: + AllowedValues: + - 0.5 + - 1 + - 2 + - 4 + - 5 + - 16 + - 32 + - 64 + - 128 + Default: 0.5 + Description: The minimum capacity for an Aurora DB cluster, starts with 0.5 and maximum up to 1 + Type: String + DatabaseMaxCapacity: + AllowedValues: + - 0.5 + - 1 + - 2 + - 4 + - 5 + - 16 + - 32 + - 64 + - 128 + Default: 64 + Description: The maximum capacity for an Aurora DB cluster, starts with 0.5 and maximum up to 1 + Type: String DatabaseInstanceType: AllowedValues: + - db.t3.medium - db.t3.large - db.r5.large - db.r5.xlarge @@ -331,88 +347,37 @@ Parameters: - db.r6g.8xlarge - db.r6g.12xlarge - db.r6g.16xlarge - ConstraintDescription: Must be a valid RDS instance class. - Default: db.r5.large - Description: The Amazon RDS database instance class. + ConstraintDescription: Must be a valid Aurora RDS instance type. + Default: db.r6g.large + Description: Amazon RDS database instance type (only used if non-serverless) Type: String DatabaseMasterUsername: AllowedPattern: ^([a-zA-Z0-9]*)$ - Description: The Amazon RDS master username. + Description: Aurora RDS master username ConstraintDescription: Must contain only alphanumeric characters and be at least 8 characters. MaxLength: 16 MinLength: 1 Type: String Default: moodle - # DatabaseMasterPassword: - # AllowedPattern: ^([a-zA-Z0-9`~!#$%^&*()_+,\\-])*$ - # ConstraintDescription: Must be letters (upper or lower), numbers, spaces, and these special characters `~!#$%^&*()_+,- - # Description: The Amazon RDS master password. Letters, numbers, spaces, and these special characters `~!#$%^&*()_+,- - # MaxLength: 41 - # MinLength: 8 - # NoEcho: true - # Type: String DatabaseName: AllowedPattern: ^([a-zA-Z0-9]*)$ - Description: The Amazon RDS master database name. + Description: Aurora RDS database name Type: String Default: moodle - EfsEncrpytedBoolean: + SharedStorageEncryptionBoolean: AllowedValues: - true - false Default: true - Description: Create an encrypted Amazon EFS file system. + Description: Do you want encrypted Shared file storage? Type: String - EfsCmk: + SharedStorageEncryptionCmk: AllowedPattern: ^$|(arn:aws:kms:)([a-z0-9/:-])*([a-z0-9])$ ConstraintDescription: Must be an existing ARN for an AWS KMS CMK. - Description: '[ Optional ] The AWS KMS customer-managed CMK ARN to encrypt & decrypt the EFS file system.' - Type: String - EfsPerformanceMode: - AllowedValues: - - generalPurpose - - maxIO - Default: generalPurpose - Description: Select the performance mode of the file system. + Description: '[ Optional ] The AWS KMS customer-managed CMK ARN to encrypt & decrypt the Shared file storage.' Type: String - EfsGrowth: - Default: 0 - ConstraintDescription: Must be an integer. - Description: Amount of dummy data (GiB) to add to the file system (max 6144 GiB). Amazon EFS storage charges apply. - MaxValue: 6144 - MinValue: 0 - Type: Number - EfsGrowthInstanceType: - AllowedValues: - - m5.large - - m5.xlarge - - m5.2xlarge - - m5.4xlarge - - m5.8xlarge - - m5.12xlarge - - m5.16xlarge - - m5.24xlarge - - c5.large - - c5.xlarge - - c5.2xlarge - - c5.4xlarge - - c5.9xlarge - - c5.12xlarge - - c5.18xlarge - - c5.24xlarge - - r5.large - - r5.xlarge - - r5.2xlarge - - r5.4xlarge - - r5.8xlarge - - r5.12xlarge - - r5.16xlarge - - r5.24xlarge - ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: r5.xlarge - Description: The Amazon EC2 instance type that adds data to the file system. - Type: String - CacheType: + + CacheEngineType: AllowedValues: - Redis - Memcached @@ -424,7 +389,7 @@ Parameters: - true - false Default: false - Description: Specifies whether an ElastiCache Cache Cluster should be created for sessions. Do not create a session cache during he inital deploy. You should update the stack to use session cache after completing the installation wizard. + Description: Specifies whether an ElastiCache Cache Cluster should be created for sessions. This will not be used at first and will be integrated only after IsMoodleSetupComplete parameter changes to 'Yes'. Type: String SessionCacheNodeType: AllowedValues: @@ -445,14 +410,14 @@ Parameters: - cache.m6g.12xlarge - cache.m6g.16xlarge ConstraintDescription: Must be a valid Amazon ElastiCache node type. - Default: cache.t3.micro + Default: cache.m6g.large Description: The Amazon ElastiCache cluster node type. Type: String UseApplicationCacheBoolean: AllowedValues: - true - false - Default: true + Default: false Description: Specifies whether an ElastiCache Cache Cluster should be created to cache application content. Type: String ApplicationCacheNodeType: @@ -474,7 +439,7 @@ Parameters: - cache.m6g.12xlarge - cache.m6g.16xlarge ConstraintDescription: Must be a valid Amazon ElastiCache node type. - Default: cache.t3.micro + Default: cache.m6g.large Description: The Amazon ElastiCache cluster node type. Type: String EC2KeyName: @@ -483,7 +448,7 @@ Parameters: Type: AWS::EC2::KeyPair::KeyName SshAccessCidr: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$ - Description: The CIDR IP range that is permitted to SSH to bastion instance. Note - a value of 0.0.0.0/0 will allow access from ANY IP address. + Description: The CIDR IP range that is permitted to SSH to bastion instance. Note - a value of 0.0.0.0/0 will allow access from ANY IP address. You could also use /32 to restrict to your own public IP address. Type: String Default: 0.0.0.0/0 WebAsgMax: @@ -531,8 +496,70 @@ Parameters: - r5.12xlarge - r5.16xlarge - r5.24xlarge + - t3a.nano + - t3a.micro + - t3a.small + - t3a.medium + - t3a.large + - t3a.xlarge + - t3a.2xlarge + - m5a.large + - m5a.xlarge + - m5a.2xlarge + - m5a.4xlarge + - m5a.8xlarge + - m5a.12xlarge + - m5a.16xlarge + - m5a.24xlarge + - c5a.large + - c5a.xlarge + - c5a.2xlarge + - c5a.4xlarge + - c5a.9xlarge + - c5a.12xlarge + - c5a.18xlarge + - c5a.24xlarge + - r5a.large + - r5a.xlarge + - r5a.2xlarge + - r5a.4xlarge + - r5a.8xlarge + - r5a.12xlarge + - r5a.16xlarge + - r5a.24xlarge + - t4g.nano + - t4g.micro + - t4g.small + - t4g.medium + - t4g.large + - t4g.xlarge + - t4g.2xlarge + - m6g.large + - m6g.xlarge + - m6g.2xlarge + - m6g.4xlarge + - m6g.8xlarge + - m6g.12xlarge + - m6g.16xlarge + - m6g.24xlarge + - c6g.large + - c6g.xlarge + - c6g.2xlarge + - c6g.4xlarge + - c6g.9xlarge + - c6g.12xlarge + - c6g.18xlarge + - c6g.24xlarge + - r6g.large + - r6g.xlarge + - r6g.2xlarge + - r6g.4xlarge + - r6g.8xlarge + - r6g.12xlarge + - r6g.16xlarge + - r6g.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: t3.large + Default: m6g.large Description: The Amazon EC2 instance type for your web instances. Type: String HostedZoneName: @@ -553,11 +580,9 @@ Parameters: Type: List NumberOfAZs: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 Default: 2 Description: Number of Availability Zones to use in the VPC. This must match your selections in the list of Availability Zones parameter. @@ -568,13 +593,6 @@ Parameters: Default: 10.0.0.0/16 Description: CIDR block for the VPC Type: String - VpcTenancy: - AllowedValues: - - default - - dedicated - Default: default - Description: The allowed tenancy of instances launched into the VPC - Type: String DataSubnet0Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 @@ -593,24 +611,6 @@ Parameters: Default: 10.0.102.0/24 Description: CIDR block for data subnet 2 located in Availability Zone 2 Type: String - DataSubnet3Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.103.0/24 - Description: CIDR block for data subnet 3 located in Availability Zone 3 - Type: String - DataSubnet4Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.104.0/24 - Description: CIDR block for data subnet 4 located in Availability Zone 4 - Type: String - DataSubnet5Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.105.0/24 - Description: CIDR block for data subnet 5 located in Availability Zone 5 - Type: String PublicSubnet0Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 @@ -629,76 +629,37 @@ Parameters: Default: 10.0.202.0/24 Description: CIDR block for Public subnet 2 located in Availability Zone 2 Type: String - PublicSubnet3Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.203.0/24 - Description: CIDR block for Public subnet 3 located in Availability Zone 3 - Type: String - PublicSubnet4Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.204.0/24 - Description: CIDR block for Public subnet 4 located in Availability Zone 4 - Type: String - PublicSubnet5Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.205.0/24 - Description: CIDR block for Public subnet 5 located in Availability Zone 5 - Type: String - WebSubnet0Cidr: + AppSubnet0Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 Default: 10.0.0.0/22 - Description: CIDR block for Web subnet 0 located in Availability Zone 0 + Description: CIDR block for App Subnet 0 located in Availability Zone 0 Type: String - WebSubnet1Cidr: + AppSubnet1Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 Default: 10.0.4.0/22 - Description: CIDR block for Web subnet 1 located in Availability Zone 1 + Description: CIDR block for App Subnet 1 located in Availability Zone 1 Type: String - WebSubnet2Cidr: + AppSubnet2Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 Default: 10.0.8.0/22 - Description: CIDR block for Web subnet 2 located in Availability Zone 2 - Type: String - WebSubnet3Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.12.0/22 - Description: CIDR block for Web subnet 3 located in Availability Zone 3 - Type: String - WebSubnet4Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.16.0/22 - Description: CIDR block for Web subnet 4 located in Availability Zone 4 - Type: String - WebSubnet5Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.20.0/22 - Description: CIDR block for Web subnet 5 located in Availability Zone 5 + Description: CIDR block for App Subnet 2 located in Availability Zone 2 Type: String UseCloudFrontBoolean: AllowedValues: - true - false - Default: true + Default: false Description: Specifies whether a CloudFront Distribution should be created to serve the Moodle website content. Type: String - UseRoute53Boolean: - AllowedValues: - - true - - false - Default: true - Description: Specifies whether a record set should be created in Route 53 for your Moodle domain name. + NotifyEmailAddress: + AllowedPattern: ^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$ + Description: Email address for notification Type: String + Default: hello@yourdomain.com - Conditions: DeployWithoutSessionCache: !Equals [ false, !Ref UseSessionCacheBoolean ] @@ -707,20 +668,97 @@ Conditions: DeployApplicationCache: !Equals [ true, !Ref UseApplicationCacheBoolean ] DeployRoute53: - !Equals [ true, !Ref UseRoute53Boolean ] + !And [ + !Not [!Equals ['', !Ref DomainName ] ], + !Not [ !Equals ['', !Ref HostedZoneName ] ] + ] + ErrorChoices: + !Or [ + !And [ + !Not [!Equals ['', !Ref DomainName ] ], #with domain name + !Equals [ true, !Ref UseCloudFrontBoolean ], #with cloudfront + !Equals ['', !Ref CloudFrontAcmCertificate ] #no SSL certificate + ], + !And [ + !Not [!Equals ['', !Ref HostedZoneName ] ], #with domain name internal + !Equals [ true, !Ref UseCloudFrontBoolean ], #with cloudfront + !Equals ['', !Ref CloudFrontAcmCertificate ] #no SSL certificate + ] + ] DeployCloudFront: - !Equals [ true, !Ref UseCloudFrontBoolean ] + !Or [ + !And [ #Domain Name with CloudFront but no SSL certificate will treat as CloudFront domain name only + !Not [!Equals ['', !Ref DomainName ] ], + !Equals [ true, !Ref UseCloudFrontBoolean ], + !Not [ !Equals ['', !Ref CloudFrontAcmCertificate ] ] + ], + !And [ + !Equals ['', !Ref DomainName ], + !Equals [ true, !Ref UseCloudFrontBoolean ] + ] + ] + DeployWithBastionHost: + !Equals [true, !Ref NeedBastionHost ] + SharedStorageEFS: + !Equals ['EFS', 'EFS' ] + DeployUsingRDSServerless: + !Equals [ true, !Ref DatabaseUseServerless ] + DeployUsingRDSInstances: + !Equals [ false, !Ref DatabaseUseServerless ] + NeedSSL: + !Or [ + !Equals [ true, !Ref UseCloudFrontBoolean ], #Either CloudFront + !Not [ !Equals ['', !Ref PublicAlbAcmCertificate ] ] #Either ACM certificate at ALB + ] + CustomDomainName: + !Or [ + !And [ #Domain Name with CloudFront but no SSL certificate will treat as CloudFront domain name only + !Not [!Equals ['', !Ref DomainName ] ], + !Equals [ true, !Ref UseCloudFrontBoolean ], + !Not [ !Equals ['', !Ref CloudFrontAcmCertificate ] ] + ], + !And [ #Domain Name with CloudFront but no SSL certificate will treat as CloudFront domain name only + !Not [!Equals ['', !Ref DomainName ] ], + !Equals [ false, !Ref UseCloudFrontBoolean ] + ] + ] + CloudFrontDnsName: + !And [ + !Equals ['', !Ref DomainName ], + !Equals [ true, !Ref UseCloudFrontBoolean ] ] + AlbDnsName: + !And [ + !Equals ['', !Ref DomainName ], + !Equals [ false, !Ref UseCloudFrontBoolean ] ] + Resources: - MyRDSInstanceSecret: + #Made it to fail the CloudformationDeployment due to Error choices. + SomeErrorInCloudFormationParamCombinationCheckErrorChoices: + Condition: ErrorChoices + Type: AWS::SSM::Parameter + Properties: + Name: '@#$' + Type: String + Value: '' + + rdsInstanceSecret: Type: AWS::SecretsManager::Secret Properties: - Description: 'This is the secret for my RDS instance' + Description: 'Credentials for Moodle RDS instance' GenerateSecretString: SecretStringTemplate: !Sub '{"username": "${DatabaseMasterUsername}"}' GenerateStringKey: 'password' PasswordLength: 16 ExcludeCharacters: '"@/\' + + IsMoodleSetupCompletedParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Sub '${AWS::StackName}', '/IsMoodleSetupCompleted' ] ] + Type: String + Value: 'No' + Description: SSM Parameter for Moodle Setup completed or not. Default 'No' any other value will be considered as 'Yes' vpc: Type: AWS::CloudFormation::Stack Properties: @@ -733,45 +771,26 @@ Resources: - !Ref AvailabilityZones VpcCidr: !Ref VpcCidr - VpcTenancy: - !Ref VpcTenancy PublicSubnet0Cidr: !Ref PublicSubnet0Cidr PublicSubnet1Cidr: !Ref PublicSubnet1Cidr PublicSubnet2Cidr: !Ref PublicSubnet2Cidr - PublicSubnet3Cidr: - !Ref PublicSubnet3Cidr - PublicSubnet4Cidr: - !Ref PublicSubnet4Cidr - PublicSubnet5Cidr: - !Ref PublicSubnet5Cidr - WebSubnet0Cidr: - !Ref WebSubnet0Cidr - WebSubnet1Cidr: - !Ref WebSubnet1Cidr - WebSubnet2Cidr: - !Ref WebSubnet2Cidr - WebSubnet3Cidr: - !Ref WebSubnet3Cidr - WebSubnet4Cidr: - !Ref WebSubnet4Cidr - WebSubnet5Cidr: - !Ref WebSubnet5Cidr + AppSubnet0Cidr: + !Ref AppSubnet0Cidr + AppSubnet1Cidr: + !Ref AppSubnet1Cidr + AppSubnet2Cidr: + !Ref AppSubnet2Cidr DataSubnet0Cidr: !Ref DataSubnet0Cidr DataSubnet1Cidr: !Ref DataSubnet1Cidr DataSubnet2Cidr: !Ref DataSubnet2Cidr - DataSubnet3Cidr: - !Ref DataSubnet3Cidr - DataSubnet4Cidr: - !Ref DataSubnet4Cidr - DataSubnet5Cidr: - !Ref DataSubnet5Cidr TemplateURL: !Sub '${DeploymentLocation}/01-newvpc.yaml' + securitygroups: DependsOn: vpc Type: AWS::CloudFormation::Stack @@ -781,27 +800,12 @@ Resources: !Ref SshAccessCidr Vpc: !GetAtt [ vpc, Outputs.Vpc ] + DatabaseType: + !Ref DatabaseType TemplateURL: !Sub '${DeploymentLocation}/02-securitygroups.yaml' - - s3: - DependsOn: securitygroups - Type: AWS::CloudFormation::Stack - Properties: - Parameters: - S3BucketName: - !Sub '${AWS::StackName}' - TemplateURL: !Sub '${DeploymentLocation}/03-s3.yaml' - - codecommit: - DependsOn: securitygroups - Type: AWS::CloudFormation::Stack - Properties: - Parameters: - RepoName: - !Sub '${AWS::StackName}' - TemplateURL: !Sub '${DeploymentLocation}/03-codecommit.yaml' bastion: + Condition: DeployWithBastionHost DependsOn: securitygroups Type: AWS::CloudFormation::Stack Properties: @@ -817,6 +821,7 @@ Resources: Subnet: !GetAtt [ vpc, Outputs.PublicSubnet ] TemplateURL: !Sub '${DeploymentLocation}/03-bastion.yaml' + publicalb: DependsOn: securitygroups Type: AWS::CloudFormation::Stack @@ -832,10 +837,14 @@ Resources: !GetAtt [ securitygroups, Outputs.PublicAlbSecurityGroup ] Vpc: !GetAtt [ vpc, Outputs.Vpc ] + ProjectName: + !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-publicalb.yaml' + rds: DependsOn: [ securitygroups ] Type: AWS::CloudFormation::Stack + Condition: DeployUsingRDSInstances Properties: Parameters: DatabaseType: @@ -844,12 +853,12 @@ Resources: !Ref DatabaseInstanceType # DatabaseMasterUsername: # !Ref DatabaseMasterUsername - MyRDSInstanceSecretArn: - !Ref MyRDSInstanceSecret + RDSInstanceSecretArn: + !Ref rdsInstanceSecret DatabaseName: !Ref DatabaseName - DatabaseEncrpytedBoolean: - !Ref DatabaseEncrpytedBoolean + DatabaseEncryptedBoolean: + !Ref DatabaseEncryptedBoolean DatabaseCmk: !Ref DatabaseCmk DatabaseSecurityGroup: @@ -858,43 +867,95 @@ Resources: !GetAtt [ vpc, Outputs.DataSubnet ] NumberOfSubnets: !Ref NumberOfAZs + ProjectName: + !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-rds.yaml' - efsfilesystem: - DependsOn: codecommit + + rdsserverless: + DependsOn: [ securitygroups ] + Type: AWS::CloudFormation::Stack + Condition: DeployUsingRDSServerless + Properties: + Parameters: + DatabaseType: + !Ref DatabaseType + RDSInstanceSecretArn: + !Ref rdsInstanceSecret + DatabaseName: + !Ref DatabaseName + DatabaseMinCapacity: + !Ref DatabaseMinCapacity + DatabaseMaxCapacity: + !Ref DatabaseMaxCapacity + DatabaseEncryptedBoolean: + !Ref DatabaseEncryptedBoolean + DatabaseCmk: + !Ref DatabaseCmk + DatabaseSecurityGroup: + !GetAtt [ securitygroups, Outputs.DatabaseSecurityGroup ] + Subnet: + !GetAtt [ vpc, Outputs.DataSubnet ] + NumberOfSubnets: + !Ref NumberOfAZs + ProjectName: + !Sub '${AWS::StackName}' + TemplateURL: !Sub '${DeploymentLocation}/03-rdsserverless.yaml' + + sharedEFS: + Condition: SharedStorageEFS + DependsOn: securitygroups Type: AWS::CloudFormation::Stack Properties: Parameters: - EncrpytedBoolean: - !Ref EfsEncrpytedBoolean + EncryptedBoolean: + !Ref SharedStorageEncryptionBoolean Cmk: - !Ref EfsCmk - Growth: - !Ref EfsGrowth - InstanceType: - !Ref EfsGrowthInstanceType - EC2KeyName: - !Ref EC2KeyName + !Ref SharedStorageEncryptionCmk SecurityGroup: !GetAtt [ securitygroups, Outputs.EfsSecurityGroup ] NumberOfSubnets: !Ref NumberOfAZs - PerformanceMode: - !Ref EfsPerformanceMode Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] - RepoHTTP: - !GetAtt [ codecommit, Outputs.RepoHTTP ] - RepoArn: - !GetAtt [ codecommit, Outputs.RepoArn ] + ProjectName: + !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-efsfilesystem.yaml' + + pipelineHelper: + DependsOn: securitygroups + Type: AWS::CloudFormation::Stack + Properties: + Parameters: + EC2KeyName: + !Ref EC2KeyName + PipelineSecurityGroup: + !GetAtt [ securitygroups, Outputs.EfsSecurityGroup ] + NumberOfSubnets: + !Ref NumberOfAZs + PipelineSubnet: + !GetAtt [ vpc, Outputs.AppSubnet ] + RDSInstanceSecretArn: + !Ref rdsInstanceSecret + DomainName: + !Ref DomainName + MoodleLocale: + !Ref MoodleLocale + ProjectName: + !Sub '${AWS::StackName}' + WebAsgMax: + !Ref WebAsgMax + WebAsgMin: + !Ref WebAsgMin + TemplateURL: !Sub '${DeploymentLocation}/03-pipelinehelper.yaml' + sessioncache: Condition: DeployWithSessionCache DependsOn: securitygroups Type: AWS::CloudFormation::Stack Properties: Parameters: - CacheType: - !Ref CacheType + CacheEngineType: !Ref CacheEngineType + CacheUsageType: 'session' Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] ElastiCacheClusterName: @@ -905,6 +966,8 @@ Resources: !GetAtt [ securitygroups, Outputs.ElastiCacheSecurityGroup ] NumberOfSubnets: !Ref NumberOfAZs + ProjectName: + !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-elasticache.yaml' applicationcache: Condition: DeployApplicationCache @@ -912,8 +975,8 @@ Resources: Type: AWS::CloudFormation::Stack Properties: Parameters: - CacheType: - !Ref CacheType + CacheEngineType: !Ref CacheEngineType + CacheUsageType: 'application' Subnet: !GetAtt [ vpc, Outputs.DataSubnet ] ElastiCacheClusterName: @@ -924,93 +987,79 @@ Resources: !GetAtt [ securitygroups, Outputs.ElastiCacheSecurityGroup ] NumberOfSubnets: !Ref NumberOfAZs + ProjectName: + !Sub '${AWS::StackName}' TemplateURL: !Sub '${DeploymentLocation}/03-elasticache.yaml' - webnocache: - DependsOn: [ publicalb, rds, efsfilesystem ] - Condition: DeployWithoutSessionCache + webapp: + DependsOn: [ publicalb, pipelineHelper ] Type: AWS::CloudFormation::Stack Properties: Parameters: - DatabaseClusterEndpointAddress: - !GetAtt [ rds, Outputs.DatabaseClusterEndpointAddress ] - # DatabaseMasterUsername: - # !Ref DatabaseMasterUsername - MyRDSInstanceSecretArn: - !Ref MyRDSInstanceSecret - DatabaseName: - !Ref DatabaseName - ElasticFileSystem: - !GetAtt [ efsfilesystem, Outputs.ElasticFileSystem ] + RDSInstanceSecretArn: + !Ref rdsInstanceSecret EC2KeyName: !Ref EC2KeyName NumberOfSubnets: !Ref NumberOfAZs + Subnet: + !GetAtt [ vpc, Outputs.AppSubnet ] PublicAlbTargetGroupArn: !GetAtt [ publicalb, Outputs.PublicAlbTargetGroupArn ] - PublicAlbHostname: - !GetAtt [ publicalb, Outputs.PublicAlbHostname ] - SslCertificate: - !GetAtt [ publicalb, Outputs.SslCertificate ] - WebAsgMax: - !Ref WebAsgMax - WebAsgMin: - !Ref WebAsgMin + WebAsgMax: 1 + WebAsgMin: 1 WebInstanceType: !Ref WebInstanceType WebSecurityGroup: !GetAtt [ securitygroups, Outputs.WebSecurityGroup ] - Subnet: - !GetAtt [ vpc, Outputs.WebSubnet ] - DomainName: - !Ref DomainName - MoodleLocale: - !Ref MoodleLocale - ElastiCacheClusterEndpointAddress: - '' + CodeArtifactS3BucketArn: !GetAtt [ pipelineHelper, Outputs.CodeArtifactS3BucketArn] TemplateURL: !Sub '${DeploymentLocation}/04-web.yaml' - webcached: - DependsOn: [ publicalb, rds, efsfilesystem, sessioncache ] - Condition: DeployWithSessionCache + + codePipeline: + DependsOn: [webapp, pipelineHelper, rds] + Condition: DeployUsingRDSInstances Type: AWS::CloudFormation::Stack Properties: Parameters: - DatabaseClusterEndpointAddress: - !GetAtt [ rds, Outputs.DatabaseClusterEndpointAddress ] - # DatabaseMasterUsername: - # !Ref DatabaseMasterUsername - MyRDSInstanceSecretArn: - !Ref MyRDSInstanceSecret - DatabaseName: - !Ref DatabaseName - ElasticFileSystem: - !GetAtt [ efsfilesystem, Outputs.ElasticFileSystem ] - EC2KeyName: - !Ref EC2KeyName - NumberOfSubnets: - !Ref NumberOfAZs - PublicAlbTargetGroupArn: - !GetAtt [ publicalb, Outputs.PublicAlbTargetGroupArn ] - PublicAlbHostname: - !GetAtt [ publicalb, Outputs.PublicAlbHostname ] - SslCertificate: - !GetAtt [ publicalb, Outputs.SslCertificate ] - WebAsgMax: - !Ref WebAsgMax - WebAsgMin: - !Ref WebAsgMin - WebInstanceType: - !Ref WebInstanceType - WebSecurityGroup: - !GetAtt [ securitygroups, Outputs.WebSecurityGroup ] - Subnet: - !GetAtt [ vpc, Outputs.WebSubnet ] - DomainName: - !Ref DomainName - MoodleLocale: - !Ref MoodleLocale - ElastiCacheClusterEndpointAddress: - !GetAtt sessioncache.Outputs.ElastiCacheClusterEndpointAddress - TemplateURL: !Sub '${DeploymentLocation}/04-web.yaml' + CodeCommitRepoName: + !GetAtt [ pipelineHelper, Outputs.MoodleRepoName ] + CodeCommitRepoArn: + !GetAtt [ pipelineHelper, Outputs.MoodleRepoArn ] + BranchName: 'main' + AppAutoScalingGroupName: + !GetAtt [ webapp, Outputs.WebAutoScalingGroupName ] + MoodleAppTargetGroupName: + !GetAtt [ publicalb, Outputs.PublicAlbTargetGroupName ] + CodeArtifactS3BucketName: + !GetAtt [ pipelineHelper, Outputs.CodeArtifactS3BucketName ] + CodeArtifactS3BucketArn: + !GetAtt [ pipelineHelper, Outputs.CodeArtifactS3BucketArn ] + ProjectName: + !Sub '${AWS::StackName}' + TemplateURL: !Sub '${DeploymentLocation}/05-codepipeline.yaml' + + codePipelineServerless: + DependsOn: [webapp, pipelineHelper, rdsserverless] + Condition: DeployUsingRDSServerless + Type: AWS::CloudFormation::Stack + Properties: + Parameters: + CodeCommitRepoName: + !GetAtt [ pipelineHelper, Outputs.MoodleRepoName ] + CodeCommitRepoArn: + !GetAtt [ pipelineHelper, Outputs.MoodleRepoArn ] + BranchName: 'main' + AppAutoScalingGroupName: + !GetAtt [ webapp, Outputs.WebAutoScalingGroupName ] + MoodleAppTargetGroupName: + !GetAtt [ publicalb, Outputs.PublicAlbTargetGroupName ] + CodeArtifactS3BucketName: + !GetAtt [ pipelineHelper, Outputs.CodeArtifactS3BucketName ] + CodeArtifactS3BucketArn: + !GetAtt [ pipelineHelper, Outputs.CodeArtifactS3BucketArn ] + ProjectName: + !Sub '${AWS::StackName}' + TemplateURL: !Sub '${DeploymentLocation}/05-codepipeline.yaml' + cloudfront: Condition: DeployCloudFront DependsOn: publicalb @@ -1024,6 +1073,34 @@ Resources: DomainName: !Ref DomainName TemplateURL: !Sub '${DeploymentLocation}/04-cloudfront.yaml' + + CustomDnsParam: + Condition: CustomDomainName + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Sub '${AWS::StackName}', '/Network/DomainName' ] ] + Type: String + Value: !Join [ '', [ !If [ NeedSSL, 'https://','http://'] ,!Ref DomainName ] ] + Description: SSM Parameter for Moodle Public DNS URL + CloudFrontDnsParam: + DependsOn: cloudfront + Condition: CloudFrontDnsName + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Sub '${AWS::StackName}', '/Network/DomainName' ] ] + Type: String + Value: !Join [ '', ['https://',!GetAtt [ cloudfront, Outputs.DnsName ] ] ] + Description: SSM Parameter for Moodle Public DNS URL + AlbDnsParam: + DependsOn: publicalb + Condition: AlbDnsName + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Sub '${AWS::StackName}', '/Network/DomainName' ] ] + Type: String + Value: !Join [ '', [ !If [ NeedSSL, 'https://','http://'] ,!GetAtt [ publicalb, Outputs.PublicAlbDnsName ] ] ] + Description: SSM Parameter for Moodle Public DNS URL + route53: Condition: DeployRoute53 DependsOn: publicalb @@ -1031,7 +1108,7 @@ Resources: Properties: Parameters: DnsEndpoint: - !If [ DeployCloudFront, !GetAtt [ cloudfront, Outputs.DnsEndpoint ], !GetAtt [ publicalb, Outputs.PublicAlbDnsName ] ] + !If [ DeployCloudFront, !GetAtt [ cloudfront, Outputs.DnsName ], !GetAtt [ publicalb, Outputs.PublicAlbDnsName ] ] DnsHostId: !If [ DeployCloudFront, 'Z2FDTNDATAQYW2', !GetAtt [ publicalb, Outputs.PublicAlbCanonicalHostedZoneId ] ] HostedZoneName: @@ -1040,40 +1117,42 @@ Resources: !Ref DomainName TemplateURL: !Sub '${DeploymentLocation}/05-route53.yaml' - paramdatabasetype: - Type: AWS::SSM::Parameter - Properties: - Name: MoodleDBType - Description: Moodle Aurora Database Type - Tier: Standard - Type: String - Value: !Ref DatabaseType - paramdatabasewriterdns: - Type: AWS::SSM::Parameter - Properties: - Name: MoodleDBWriterDNS - Description: Moodle Aurora Database Writer DNS - Tier: Standard - Type: String - Value: !Ref rds.Outputs.DatabaseClusterEndpointAddress - paramdatabasereaderdns: - Type: AWS::SSM::Parameter - Properties: - Name: MoodleDBReaderDNS - Description: Moodle Aurora Database Reader DNS - Tier: Standard - Type: String - Value: !Ref rds.Outputs.DatabaseClusterReadEndpointAddress - paramdatabaseport: - Type: AWS::SSM::Parameter - Properties: - Name: MoodleDBPort - Description: Moodle Aurora Database Port Number - Tier: Standard - Type: String - Value: !Ref rds.Outputs.DatabaseClusterEndpointPort Outputs: - DnsName: - Description: DNS name of the new load balancer for Moodle. + MoodleDomainName: + Description: Moodle URL Value: - !GetAtt publicalb.Outputs.PublicAlbDnsName \ No newline at end of file + !If [ CustomDomainName, + !Join [ '', [ !If [ NeedSSL, 'https://','http://'] , !Ref DomainName ] ], + !If [ DeployCloudFront, + !Join [ '', [ !If [ NeedSSL, 'https://','http://'] , !GetAtt [ cloudfront, Outputs.DnsName ] ] ], + !Join [ '', [ !If [ NeedSSL, 'https://','http://'] , !GetAtt [ publicalb, Outputs.PublicAlbDnsName ] ] ] + ] + ] + + DnsName: + Description: AWS-generated Moodle DNS Name (use this value to configure your custom DNS CNAME, if needed) + Value: + !If [ DeployCloudFront, + !GetAtt [ cloudfront, Outputs.DnsName ], + !GetAtt [ publicalb, Outputs.PublicAlbDnsName ] ] + + IsMoodleSetupCompleted: + Description: Once Moodle installation is completed, change this parameter value to 'Yes' and run pipeline + Value: !Join [ '', [ 'https://',!Ref "AWS::Region", '.console.aws.amazon.com/systems-manager/parameters', + !Ref IsMoodleSetupCompletedParam, '/description?region=',!Ref "AWS::Region" ] ] + + MoodleGitRepo: + Description: CodeCommit git repository having Moodle source code + Value: + !Join [ '', [ 'https://',!Ref "AWS::Region", '.console.aws.amazon.com/codesuite/codecommit/repositories/', + !Ref AWS::StackName, '-Repo/browse?region=',!Ref "AWS::Region" ] ] + + MoodleCodePipeline: + Description: Moodle Code pipeline allows you to deploy your changes + Value: + !Join [ '', [ 'https://',!Ref "AWS::Region", '.console.aws.amazon.com/codesuite/codepipeline/pipelines/', + !Ref AWS::StackName, '-Pipeline/view?region=',!Ref "AWS::Region" ] ] + + ApplicationCacheServerEndpoint: + Description: Application Cache server endpoint, use this to configure application cache endpoint in Moodle + Value: !If [DeployApplicationCache, !GetAtt applicationcache.Outputs.ElastiCacheClusterEndpointAddress, 'Not enabled'] diff --git a/templates/01-newvpc.yaml b/templates/01-newvpc.yaml index e5ca91d..91da615 100644 --- a/templates/01-newvpc.yaml +++ b/templates/01-newvpc.yaml @@ -14,25 +14,16 @@ Metadata: - NumberOfAZs - AvailabilityZones - VpcCidr - - VpcTenancy - PublicSubnet0Cidr - PublicSubnet1Cidr - PublicSubnet2Cidr - - PublicSubnet3Cidr - - PublicSubnet4Cidr - - PublicSubnet5Cidr - - WebSubnet0Cidr - - WebSubnet1Cidr - - WebSubnet2Cidr - - WebSubnet3Cidr - - WebSubnet4Cidr - - WebSubnet5Cidr + - AppSubnet0Cidr + - AppSubnet1Cidr + - AppSubnet2Cidr - DataSubnet0Cidr - DataSubnet1Cidr - DataSubnet2Cidr - - DataSubnet3Cidr - - DataSubnet4Cidr - - DataSubnet5Cidr + ParameterLabels: AvailabilityZones: default: Availability Zones @@ -40,45 +31,25 @@ Metadata: default: Number of Availability Zones VpcCidr: default: VpcCidr - VpcTenancy: - default: VpcTenancy PublicSubnet0Cidr: default: Public Subnet 0 PublicSubnet1Cidr: default: Public Subnet 1 PublicSubnet2Cidr: default: Public Subnet 2 - PublicSubnet3Cidr: - default: Public Subnet 3 - PublicSubnet4Cidr: - default: Public Subnet 4 - PublicSubnet5Cidr: - default: Public Subnet 5 - WebSubnet0Cidr: - default: Web Subnet 0 - WebSubnet1Cidr: - default: Web Subnet 1 - WebSubnet2Cidr: - default: Web Subnet 2 - WebSubnet3Cidr: - default: Web Subnet 3 - WebSubnet4Cidr: - default: Web Subnet 4 - WebSubnet5Cidr: - default: Web Subnet 5 + AppSubnet0Cidr: + default: App Subnet 0 + AppSubnet1Cidr: + default: App Subnet 1 + AppSubnet2Cidr: + default: App Subnet 2 DataSubnet0Cidr: default: Data Subnet 0 DataSubnet1Cidr: default: Data Subnet 1 DataSubnet2Cidr: default: Data Subnet 2 - DataSubnet3Cidr: - default: Data Subnet 3 - DataSubnet4Cidr: - default: Data Subnet 4 - DataSubnet5Cidr: - default: Data Subnet 5 - + Parameters: AvailabilityZones: @@ -87,12 +58,10 @@ Parameters: Type: List NumberOfAZs: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 - Default: 3 + Default: 2 Description: Number of Availability Zones to use in the VPC. This must match your selections in the list of Availability Zones parameter. Type: Number @@ -102,13 +71,6 @@ Parameters: Default: 10.0.0.0/16 Description: CIDR block for the VPC Type: String - VpcTenancy: - AllowedValues: - - default - - dedicated - Default: default - Description: The allowed tenancy of instances launched into the VPC - Type: String DataSubnet0Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 @@ -127,24 +89,6 @@ Parameters: Default: 10.0.102.0/24 Description: CIDR block for data subnet 2 located in Availability Zone 2 Type: String - DataSubnet3Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.103.0/24 - Description: CIDR block for data subnet 3 located in Availability Zone 3 - Type: String - DataSubnet4Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.104.0/24 - Description: CIDR block for data subnet 4 located in Availability Zone 4 - Type: String - DataSubnet5Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.105.0/24 - Description: CIDR block for data subnet 5 located in Availability Zone 5 - Type: String PublicSubnet0Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 @@ -163,61 +107,25 @@ Parameters: Default: 10.0.202.0/24 Description: CIDR block for Public subnet 2 located in Availability Zone 2 Type: String - PublicSubnet3Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.203.0/24 - Description: CIDR block for Public subnet 3 located in Availability Zone 3 - Type: String - PublicSubnet4Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.204.0/24 - Description: CIDR block for Public subnet 4 located in Availability Zone 4 - Type: String - PublicSubnet5Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.205.0/24 - Description: CIDR block for Public subnet 5 located in Availability Zone 5 - Type: String - WebSubnet0Cidr: + AppSubnet0Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 Default: 10.0.0.0/22 - Description: CIDR block for Web subnet 0 located in Availability Zone 0 + Description: CIDR block for App Subnet 0 located in Availability Zone 0 Type: String - WebSubnet1Cidr: + AppSubnet1Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 Default: 10.0.4.0/22 - Description: CIDR block for Web subnet 1 located in Availability Zone 1 + Description: CIDR block for App Subnet 1 located in Availability Zone 1 Type: String - WebSubnet2Cidr: + AppSubnet2Cidr: AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 Default: 10.0.8.0/22 - Description: CIDR block for Web subnet 2 located in Availability Zone 2 - Type: String - WebSubnet3Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.12.0/22 - Description: CIDR block for Web subnet 3 located in Availability Zone 3 + Description: CIDR block for App Subnet 2 located in Availability Zone 2 Type: String - WebSubnet4Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.16.0/22 - Description: CIDR block for Web subnet 4 located in Availability Zone 4 - Type: String - WebSubnet5Cidr: - AllowedPattern: "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(1[6-9]|2[0-8]))$" - ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 - Default: 10.0.20.0/22 - Description: CIDR block for Web subnet 5 located in Availability Zone 5 - Type: String - + Conditions: NumberOfAZs1: @@ -226,157 +134,76 @@ Conditions: !Equals [ '2', !Ref NumberOfAZs ] NumberOfAZs3: !Equals [ '3', !Ref NumberOfAZs ] - NumberOfAZs4: - !Equals [ '4', !Ref NumberOfAZs ] - NumberOfAZs5: - !Equals [ '5', !Ref NumberOfAZs ] - NumberOfAZs6: - !Equals [ '6', !Ref NumberOfAZs ] AZ0: !Or - !Condition NumberOfAZs1 - !Condition NumberOfAZs2 - !Condition NumberOfAZs3 - - !Condition NumberOfAZs4 - - !Condition NumberOfAZs5 - - !Condition NumberOfAZs6 AZ1: !Or - !Condition NumberOfAZs2 - !Condition NumberOfAZs3 - - !Condition NumberOfAZs4 - - !Condition NumberOfAZs5 - - !Condition NumberOfAZs6 - AZ2: !Or - - !Condition NumberOfAZs3 - - !Condition NumberOfAZs4 - - !Condition NumberOfAZs5 - - !Condition NumberOfAZs6 - AZ3: !Or - - !Condition NumberOfAZs4 - - !Condition NumberOfAZs5 - - !Condition NumberOfAZs6 - AZ4: !Or - - !Condition NumberOfAZs5 - - !Condition NumberOfAZs6 - AZ5: !Condition NumberOfAZs6 - + AZ2: !Condition NumberOfAZs3 + Resources: - WebSubnet0: + AppSubnet0: Condition: AZ0 Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Select [ 0, !Ref AvailabilityZones ] - CidrBlock: !Ref WebSubnet0Cidr + CidrBlock: !Ref AppSubnet0Cidr MapPublicIpOnLaunch: false Tags: - Key: Name - Value: !Join [ '', [ 'WebSubnet0 / ', !Ref 'AWS::StackName' ] ] + Value: !Join [ '', [ 'AppSubnet0 / ', !Ref 'AWS::StackName' ] ] - Key: SubnetType Value: Private VpcId: !Ref Vpc - WebSubnet1: + AppSubnet1: Condition: AZ1 Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Select [ 1, !Ref AvailabilityZones ] - CidrBlock: !Ref WebSubnet1Cidr + CidrBlock: !Ref AppSubnet1Cidr MapPublicIpOnLaunch: false Tags: - Key: Name - Value: !Join [ '', [ 'WebSubnet1 / ', !Ref 'AWS::StackName' ] ] + Value: !Join [ '', [ 'AppSubnet1 / ', !Ref 'AWS::StackName' ] ] - Key: SubnetType Value: Private VpcId: !Ref Vpc - WebSubnet2: + AppSubnet2: Condition: AZ2 Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Select [ 2, !Ref AvailabilityZones ] - CidrBlock: !Ref WebSubnet2Cidr - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: !Join [ '', [ 'WebSubnet2 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Private - VpcId: !Ref Vpc - WebSubnet3: - Condition: AZ3 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 3, !Ref AvailabilityZones ] - CidrBlock: !Ref WebSubnet3Cidr + CidrBlock: !Ref AppSubnet2Cidr MapPublicIpOnLaunch: false Tags: - Key: Name - Value: !Join [ '', [ 'WebSubnet3 / ', !Ref 'AWS::StackName' ] ] + Value: !Join [ '', [ 'AppSubnet2 / ', !Ref 'AWS::StackName' ] ] - Key: SubnetType Value: Private VpcId: !Ref Vpc - WebSubnet4: - Condition: AZ4 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 4, !Ref AvailabilityZones ] - CidrBlock: !Ref WebSubnet4Cidr - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: !Join [ '', [ 'WebSubnet4 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Private - VpcId: !Ref Vpc - WebSubnet5: - Condition: AZ5 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 5, !Ref AvailabilityZones ] - CidrBlock: !Ref WebSubnet5Cidr - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: !Join [ '', [ 'WebSubnet5 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Private - VpcId: !Ref Vpc - - WebSubnetRouteTableAssociation0: + + AppSubnetRouteTableAssociation0: Condition: AZ0 Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref NatRouteTable0 - SubnetId: !Ref WebSubnet0 - WebSubnetRouteTableAssociation1: + SubnetId: !Ref AppSubnet0 + AppSubnetRouteTableAssociation1: Condition: AZ1 Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref NatRouteTable1 - SubnetId: !Ref WebSubnet1 - WebSubnetRouteTableAssociation2: + SubnetId: !Ref AppSubnet1 + AppSubnetRouteTableAssociation2: Condition: AZ2 Type: AWS::EC2::SubnetRouteTableAssociation Properties: RouteTableId: !Ref NatRouteTable2 - SubnetId: !Ref WebSubnet2 - WebSubnetRouteTableAssociation3: - Condition: AZ3 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref NatRouteTable3 - SubnetId: !Ref WebSubnet3 - WebSubnetRouteTableAssociation4: - Condition: AZ4 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref NatRouteTable4 - SubnetId: !Ref WebSubnet4 - WebSubnetRouteTableAssociation5: - Condition: AZ5 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref NatRouteTable5 - SubnetId: !Ref WebSubnet5 - + SubnetId: !Ref AppSubnet2 + DataSubnet0: Condition: AZ0 Type: AWS::EC2::Subnet @@ -416,46 +243,7 @@ Resources: - Key: SubnetType Value: Private VpcId: !Ref Vpc - DataSubnet3: - Condition: AZ3 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 3, !Ref AvailabilityZones ] - CidrBlock: !Ref DataSubnet3Cidr - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: !Join [ '', [ 'DataSubnet3 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Private - VpcId: !Ref Vpc - DataSubnet4: - Condition: AZ4 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 4, !Ref AvailabilityZones ] - CidrBlock: !Ref DataSubnet4Cidr - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: !Join [ '', [ 'DataSubnet4 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Private - VpcId: !Ref Vpc - DataSubnet5: - Condition: AZ5 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 5, !Ref AvailabilityZones ] - CidrBlock: !Ref DataSubnet5Cidr - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: !Join [ '', [ 'DataSubnet5 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Private - VpcId: !Ref Vpc - + DataSubnetRouteTableAssociation0: Condition: AZ0 Type: AWS::EC2::SubnetRouteTableAssociation @@ -474,25 +262,7 @@ Resources: Properties: RouteTableId: !Ref NatRouteTable2 SubnetId: !Ref DataSubnet2 - DataSubnetRouteTableAssociation3: - Condition: AZ3 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref NatRouteTable3 - SubnetId: !Ref DataSubnet3 - DataSubnetRouteTableAssociation4: - Condition: AZ4 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref NatRouteTable4 - SubnetId: !Ref DataSubnet4 - DataSubnetRouteTableAssociation5: - Condition: AZ5 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref NatRouteTable5 - SubnetId: !Ref DataSubnet5 - + InternetGateway: Type: AWS::EC2::InternetGateway Properties: @@ -595,96 +365,6 @@ Resources: Value: Public VpcId: !Ref Vpc - NatEIP3: - Condition: AZ3 - Type: AWS::EC2::EIP - Properties: - Domain: vpc - NatGateway3: - Condition: AZ3 - Type: AWS::EC2::NatGateway - DependsOn: AttachInternetGateway - Properties: - AllocationId: !GetAtt NatEIP3.AllocationId - SubnetId: !Ref PublicSubnet3 - NatRoute3: - Condition: AZ3 - Type: AWS::EC2::Route - Properties: - RouteTableId: !Ref NatRouteTable3 - DestinationCidrBlock: 0.0.0.0/0 - NatGatewayId: !Ref NatGateway3 - NatRouteTable3: - Condition: AZ3 - Type: AWS::EC2::RouteTable - Properties: - Tags: - - Key: Name - Value: !Join [ '', [ 'NatRouteTable3 / ', !Ref 'AWS::StackName' ] ] - - Key: Network - Value: Public - VpcId: !Ref Vpc - - NatEIP4: - Condition: AZ4 - Type: AWS::EC2::EIP - Properties: - Domain: vpc - NatGateway4: - Condition: AZ4 - Type: AWS::EC2::NatGateway - DependsOn: AttachInternetGateway - Properties: - AllocationId: !GetAtt NatEIP4.AllocationId - SubnetId: !Ref PublicSubnet4 - NatRoute4: - Condition: AZ4 - Type: AWS::EC2::Route - Properties: - RouteTableId: !Ref NatRouteTable4 - DestinationCidrBlock: 0.0.0.0/0 - NatGatewayId: !Ref NatGateway4 - NatRouteTable4: - Condition: AZ4 - Type: AWS::EC2::RouteTable - Properties: - Tags: - - Key: Name - Value: !Join [ '', [ 'NatRouteTable4 / ', !Ref 'AWS::StackName' ] ] - - Key: Network - Value: Public - VpcId: !Ref Vpc - - NatEIP5: - Condition: AZ5 - Type: AWS::EC2::EIP - Properties: - Domain: vpc - NatGateway5: - Condition: AZ5 - Type: AWS::EC2::NatGateway - DependsOn: AttachInternetGateway - Properties: - AllocationId: !GetAtt NatEIP5.AllocationId - SubnetId: !Ref PublicSubnet5 - NatRoute5: - Condition: AZ5 - Type: AWS::EC2::Route - Properties: - RouteTableId: !Ref NatRouteTable5 - DestinationCidrBlock: 0.0.0.0/0 - NatGatewayId: !Ref NatGateway5 - NatRouteTable5: - Condition: AZ5 - Type: AWS::EC2::RouteTable - Properties: - Tags: - - Key: Name - Value: !Join [ '', [ 'NatRouteTable5 / ', !Ref 'AWS::StackName' ] ] - - Key: Network - Value: Public - VpcId: !Ref Vpc - PublicRoute: Type: AWS::EC2::Route DependsOn: AttachInternetGateway @@ -719,25 +399,7 @@ Resources: Properties: SubnetId: !Ref PublicSubnet2 RouteTableId: !Ref PublicRouteTable - PublicRouteTableAssociation3: - Condition: AZ3 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - SubnetId: !Ref PublicSubnet3 - RouteTableId: !Ref PublicRouteTable - PublicRouteTableAssociation4: - Condition: AZ4 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - SubnetId: !Ref PublicSubnet4 - RouteTableId: !Ref PublicRouteTable - PublicRouteTableAssociation5: - Condition: AZ5 - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - SubnetId: !Ref PublicSubnet5 - RouteTableId: !Ref PublicRouteTable - + PublicSubnet0: Condition: AZ0 Type: AWS::EC2::Subnet @@ -777,46 +439,7 @@ Resources: - Key: SubnetType Value: Public VpcId: !Ref Vpc - PublicSubnet3: - Condition: AZ3 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 3, !Ref AvailabilityZones ] - CidrBlock: !Ref PublicSubnet3Cidr - MapPublicIpOnLaunch: true - Tags: - - Key: Name - Value: !Join [ '', [ 'PublicSubnet3 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Public - VpcId: !Ref Vpc - PublicSubnet4: - Condition: AZ4 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 4, !Ref AvailabilityZones ] - CidrBlock: !Ref PublicSubnet4Cidr - MapPublicIpOnLaunch: true - Tags: - - Key: Name - Value: !Join [ '', [ 'PublicSubnet4 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Public - VpcId: !Ref Vpc - PublicSubnet5: - Condition: AZ5 - Type: AWS::EC2::Subnet - Properties: - AvailabilityZone: !Select [ 5, !Ref AvailabilityZones ] - CidrBlock: !Ref PublicSubnet5Cidr - MapPublicIpOnLaunch: true - Tags: - - Key: Name - Value: !Join [ '', [ 'PublicSubnet5 / ', !Ref 'AWS::StackName' ] ] - - Key: SubnetType - Value: Public - VpcId: !Ref Vpc - + Vpc: Type: AWS::EC2::VPC Properties: @@ -876,33 +499,15 @@ Outputs: PublicSubnet2: Condition: AZ2 Value: !Ref PublicSubnet2 - PublicSubnet3: - Condition: AZ3 - Value: !Ref PublicSubnet3 - PublicSubnet4: - Condition: AZ4 - Value: !Ref PublicSubnet4 - PublicSubnet5: - Condition: AZ5 - Value: !Ref PublicSubnet5 - WebSubnet0: + AppSubnet0: Condition: AZ0 - Value: !Ref WebSubnet0 - WebSubnet1: + Value: !Ref AppSubnet0 + AppSubnet1: Condition: AZ1 - Value: !Ref WebSubnet1 - WebSubnet2: + Value: !Ref AppSubnet1 + AppSubnet2: Condition: AZ2 - Value: !Ref WebSubnet2 - WebSubnet3: - Condition: AZ3 - Value: !Ref WebSubnet3 - WebSubnet4: - Condition: AZ4 - Value: !Ref WebSubnet4 - WebSubnet5: - Condition: AZ5 - Value: !Ref WebSubnet5 + Value: !Ref AppSubnet2 DataSubnet0: Condition: AZ0 Value: !Ref DataSubnet0 @@ -912,15 +517,6 @@ Outputs: DataSubnet2: Condition: AZ2 Value: !Ref DataSubnet2 - DataSubnet3: - Condition: AZ3 - Value: !Ref DataSubnet3 - DataSubnet4: - Condition: AZ4 - Value: !Ref DataSubnet4 - DataSubnet5: - Condition: AZ5 - Value: !Ref DataSubnet5 DataSubnet: Value: !If @@ -929,42 +525,18 @@ Outputs: !If [ NumberOfAZs2, !Join [ ',', [ !Ref DataSubnet0, !Ref DataSubnet1 ] ], - !If - [ NumberOfAZs3, - !Join [ ',', [ !Ref DataSubnet0, !Ref DataSubnet1, !Ref DataSubnet2 ] ], - !If - [ NumberOfAZs4, - !Join [ ',', [ !Ref DataSubnet0, !Ref DataSubnet1, !Ref DataSubnet2, !Ref DataSubnet3 ] ], - !If - [ NumberOfAZs5, - !Join [ ',', [ !Ref DataSubnet0, !Ref DataSubnet1, !Ref DataSubnet2, !Ref DataSubnet3, !Ref DataSubnet4 ] ], - !Join [ ',', [ !Ref DataSubnet0, !Ref DataSubnet1, !Ref DataSubnet2, !Ref DataSubnet3, !Ref DataSubnet4, !Ref DataSubnet5 ] ] - ] - ] - ] + !Join [ ',', [ !Ref DataSubnet0, !Ref DataSubnet1, !Ref DataSubnet2 ] ] ] ] - WebSubnet: + AppSubnet: Value: !If [ NumberOfAZs1, - !Ref WebSubnet0, + !Ref AppSubnet0, !If [ NumberOfAZs2, - !Join [ ',', [ !Ref WebSubnet0, !Ref WebSubnet1 ] ], - !If - [ NumberOfAZs3, - !Join [ ',', [ !Ref WebSubnet0, !Ref WebSubnet1, !Ref WebSubnet2 ] ], - !If - [ NumberOfAZs4, - !Join [ ',', [ !Ref WebSubnet0, !Ref WebSubnet1, !Ref WebSubnet2, !Ref WebSubnet3 ] ], - !If - [ NumberOfAZs5, - !Join [ ',', [ !Ref WebSubnet0, !Ref WebSubnet1, !Ref WebSubnet2, !Ref WebSubnet3, !Ref WebSubnet4 ] ], - !Join [ ',', [ !Ref WebSubnet0, !Ref WebSubnet1, !Ref WebSubnet2, !Ref WebSubnet3, !Ref WebSubnet4, !Ref WebSubnet5 ] ] - ] - ] - ] + !Join [ ',', [ !Ref AppSubnet0, !Ref AppSubnet1 ] ], + !Join [ ',', [ !Ref AppSubnet0, !Ref AppSubnet1, !Ref AppSubnet2 ] ] ] ] PublicSubnet: @@ -975,19 +547,7 @@ Outputs: !If [ NumberOfAZs2, !Join [ ',', [ !Ref PublicSubnet0, !Ref PublicSubnet1 ] ], - !If - [ NumberOfAZs3, - !Join [ ',', [ !Ref PublicSubnet0, !Ref PublicSubnet1, !Ref PublicSubnet2 ] ], - !If - [ NumberOfAZs4, - !Join [ ',', [ !Ref PublicSubnet0, !Ref PublicSubnet1, !Ref PublicSubnet2, !Ref PublicSubnet3 ] ], - !If - [ NumberOfAZs5, - !Join [ ',', [ !Ref PublicSubnet0, !Ref PublicSubnet1, !Ref PublicSubnet2, !Ref PublicSubnet3, !Ref PublicSubnet4 ] ], - !Join [ ',', [ !Ref PublicSubnet0, !Ref PublicSubnet1, !Ref PublicSubnet2, !Ref PublicSubnet3, !Ref PublicSubnet4, !Ref PublicSubnet5 ] ] - ] - ] - ] - ] + !Join [ ',', [ !Ref PublicSubnet0, !Ref PublicSubnet1, !Ref PublicSubnet2 ] ] + ] ] diff --git a/templates/02-securitygroups.yaml b/templates/02-securitygroups.yaml index 7d939a9..0704e69 100644 --- a/templates/02-securitygroups.yaml +++ b/templates/02-securitygroups.yaml @@ -27,7 +27,16 @@ Parameters: AllowedPattern: ^(vpc-)([a-z0-9]{8}|[a-z0-9]{17})$ Description: The Vpc Id of an existing Vpc. Type: AWS::EC2::VPC::Id - + DatabaseType: + AllowedValues: + - MySQL + - PostgreSQL + Default: PostgreSQL + Description: Indicates whether to use Aurora MySQL or PostgreSQL. + Type: String +Conditions: + UsePostgreSQL: + !Equals [!Ref DatabaseType, PostgreSQL] Resources: BastionSecurityGroup: @@ -48,8 +57,8 @@ Resources: GroupDescription: Security group for Amazon RDS cluster SecurityGroupIngress: - IpProtocol: tcp - FromPort: 5432 - ToPort: 5432 + FromPort: !If [ UsePostgreSQL, 5432, 3306 ] + ToPort: !If [ UsePostgreSQL, 5432, 3306 ] SourceSecurityGroupId: !Ref WebSecurityGroup VpcId: !Ref Vpc @@ -63,6 +72,10 @@ Resources: FromPort: 11211 ToPort: 11211 SourceSecurityGroupId: !Ref WebSecurityGroup + - IpProtocol: tcp + FromPort: 6379 + ToPort: 6379 + SourceSecurityGroupId: !Ref WebSecurityGroup VpcId: !Ref Vpc EfsSecurityGroup: diff --git a/templates/03-bastion.yaml b/templates/03-bastion.yaml index 2a1878d..e076a23 100644 --- a/templates/03-bastion.yaml +++ b/templates/03-bastion.yaml @@ -34,97 +34,101 @@ Parameters: Type: AWS::EC2::SecurityGroup::Id BastionInstanceType: AllowedValues: - - t2.nano - - t2.micro - - t2.small - - t2.medium - - t2.large - - t2.xlarge - - t2.2xlarge - - m3.medium - - m3.large - - m3.xlarge - - m3.2xlarge - - m4.large - - m4.xlarge - - m4.2xlarge - - m4.4xlarge - - m4.10xlarge - - m4.16xlarge - - m5.large - - m5.xlarge - - m5.2xlarge - - m5.4xlarge - - m5.12xlarge - - m5.24xlarge - - c3.large - - c3.xlarge - - c3.2xlarge - - c3.4xlarge - - c3.8xlarge - - c4.large - - c4.xlarge - - c4.2xlarge - - c4.4xlarge - - c4.8xlarge - - c5.large - - c5.xlarge - - c5.2xlarge - - c5.4xlarge - - c5.9xlarge - - c5.18xlarge - - r3.large - - r3.xlarge - - r3.2xlarge - - r3.4xlarge - - r3.8xlarge - - r4.large - - r4.xlarge - - r4.2xlarge - - r4.4xlarge - - r4.8xlarge - - r4.16xlarge - - x1.16xlarge - - x1.32xlarge - - x1e.xlarge - - x1e.2xlarge - - x1e.4xlarge - - x1e.8xlarge - - x1e.16xlarge - - x1e.32xlarge - - d2.xlarge - - d2.2xlarge - - d2.4xlarge - - d2.8xlarge - - h1.2xlarge - - h1.4xlarge - - h1.8xlarge - - h1.16xlarge - - i2.xlarge - - i2.2xlarge - - i2.4xlarge - - i2.8xlarge - - i3.large - - i3.xlarge - - i3.2xlarge - - i3.4xlarge - - i3.8xlarge - - i3.16xlarge - - f1.2xlarge - - f1.16xlarge - - g2.2xlarge - - g2.8xlarge - - g3.4xlarge - - g3.8xlarge - - g3.16xlarge - - p2.xlarge - - p2.8xlarge - - p2.16xlarge - - p3.2xlarge - - p3.8xlarge - - p3.16xlarge + - t3.nano + - t3.micro + - t3.small + - t3.medium + - t3.large + - t3.xlarge + - t3.2xlarge + - m5.large + - m5.xlarge + - m5.2xlarge + - m5.4xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge + - c5.large + - c5.xlarge + - c5.2xlarge + - c5.4xlarge + - c5.9xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge + - t3a.nano + - t3a.micro + - t3a.small + - t3a.medium + - t3a.large + - t3a.xlarge + - t3a.2xlarge + - m5a.large + - m5a.xlarge + - m5a.2xlarge + - m5a.4xlarge + - m5a.8xlarge + - m5a.12xlarge + - m5a.16xlarge + - m5a.24xlarge + - c5a.large + - c5a.xlarge + - c5a.2xlarge + - c5a.4xlarge + - c5a.9xlarge + - c5a.12xlarge + - c5a.18xlarge + - c5a.24xlarge + - r5a.large + - r5a.xlarge + - r5a.2xlarge + - r5a.4xlarge + - r5a.8xlarge + - r5a.12xlarge + - r5a.16xlarge + - r5a.24xlarge + - t4g.nano + - t4g.micro + - t4g.small + - t4g.medium + - t4g.large + - t4g.xlarge + - t4g.2xlarge + - m6g.large + - m6g.xlarge + - m6g.2xlarge + - m6g.4xlarge + - m6g.8xlarge + - m6g.12xlarge + - m6g.16xlarge + - m6g.24xlarge + - c6g.large + - c6g.xlarge + - c6g.2xlarge + - c6g.4xlarge + - c6g.9xlarge + - c6g.12xlarge + - c6g.18xlarge + - c6g.24xlarge + - r6g.large + - r6g.xlarge + - r6g.2xlarge + - r6g.4xlarge + - r6g.8xlarge + - r6g.12xlarge + - r6g.16xlarge + - r6g.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: t2.nano + Default: t4g.nano Description: Bastion EC2 instance type. Type: String EC2KeyName: @@ -132,12 +136,10 @@ Parameters: Type: AWS::EC2::KeyPair::KeyName NumberOfSubnets: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 - Default: 3 + Default: 2 Description: Number of subnets. This must match your selections in the list of subnets below. Type: String Subnet: @@ -146,6 +148,9 @@ Parameters: LatestAmiId : Type : AWS::SSM::Parameter::Value Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 + LatestArmAmiId : + Type : AWS::SSM::Parameter::Value + Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2 Conditions: @@ -156,38 +161,19 @@ Conditions: !Equals [ 2, !Ref NumberOfSubnets ] NumberOfSubnets3: !Equals [ 3, !Ref NumberOfSubnets ] - NumberOfSubnets4: - !Equals [ 4, !Ref NumberOfSubnets ] - NumberOfSubnets5: - !Equals [ 5, !Ref NumberOfSubnets ] - NumberOfSubnets6: - !Equals [ 6, !Ref NumberOfSubnets ] Subnet0: !Or - !Condition NumberOfSubnets1 - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 Subnet1: !Or - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet2: !Or - - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet3: !Or - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet4: !Or - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet5: !Condition NumberOfSubnets6 + Subnet2: !Condition NumberOfSubnets3 + UsingGraviton2Ami: !Or + - !Equals ["t4",!Select [0, !Split [ "g.", !Ref BastionInstanceType]]] + - !Equals ["c6",!Select [0, !Split [ "g.", !Ref BastionInstanceType]]] + - !Equals ["m6",!Select [0, !Split [ "g.", !Ref BastionInstanceType]]] + - !Equals ["r6",!Select [0, !Split [ "g.", !Ref BastionInstanceType]]] Resources: @@ -198,7 +184,9 @@ Resources: Cooldown: 60 HealthCheckGracePeriod: 120 HealthCheckType: EC2 - LaunchConfigurationName: !Ref BastionLaunchConfiguration + LaunchTemplate: + LaunchTemplateId: !Ref BastionLaunchTemplate + Version: !GetAtt BastionLaunchTemplate.LatestVersionNumber MaxSize: 1 MinSize: 0 Tags: @@ -212,31 +200,30 @@ Resources: !If [ NumberOfSubnets2, [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], - !If - [ NumberOfSubnets3, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ], - !If - [ NumberOfSubnets4, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ] ], - !If - [ NumberOfSubnets5, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ] ], - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ], !Select [ 5, !Ref Subnet ] ] - ] - ] - ] + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ] ] ] - BastionLaunchConfiguration: - Type: AWS::AutoScaling::LaunchConfiguration + BastionLaunchTemplate: + Type: AWS::EC2::LaunchTemplate Properties: - IamInstanceProfile: !Ref BastionInstanceProfile - ImageId: !Ref LatestAmiId - InstanceMonitoring: true - InstanceType: !Ref BastionInstanceType - KeyName: !Ref EC2KeyName - SecurityGroups: - - !Ref BastionSecurityGroup + LaunchTemplateData: + IamInstanceProfile: + Arn: !GetAtt BastionInstanceProfile.Arn + ImageId: !If [UsingGraviton2Ami, !Ref LatestArmAmiId, !Ref LatestAmiId] + Monitoring: + Enabled: true + InstanceType: !Ref BastionInstanceType + KeyName: !Ref EC2KeyName + SecurityGroupIds: + - !Ref BastionSecurityGroup + UserData: + Fn::Base64: + !Sub | + #!/bin/bash -xe + sudo systemctl enable amazon-ssm-agent + sudo systemctl start amazon-ssm-agent + sudo systemctl status amazon-ssm-agent + BastionInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: @@ -255,6 +242,8 @@ Resources: - ec2.amazonaws.com Action: - sts:AssumeRole + ManagedPolicyArns: + - 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore' Path: '/' Policies: - PolicyName: logs diff --git a/templates/03-efsfilesystem.yaml b/templates/03-efsfilesystem.yaml index 51f7dc3..b70945d 100644 --- a/templates/03-efsfilesystem.yaml +++ b/templates/03-efsfilesystem.yaml @@ -1,50 +1,10 @@ --- AWSTemplateFormatVersion: 2010-09-09 -Description: Reference Architecture to host Moodle on AWS - Creates EFS file system - -Metadata: - - AWS::CloudFormation::Interface: - - ParameterGroups: - - Label: - default: Amazon EFS Parameters - Parameters: - - Growth - - InstanceType - - EC2KeyName - - PerformanceMode - - EncrpytedBoolean - - Cmk - - SecurityGroup - - NumberOfSubnets - - Subnet - - RepoHTTP - - RepoArn - ParameterLabels: - EncrpytedBoolean: - default: Encryption state - Cmk: - default: KMS Key - Growth: - default: Add data (GiB) - InstanceType: - default: Instance Type - EC2KeyName: - default: Existing Key Pair - NumberOfSubnets: - default: Number of subnets - PerformanceMode: - default: Performance Mode - SecurityGroup: - default: EFS Security Group - Subnet: - default: Subnets +Description: Setting up EFS File System and Target mount points for each subnet Parameters: - - EncrpytedBoolean: + EncryptedBoolean: AllowedValues: - True - False @@ -54,135 +14,56 @@ Parameters: Cmk: Description: An existing AWS KMS Customer Master Key (CMK) to encrypt file system Type: String - Growth: - ConstraintDescription: Must be an integer. - Default: 0 - Description: Amount of dummy data (GiB) to add to the file system (max 6144 GiB). Amazon EFS storage charges apply. - MaxValue: 6144 - MinValue: 0 - Type: Number - InstanceType: - AllowedValues: - - m5.large - - m5.xlarge - - m5.2xlarge - - m5.4xlarge - - m5.8xlarge - - m5.12xlarge - - m5.16xlarge - - m5.24xlarge - - c5.large - - c5.xlarge - - c5.2xlarge - - c5.4xlarge - - c5.9xlarge - - c5.12xlarge - - c5.18xlarge - - c5.24xlarge - - r5.large - - r5.xlarge - - r5.2xlarge - - r5.4xlarge - - r5.8xlarge - - r5.12xlarge - - r5.16xlarge - - r5.24xlarge - ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: r5.xlarge - Description: The Amazon EC2 instance type that adds data to the file system. - Type: String - EC2KeyName: - Description: Name of an existing EC2 key pair - Type: AWS::EC2::KeyPair::KeyName NumberOfSubnets: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 - Default: 3 + Default: 2 Description: Number of subnets. This must match your selections in the list of Subnets below. Type: String - PerformanceMode: - AllowedValues: - - generalPurpose - - maxIO - Default: generalPurpose - Description: Select the performance mode of the file system. - Type: String SecurityGroup: Description: Select the Amazon EFS security group. Type: AWS::EC2::SecurityGroup::Id Subnet: Description: Select existing subnets. - Type: List - LatestAmiId: - Type : AWS::SSM::Parameter::Value - Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 - RepoHTTP: - Description: CodeCommit repository HTTP URL. + Type: List + ProjectName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Default: App + Description: The Moodle Project Name Type: String - RepoArn: - Description: CodeCommit Arn. - Type: String Conditions: - NumberOfSubnets1: !Equals [ 1, !Ref NumberOfSubnets ] NumberOfSubnets2: !Equals [ 2, !Ref NumberOfSubnets ] NumberOfSubnets3: !Equals [ 3, !Ref NumberOfSubnets ] - NumberOfSubnets4: - !Equals [ 4, !Ref NumberOfSubnets ] - NumberOfSubnets5: - !Equals [ 5, !Ref NumberOfSubnets ] - NumberOfSubnets6: - !Equals [ 6, !Ref NumberOfSubnets ] Subnet0: !Or - !Condition NumberOfSubnets1 - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 Subnet1: !Or - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet2: !Or - - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet3: !Or - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet4: !Or - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet5: !Condition NumberOfSubnets6 + Subnet2: !Condition NumberOfSubnets3 UseAWS-ManagedCMK: !Equals ['', !Ref Cmk] - - + Resources: - ElasticFileSystem: Type: AWS::EFS::FileSystem Properties: - Encrypted: !Ref EncrpytedBoolean + Encrypted: !Ref EncryptedBoolean KmsKeyId: !If [ UseAWS-ManagedCMK, !Ref 'AWS::NoValue', !Ref Cmk ] FileSystemTags: - Key: Name - Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] - PerformanceMode: !Ref PerformanceMode + Value: !Join [ '-', [ !Ref ProjectName, 'FileSystem'] ] + PerformanceMode: generalPurpose + ThroughputMode: elastic ElasticFileSystemMountTarget0: Condition: Subnet0 Type: AWS::EFS::MountTarget @@ -207,374 +88,17 @@ Resources: SecurityGroups: - !Ref SecurityGroup SubnetId: !Select [ 2, !Ref Subnet ] - ElasticFileSystemMountTarget3: - Condition: Subnet3 - Type: AWS::EFS::MountTarget - Properties: - FileSystemId: !Ref ElasticFileSystem - SecurityGroups: - - !Ref SecurityGroup - SubnetId: !Select [ 3, !Ref Subnet ] - ElasticFileSystemMountTarget4: - Condition: Subnet4 - Type: AWS::EFS::MountTarget - Properties: - FileSystemId: !Ref ElasticFileSystem - SecurityGroups: - - !Ref SecurityGroup - SubnetId: !Select [ 4, !Ref Subnet ] - ElasticFileSystemMountTarget5: - Condition: Subnet5 - Type: AWS::EFS::MountTarget - Properties: - FileSystemId: !Ref ElasticFileSystem - SecurityGroups: - - !Ref SecurityGroup - SubnetId: !Select [ 5, !Ref Subnet ] - InstanceProfile: - Type: AWS::IAM::InstanceProfile - Properties: - Path: / - Roles: - - !Ref InstanceRole - InstanceRole: - Type: AWS::IAM::Role - Properties: - AssumeRolePolicyDocument: - Version: 2012-10-17 - Statement: - - Effect: Allow - Principal: - Service: - - ec2.amazonaws.com - Action: - - sts:AssumeRole - Path: / - Policies: - - PolicyName: efs-create-file-system-with-storage - PolicyDocument: - Version: 2012-10-17 - Statement: - - Effect: Allow - Action: - - autoscaling:DescribeAutoScalingGroups - - autoscaling:DescribeAutoScalingInstances - - autoscaling:DescribePolicies - - autoscaling:UpdateAutoScalingGroup - Resource: '*' - - PolicyName: CodeCommit - PolicyDocument: - Version: 2012-10-17 - Statement: - - Effect: Allow - Action: - - codecommit:GitPush - Resource: !Ref RepoArn - AutoScalingGroup: - Type: AWS::AutoScaling::AutoScalingGroup - Properties: - Cooldown: '60' - HealthCheckGracePeriod: 120 - HealthCheckType: EC2 - LaunchConfigurationName: !Ref LaunchConfiguration - MaxSize: '1' - MinSize: '0' - DesiredCapacity: '1' - Tags: - - Key: Name - Value: !Join [ '', [ 'EFS ', !Ref ElasticFileSystem, ' data load... will auto terminate.' ] ] - PropagateAtLaunch: true - VPCZoneIdentifier: - !If - [ NumberOfSubnets1, - [ !Select [ 0, !Ref Subnet ] ], - !If - [ NumberOfSubnets2, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], - !If - [ NumberOfSubnets3, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ], - !If - [ NumberOfSubnets4, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ] ], - !If - [ NumberOfSubnets5, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ] ], - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ], !Select [ 5, !Ref Subnet ] ] - ] - ] - ] - ] - ] - CreationPolicy: - ResourceSignal: - Count: 0 - Timeout: PT12H - UpdatePolicy: - AutoScalingReplacingUpdate: - WillReplace: true - AutoScalingPolicy: - Type: AWS::AutoScaling::ScalingPolicy - Properties: - AdjustmentType: ChangeInCapacity - AutoScalingGroupName: !Ref AutoScalingGroup - Cooldown: '60' - PolicyType: SimpleScaling - ScalingAdjustment: 1 - LaunchConfiguration: - Type: AWS::AutoScaling::LaunchConfiguration - Metadata: - AWS::CloudFormation::Init: - configSets: - moodle_git_config: - - moodle-git-config - efs_add_storage: - - efs-add-storage - moodle-git-config: - files: - /tmp/moodle-git-config.sh: - content: !Sub | - #!/bin/bash -x - - git config --global user.name 'AWS User' - git config --global user.email noreply@amazon.com - - git config --global credential.helper '!aws codecommit credential-helper $@' - git config --global credential.UseHttpPath true - - mkdir /tmp/moodle - wget -O /tmp/moodle.tgz https://download.moodle.org/download.php/direct/stable311/moodle-3.11.tgz - tar -xvzf /tmp/moodle.tgz --strip-components=1 -C /tmp/moodle/ - cd /tmp/moodle - git init - git checkout -b main - git add . - git commit -m "CloudFormation deployment commit." - git remote add origin ${RepoHTTP} - git remote -v - git push -u origin main - - mode: '000755' - owner: root - group: root - efs-add-storage: - packages: - yum: - #Only needed to set permissions on the moodle folder - httpd: [] - files: - /tmp/efs-add-storage.sh: - content: !Sub | - #!/bin/bash -x - - FILE_SYSTEM_ID=$1 - DATA_DIRECTORY=$2 - GROWTH=$3 - - if [ $# -lt 3 ]; then - echo "Invalid # of arguments. Require: file system id, data directory, file system growth (GiB) " - exit 0 - fi - - # get region from instance meta-data - availabilityzone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) - region=${!availabilityzone:0:-1} - - # get instance id - instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) - - # get autoscaling group name - asg_name=$(aws autoscaling describe-auto-scaling-instances --instance-ids $instance_id --region $region --output text --query 'AutoScalingInstances[0].AutoScalingGroupName') - - # set the number of threads to the number of vcpus - threads=$(( $(nproc --all) * 8 )) - - # wait for file system DNS name to be propagated - results=1 - while [[ $results != 0 ]]; do - nslookup $FILE_SYSTEM_ID.efs.$region.amazonaws.com - results=$? - if [[ results = 1 ]]; then - sleep 30 - fi - done - - # mount file system - sudo mkdir -p /$FILE_SYSTEM_ID - sudo chown ec2-user:ec2-user /$FILE_SYSTEM_ID - sudo mountpoint -q /$FILE_SYSTEM_ID || sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $FILE_SYSTEM_ID.efs.$region.amazonaws.com:/ /$FILE_SYSTEM_ID - - #Create directories for Moodle - sudo mkdir -p /$FILE_SYSTEM_ID/data - sudo mkdir -p /$FILE_SYSTEM_ID/cache - sudo mkdir -p /$FILE_SYSTEM_ID/temp - chown apache:apache /$FILE_SYSTEM_ID/data/ - chown apache:apache /$FILE_SYSTEM_ID/cache/ - chown apache:apache /$FILE_SYSTEM_ID/temp/ - - # create data directory if not exists - sudo mkdir -p /$FILE_SYSTEM_ID/$DATA_DIRECTORY - sudo chown ec2-user:ec2-user /$FILE_SYSTEM_ID/$DATA_DIRECTORY - - # dd 1GiB files to file system to match DATA_SIZE - files=$GROWTH - if [ $(( $files / $threads )) == 0 ]; - then - runs=0 - parallel_threads=$(( $files % $threads )) - else - runs=$(( $files / $threads )) - parallel_threads=$threads - fi - while [ $runs -ge 0 ]; do - if [ $runs == 0 ]; - then - parallel_threads=$(( $files % $threads )) - seq 0 $(( $parallel_threads - 1 )) | parallel --will-cite -j $parallel_threads --compress dd if=/dev/zero of=/$FILE_SYSTEM_ID/$DATA_DIRECTORY/1G-dd-$(date +%Y%m%d%H%M%S.%3N)-{} bs=1M count=1024 oflag=sync - runs=$(($runs-1)) - else - seq 0 $(( $parallel_threads - 1 )) | parallel --will-cite -j $parallel_threads --compress dd if=/dev/zero of=/$FILE_SYSTEM_ID/$DATA_DIRECTORY/1G-dd-$(date +%Y%m%d%H%M%S.%3N)-{} bs=1M count=1024 oflag=sync - runs=$(($runs-1)) - fi - done - - # set ASG to zero which terminates instance - # aws autoscaling update-auto-scaling-group --auto-scaling-group-name $asg_name --desired-capacity 0 --region $region - - mode: 000777 - owner: root - group: root - Properties: - BlockDeviceMappings: - - DeviceName: /dev/xvda - Ebs: - DeleteOnTermination: true - VolumeSize: 10 - VolumeType: gp2 - IamInstanceProfile: !Ref InstanceProfile - ImageId: !Ref LatestAmiId - InstanceMonitoring: true - InstanceType: !Ref InstanceType - KeyName: !Ref EC2KeyName - SecurityGroups: - - !Ref SecurityGroup - UserData: - "Fn::Base64": - !Join [ - "",[ - "#cloud-config\n", - "repo_update: true\n", - "repo_upgrade: all\n", - "\n", - "runcmd:\n", - "- yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm\n", - "- yum-config-manager --enable epel\n", - "- yum install -y git\n", - "- yum install -y parallel\n", - "- ntpstat\n", - "- /opt/aws/bin/cfn-init --configsets moodle_git_config --verbose --stack ", !Ref 'AWS::StackName', " --resource LaunchConfiguration --region ", !Ref 'AWS::Region',"\n", - "- /opt/aws/bin/cfn-init --configsets efs_add_storage --verbose --stack ", !Ref 'AWS::StackName', " --resource LaunchConfiguration --region ", !Ref 'AWS::Region',"\n", - "- sudo -H -u ec2-user /tmp/moodle-git-config.sh\n", - "- /tmp/efs-add-storage.sh ", !Ref ElasticFileSystem, " throughput_data ", !Ref Growth,"\n", - "- /opt/aws/bin/cfn-signal -e $? --stack ", !Ref 'AWS::StackName', " --resource AutoScalingGroup --region ", !Ref 'AWS::Region',"\n" - ] - ] - EfsSizeMonitorFunction: - Type: AWS::Lambda::Function - Properties: - Code: - ZipFile: !Sub | - import boto3 - import os - import sys - - def handler(event, context): - if not os.environ.get('filesystemid'): - print "Unable to get the environment variable filesystemid" - sys.exit(1) - else: - filesystemid = os.environ.get('filesystemid') - - if not os.environ.get('region'): - print "Unable to get the environment variable region" - sys.exit(1) - else: - region = os.environ.get('region') - - def efs_get_size(): - client = boto3.client('efs') - response = client.describe_file_systems(FileSystemId=filesystemid) - k = response['FileSystems'][0]['SizeInBytes']['Value'] - return k - - def cloudwatch_put_metric(): - client = boto3.client('cloudwatch') - client.put_metric_data( - MetricData=[ - { - 'MetricName': 'SizeInBytes', - 'Dimensions': [ - { - 'Name': 'FileSystemId', - 'Value': filesystemid - }, - ], - 'Unit': 'None', - 'Value': efs_get_size() - }, - ], - Namespace='Custom/EFS' - ) - print('CloudWatch metric SizeInBytes sucessfully updated.') - - cloudwatch_put_metric() - Description: Lambda function to update the SizeInBytes EFS CloudWatch metric - Environment: - Variables: - filesystemid: !Ref ElasticFileSystem - region: !Ref 'AWS::Region' - FunctionName: !Join [ '', [ 'efs-', !Ref ElasticFileSystem, '-size-monitor' ] ] - Handler: index.handler - Role: !GetAtt LambdaRole.Arn - Runtime: python2.7 - Timeout: 60 - LambdaRole: - Type: AWS::IAM::Role + ElasticFileSystemParam: + Type: AWS::SSM::Parameter Properties: - AssumeRolePolicyDocument: - Version: 2012-10-17 - Statement: - - Effect: Allow - Principal: - Service: - - lambda.amazonaws.com - Action: - - sts:AssumeRole - Path: / - ManagedPolicyArns: - - arn:aws:iam::aws:policy/CloudWatchFullAccess - - arn:aws:iam::aws:policy/AmazonElasticFileSystemReadOnlyAccess - EfsLambdaPermission: - Type: AWS::Lambda::Permission - Properties: - FunctionName: !Ref EfsSizeMonitorFunction - Action: lambda:InvokeFunction - Principal: events.amazonaws.com - SourceArn: !GetAtt EfsSizeMonitorEvent.Arn - EfsSizeMonitorEvent: - Type: AWS::Events::Rule - Properties: - Description: Scheduled event to update SizeInBytes EFS CloudWatch metric - Name: !Join [ '', [ 'efs-', !Ref ElasticFileSystem, '-size-monitor-scheduled-event' ] ] - ScheduleExpression: rate(1 minute) - State: ENABLED - Targets: - - Arn: !GetAtt EfsSizeMonitorFunction.Arn - Id: '1' + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/SharedFile/ElasticFileSystem' ] ] + Type: String + Value: !Ref ElasticFileSystem + Description: SSM Parameter for Moodle EFS File System Id Outputs: ElasticFileSystem: Value: !Ref ElasticFileSystem ElasticFileSystemDnsName: Description: DNS name for the Amazon EFS file system. - Value: !Join [ '.', [ !Ref ElasticFileSystem, 'efs', !Ref 'AWS::Region', 'amazonaws', 'com' ] ] + Value: !Join [ '.', [ !Ref ElasticFileSystem, 'efs', !Ref 'AWS::Region', 'amazonaws', 'com' ] ] \ No newline at end of file diff --git a/templates/03-elasticache.yaml b/templates/03-elasticache.yaml index d75343e..4302d77 100644 --- a/templates/03-elasticache.yaml +++ b/templates/03-elasticache.yaml @@ -4,21 +4,23 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Reference Architecture to host Moodle on AWS - Creates ElastiCache cache cluster Metadata: - AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Cache Parameters Parameters: - - CacheType + - CacheUsageType + - CacheEngineType - ElastiCacheNodeType - ElastiCacheClusterName - ElastiCacheSecurityGroup - NumberOfSubnets - Subnet ParameterLabels: - CacheType: - default: Cache Type + CacheEngineType: + default: Cache Engine Type + CacheUsageType: + default: Cache Usage Type ElastiCacheClusterName: default: Cache Cluster Name ElastiCacheNodeType: @@ -31,16 +33,23 @@ Metadata: default: Subnets Parameters: - CacheType: + CacheEngineType: AllowedValues: - Redis - Memcached Default: Memcached Description: Indicates whether to use ElastiCache Memcached or Redis. Type: String + CacheUsageType: + AllowedValues: + - application + - session + Default: session + Description: Indicates whether to use ElastiCache for session or application caching. + Type: String ElastiCacheClusterName: AllowedPattern: ^([a-zA-Z0-9]*)$ - Description: The ElastiCache cluster name. Defaults to the Amazon RDS database name. + Description: ElastiCache cluster name. Type: String ElastiCacheNodeType: AllowedValues: @@ -61,69 +70,48 @@ Parameters: - cache.m6g.12xlarge - cache.m6g.16xlarge ConstraintDescription: Must be a valid Amazon ElastiCache node type. - Default: cache.t3.medium - Description: The Amazon ElastiCache cluster node type. + Default: cache.m6g.large + Description: ElastiCache cluster node type. Type: String ElastiCacheSecurityGroup: Description: Select the ElastiCache security group. Type: AWS::EC2::SecurityGroup::Id NumberOfSubnets: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 - Default: 3 + Default: 2 Description: Number of subnets. This must match your selections in the list of subnets below. Type: String Subnet: Description: Select existing subnets. The number selected must match the number of subnets above. Subnets selected must be in separate AZs. Type: List + ProjectName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Default: App + Description: Moodle Project Name + Type: String Conditions: UseRedis: - !Equals [!Ref CacheType, Redis] + !Equals [!Ref CacheEngineType, Redis] UseMemcached: - !Equals [!Ref CacheType, Memcached] + !Equals [!Ref CacheEngineType, Memcached] NumberOfSubnets1: !Equals [ 1, !Ref NumberOfSubnets ] NumberOfSubnets2: !Equals [ 2, !Ref NumberOfSubnets ] NumberOfSubnets3: !Equals [ 3, !Ref NumberOfSubnets ] - NumberOfSubnets4: - !Equals [ 4, !Ref NumberOfSubnets ] - NumberOfSubnets5: - !Equals [ 5, !Ref NumberOfSubnets ] - NumberOfSubnets6: - !Equals [ 6, !Ref NumberOfSubnets ] Subnet0: !Or - !Condition NumberOfSubnets1 - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 Subnet1: !Or - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet2: !Or - - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet3: !Or - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet4: !Or - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet5: !Condition NumberOfSubnets6 + Subnet2: !Condition NumberOfSubnets3 Resources: ElastiCacheClusterRedis: @@ -143,6 +131,7 @@ Resources: Engine: redis NumCacheClusters: !Ref NumberOfSubnets + ElastiCacheClusterMemcached: Condition: UseMemcached Type: AWS::ElastiCache::CacheCluster @@ -158,7 +147,8 @@ Resources: - Key: Name Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] VpcSecurityGroupIds: - - !Ref ElastiCacheSecurityGroup + - !Ref ElastiCacheSecurityGroup + ElastiCacheSubnetGroup: Type: AWS::ElastiCache::SubnetGroup Properties: @@ -171,21 +161,33 @@ Resources: !If [ NumberOfSubnets2, [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], - !If - [ NumberOfSubnets3, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ], - !If - [ NumberOfSubnets4, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ] ], - !If - [ NumberOfSubnets5, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ] ], - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ], !Select [ 5, !Ref Subnet ] ] - ] - ] - ] + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ] ] ] + + ElastiCacheClusterEndpoint: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/Cache/', !Ref CacheUsageType, '/ElastiCacheClusterEndpoint' ] ] + Type: String + Value: !If [UseRedis, + !Join [ ':', [!GetAtt ElastiCacheClusterRedis.PrimaryEndPoint.Address, !GetAtt ElastiCacheClusterRedis.PrimaryEndPoint.Port]], + !Join [ ':', [!GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Address, !GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Port]] + ] + Description: SSM Parameter for ElastiCache Cluster Endpoint + + ElastiCacheEngine: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/Cache/', !Ref CacheUsageType, '/Engine' ] ] + Type: String + Value: !Ref CacheEngineType + Description: SSM Parameter for ElastiCache Engine Type + Outputs: ElastiCacheClusterEndpointAddress: - Value: !If [UseRedis, !GetAtt ElastiCacheClusterRedis.PrimaryEndPoint.Address, !GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Address ] \ No newline at end of file + Value: !If [UseRedis, + !Join [ ':', [!GetAtt ElastiCacheClusterRedis.PrimaryEndPoint.Address, !GetAtt ElastiCacheClusterRedis.PrimaryEndPoint.Port]], + !Join [ ':', [!GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Address, !GetAtt ElastiCacheClusterMemcached.ConfigurationEndpoint.Port]] + ] + \ No newline at end of file diff --git a/templates/03-pipelinehelper.yaml b/templates/03-pipelinehelper.yaml new file mode 100644 index 0000000..1aeb046 --- /dev/null +++ b/templates/03-pipelinehelper.yaml @@ -0,0 +1,806 @@ +--- +AWSTemplateFormatVersion: 2010-09-09 + +Description: This templates helps creating CodeCommit repo, S3 Bucket and update repo with Moodle code & configurations. + +Parameters: + + EC2KeyName: + Description: Name of an existing EC2 key pair + Type: AWS::EC2::KeyPair::KeyName + + PipelineSecurityGroup: + Description: Select the Pipeline security group Id + Type: AWS::EC2::SecurityGroup::Id + + NumberOfSubnets: + AllowedValues: + - 1 + - 2 + - 3 + Default: 2 + Description: Number of subnets. This must match your selections in the list of Subnets below. + Type: String + + PipelineSubnet: + Description: Select existing subnets. + Type: List + + InstanceType: + AllowedValues: + - m5.large + - m5.xlarge + - m5.2xlarge + - m5.4xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge + - c5.large + - c5.xlarge + - c5.2xlarge + - c5.4xlarge + - c5.9xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge + - m5a.large + - m5a.xlarge + - m5a.2xlarge + - m5a.4xlarge + - m5a.8xlarge + - m5a.12xlarge + - m5a.16xlarge + - m5a.24xlarge + - c5a.large + - c5a.xlarge + - c5a.2xlarge + - c5a.4xlarge + - c5a.9xlarge + - c5a.12xlarge + - c5a.18xlarge + - c5a.24xlarge + - r5a.large + - r5a.xlarge + - r5a.2xlarge + - r5a.4xlarge + - r5a.8xlarge + - r5a.12xlarge + - r5a.16xlarge + - r5a.24xlarge + - m6g.large + - m6g.xlarge + - m6g.2xlarge + - m6g.4xlarge + - m6g.8xlarge + - m6g.12xlarge + - m6g.16xlarge + - m6g.24xlarge + - c6g.large + - c6g.xlarge + - c6g.2xlarge + - c6g.4xlarge + - c6g.9xlarge + - c6g.12xlarge + - c6g.18xlarge + - c6g.24xlarge + - r6g.large + - r6g.xlarge + - r6g.2xlarge + - r6g.4xlarge + - r6g.8xlarge + - r6g.12xlarge + - r6g.16xlarge + - r6g.24xlarge + ConstraintDescription: Must be a valid Amazon EC2 instance type. + Default: m6g.large + Description: The Amazon EC2 instance type that dynamically adjusts thresholds based on permitted throughput changes. + Type: String + + LatestAmiId: + Type : AWS::SSM::Parameter::Value + Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 + LatestArmAmiId : + Type : AWS::SSM::Parameter::Value + Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2 + + MoodleLocale: + Description: "The main language of the Moodle site, during initial configuration." + Type: String + Default: en + + DomainName: + Description: '[ Optional ] The main domain name of the Moodle site (e.g. moodle.example.edu).' + Type: String + + RDSInstanceSecretArn: + Description: 'Credentials for Moodle RDS instance' + Type: String + Default: "" + + ProjectName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Default: App + Description: The Moodle Project Name + Type: String + + WebAsgMax: + AllowedPattern: ^((?!0$)[1-2]?[0-9]|30)$ + ConstraintDescription: Must be a number between 1 and 30. + Default: 1 + Description: Specifies the maximum number of EC2 instances in the Web Autoscaling Group. + Type: String + WebAsgMin: + AllowedPattern: ^([0-0]?[0-9]|10)$ + ConstraintDescription: Must be a number between 0 and 10. + Default: 2 + Description: Specifies the minimum number of EC2 instances in the Web Autoscaling Group. + Type: String + +Conditions: + NumberOfSubnets1: + !Equals [ 1, !Ref NumberOfSubnets ] + NumberOfSubnets2: + !Equals [ 2, !Ref NumberOfSubnets ] + NumberOfSubnets3: + !Equals [ 3, !Ref NumberOfSubnets ] + Subnet0: !Or + - !Condition NumberOfSubnets1 + - !Condition NumberOfSubnets2 + - !Condition NumberOfSubnets3 + Subnet1: !Or + - !Condition NumberOfSubnets2 + - !Condition NumberOfSubnets3 + Subnet2: !Condition NumberOfSubnets3 + UsingGraviton2Ami: !Or + - !Equals ["t4",!Select [0, !Split [ "g.", !Ref InstanceType]]] + - !Equals ["c6",!Select [0, !Split [ "g.", !Ref InstanceType]]] + - !Equals ["m6",!Select [0, !Split [ "g.", !Ref InstanceType]]] + - !Equals ["r6",!Select [0, !Split [ "g.", !Ref InstanceType]]] + +Resources: + MoodleRepo: + Type: AWS::CodeCommit::Repository + Properties: + RepositoryName: !Sub '${ProjectName}-Repo' + RepositoryDescription: This is Moodle CodeCommit repository. + + #This bucket is being used for storing Code artifacts for deployment. + CodeArtifactS3Bucket: + Type: AWS::S3::Bucket + Properties: + BucketName: !Join ['-', [!Sub 'moodle-code', !Select [4, !Split ['-', !Select [2, !Split ['/', !Ref AWS::StackId]]]]]] + + InstanceProfile: + Type: AWS::IAM::InstanceProfile + Properties: + Path: / + Roles: + - !Ref InstanceRole + + InstanceRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - ec2.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore' + Path: / + Policies: + - PolicyName: MoodlePipelineHelperPolicy + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - autoscaling:DescribeAutoScalingGroups + - autoscaling:DescribeAutoScalingInstances + - autoscaling:DescribePolicies + - autoscaling:UpdateAutoScalingGroup + Resource: '*' + - Effect: Allow + Action: + - codepipeline:StartPipelineExecution + Resource: + !Sub 'arn:aws:codepipeline:${AWS::Region}:${AWS::AccountId}:${ProjectName}-Pipeline' + - Effect: Allow + Action: + - codecommit:GitPush + Resource: !GetAtt MoodleRepo.Arn + + PipelineHelperASGroup: + Type: AWS::AutoScaling::AutoScalingGroup + Properties: + Cooldown: 60 + HealthCheckGracePeriod: 120 + HealthCheckType: EC2 + LaunchTemplate: + LaunchTemplateId: !Ref PipelineHelperLaunchTemplate + Version: !GetAtt PipelineHelperLaunchTemplate.LatestVersionNumber + MaxSize: 1 + MinSize: 0 + DesiredCapacity: 1 + Tags: + - Key: Name + Value: !Join [ '', [ 'Moodle Pipeline Helper ', !GetAtt MoodleRepo.Name, ' ...will auto terminate' ] ] + PropagateAtLaunch: true + VPCZoneIdentifier: + !If + [ NumberOfSubnets1, + [ !Select [ 0, !Ref PipelineSubnet ] ], + !If + [ NumberOfSubnets2, + [ !Select [ 0, !Ref PipelineSubnet ], !Select [ 1, !Ref PipelineSubnet ] ], + [ !Select [ 0, !Ref PipelineSubnet ], !Select [ 1, !Ref PipelineSubnet ], !Select [ 2, !Ref PipelineSubnet ] ] + ] + ] + CreationPolicy: + ResourceSignal: + Count: 0 + Timeout: PT15M + UpdatePolicy: + AutoScalingReplacingUpdate: + WillReplace: true + + PipelineHelperLaunchTemplate: + Type: AWS::EC2::LaunchTemplate + Metadata: + AWS::CloudFormation::Init: + configSets: + moodle_git_config: + - moodle-git-config + moodle-git-config: + packages: + yum: + git: [] + files: + /tmp/appspec.yml: + content: !Sub | + version: 0.0 + os: linux + files: + - source: / + destination: /var/www/moodle/html/ + hooks: + ApplicationStop: + - location: .pipeline/stop_application.sh + timeout: 300 + BeforeInstall: + - location: .pipeline/before_install.sh + timeout: 600 + AfterInstall: + - location: .pipeline/after_install.sh + timeout: 300 + ApplicationStart: + - location: .pipeline/start_application.sh + timeout: 300 + ValidateService: + - location: .pipeline/basic_health_check.sh + timeout: 300 + mode: '000755' + owner: root + group: root + /tmp/start_application.sh: + content: !Sub | + #!/bin/bash + sudo systemctl start php-fpm + sudo systemctl start httpd + + mode: '000755' + owner: root + group: root + /tmp/stop_application.sh: + content: !Sub | + #!/bin/bash + sudo systemctl stop httpd + sudo systemctl stop php-fpm + mode: '000755' + owner: root + group: root + /tmp/basic_health_check.sh: + content: !Sub | + #!/bin/bash + for i in `seq 1 10`; + do + HTTP_CODE=`curl --write-out '%{http_code}' -o /dev/null -m 10 -q -s http://localhost:80/status.txt` + if [ "$HTTP_CODE" == "200" ]; then + echo "Successfully pulled root page." + exit 0; + fi + echo "Attempt to curl endpoint returned HTTP Code $HTTP_CODE. Backing off and retrying." + sleep 10 + done + echo "Server did not come up after expected time. Failing." + exit 1 + mode: '000755' + owner: root + group: root + /tmp/config.php: + content: !Sub | + '2017-10-17', + 'region' => '${AWS::Region}', + ]); + + $secretName = '${RDSInstanceSecretArn}'; + + try { + $result = $client->getSecretValue([ + 'SecretId' => $secretName, + ]); + + } catch (AwsException $e) { + $error = $e->getAwsErrorCode(); + } + // Decrypts secret using the associated KMS CMK. + // Depending on whether the secret is a string or binary, one of these fields will be populated. + if (isset($result['SecretString'])) { + $secret = $result['SecretString']; + } + $CFG = new stdClass; + $CFG->getremoteaddrconf = 0; + $CFG->dbtype = 'pgsql'; + $CFG->dblibrary = 'native'; + $CFG->dbhost = getenv('EnvDatabaseClusterEndpointAddress'); + $CFG->dbname = getenv('EnvDatabaseName'); + $CFG->dbuser = json_decode($secret)->{'username'}; + $CFG->dbpass = json_decode($secret)->{'password'}; + $CFG->prefix = 'mdl_'; + $CFG->lang = '${MoodleLocale}'; + $CFG->dboptions = array( + 'dbpersist' => false, + 'dbsocket' => false, + 'dbport' => '', + 'dbhandlesoptions' => false, + 'dbcollation' => 'utf8mb4_unicode_ci', + 'connecttimeout' => 300, + 'readonly' => [ + 'instance' => 'db-cluster-readonly-endpoint', + 'connecttimeout' => 300, + 'latency' => 2, + 'exclude_tables' => [ + 'config', + ], + ] + ); + + // Hostname definition // + $hostname = '${DomainName}'; + $hostwithprotocol = strtolower($hostname); + + if(substr($hostwithprotocol, 0, 4) === 'http'){} else { + $hostwithprotocol = 'http://'.strtolower($hostwithprotocol); + } + + $CFG->wwwroot = strtolower($hostwithprotocol); + $CFG->sslproxy = (substr($hostwithprotocol,0,5)=='https' ? true : false); + // Moodledata location // + $CFG->dataroot = '/var/www/moodle/data'; + $CFG->tempdir = '/var/www/moodle/temp'; + $CFG->cachedir = '/var/www/moodle/cache'; + $CFG->localcachedir = '/var/www/moodle/local'; + $CFG->directorypermissions = 02777; + $CFG->admin = 'admin'; + // Configure Session Cache + $SessionsCacheType = 'Memcached'; + $SessionEndpoint = ''; + if ($SessionEndpoint != '') { + + $CFG->dbsessions = false; + + if($SessionsCacheType == 'Redis') { + + $CFG->session_handler_class = '\core\session\redis'; + $CFG->session_redis_host = $SessionEndpoint; + $CFG->session_redis_port = 6379; // Optional. + $CFG->session_redis_database = 0; // Optional, default is db 0. + //$CFG->session_redis_auth = ''; // Optional, default is don't set one. + //$CFG->session_redis_prefix = ''; // Optional, default is don't set one. + $CFG->session_redis_acquire_lock_timeout = 120; // Default is 2 minutes. + $CFG->session_redis_acquire_lock_warn = 0; // If set logs early warning if a lock has not been acquried. + $CFG->session_redis_lock_expire = 7200; // Optional, defaults to session timeout. + $CFG->session_redis_lock_retry = 100; // Optional wait between lock attempts in ms, default is 100. + + $CFG->session_redis_serializer_use_igbinary = false; // Optional, default is PHP builtin serializer. + $CFG->session_redis_compressor = 'none'; + } else { + + $CFG->session_handler_class = '\core\session\memcached'; + $CFG->session_memcached_save_path = $SessionEndpoint; + $CFG->session_memcached_prefix = 'memc.sess.key.'; + $CFG->session_memcached_acquire_lock_timeout = 120; + $CFG->session_memcached_lock_expire = 7100; + $CFG->session_memcached_lock_retry_sleep = 150; + } + } + //@error_reporting(E_ALL | E_STRICT); // NOT FOR PRODUCTION SERVERS! + //@ini_set('display_errors', '1'); // NOT FOR PRODUCTION SERVERS! + //$CFG->debug = (E_ALL | E_STRICT); // === DEBUG_DEVELOPER - NOT FOR PRODUCTION SERVERS! + //$CFG->debugdisplay = 1; + require_once(__DIR__ . '/lib/setup.php'); + // END OF CONFIG // + ?> + mode: '000755' + owner: root + group: root + + /tmp/after_install.sh: + content: + !Sub | + #!/bin/bash -xe + + # Setting up access ownership to apache:apache + chown -R apache:apache /var/www/moodle/html + chown -R apache:apache /var/www/moodle/data + chown -R apache:apache /var/www/moodle/cache + chown -R apache:apache /var/www/moodle/temp + chown -R apache:apache /var/www/moodle/local + + availabilityzone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) + region=${!availabilityzone:0:-1} + + export EnvDatabaseType=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/DB/Type --query Parameters[0].Value) + export EnvDatabaseType=`echo $EnvDatabaseType | sed -e 's/^"//' -e 's/"$//'` + + if [ "$EnvDatabaseType" == "MySQL" ]; then + sed -i "s/\$CFG->dbtype = .*/\$CFG->dbtype = 'auroramysql';/" /var/www/moodle/html/config.php + else + sed -i "s/\$CFG->dbtype = .*/\$CFG->dbtype = 'pgsql';/" /var/www/moodle/html/config.php + fi + + export EnvDatabaseName=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/DB/Name --query Parameters[0].Value) + export EnvDatabaseName=`echo $EnvDatabaseName | sed -e 's/^"//' -e 's/"$//'` + sed -i "s/\$CFG->dbname.*/\$CFG->dbname = '"$EnvDatabaseName"';/" /var/www/moodle/html/config.php + + export EnvDatabaseClusterEndpointAddress=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/DB/ClusterEndpoint --query Parameters[0].Value) + export EnvDatabaseClusterEndpointAddress=`echo $EnvDatabaseClusterEndpointAddress | sed -e 's/^"//' -e 's/"$//'` + sed -i "s/\$CFG->dbhost.*/\$CFG->dbhost = '"$EnvDatabaseClusterEndpointAddress"';/" /var/www/moodle/html/config.php + + export EnvDatabaseClusterReadOnlyEndpointAddress=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/DB/ClusterReadOnlyEndpoint --query Parameters[0].Value) + export EnvDatabaseClusterReadOnlyEndpointAddress=`echo $EnvDatabaseClusterReadOnlyEndpointAddress | sed -e 's/^"//' -e 's/"$//'` + sed -i "s/'instance' => '.*/'instance' => '"$EnvDatabaseClusterReadOnlyEndpointAddress"',/" /var/www/moodle/html/config.php + + export EnvDnsName=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/Network/DomainName --query Parameters[0].Value) + export EnvDnsName=`echo $EnvDnsName | sed -e 's/^"//' -e 's/"$//'` + sed -i'' -e "s,\$hostname = .*,\$hostname = '"$EnvDnsName"';," /var/www/moodle/html/config.php + + export EnvIsMoodleSetupCompleted=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/IsMoodleSetupCompleted --query Parameters[0].Value) + export EnvIsMoodleSetupCompleted=`echo $EnvIsMoodleSetupCompleted | sed -e 's/^"//' -e 's/"$//'` + + export EnvElastiCacheClusterEndpointAddress=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/Cache/session/ElastiCacheClusterEndpoint --query Parameters[0].Value) + export EnvElastiCacheClusterEndpointAddress=`echo $EnvElastiCacheClusterEndpointAddress | sed -e 's/^"//' -e 's/"$//'` + + export EnvElastiCacheEngine=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/Cache/session/Engine --query Parameters[0].Value) + export EnvElastiCacheEngine=`echo $EnvElastiCacheEngine | sed -e 's/^"//' -e 's/"$//'` + + #setting up elasticache dependencies for cache + if [ "$EnvIsMoodleSetupCompleted" != "No" ] && [ "$EnvElastiCacheClusterEndpointAddress" != "null" -a "$EnvElastiCacheClusterEndpointAddress" != "" ]; then + sed -i "s/\$SessionEndpoint = .*/\$SessionEndpoint = '"$EnvElastiCacheClusterEndpointAddress"';/" /var/www/moodle/html/config.php + + if [ "$EnvElastiCacheEngine" == "Redis"]; then + sed -i "s/\$SessionsCacheType = .*/\$SessionsCacheType = '"$EnvElastiCacheEngine"';/" /var/www/moodle/html/config.php + else + #update Moodle source to use DYNAMIC_CLIENT_MODE so Moodle can detect changes to the elasticache cluster membership + sed -i '/\$this->options\[Memcached::OPT_BUFFER_WRITES\] = \$bufferwrites;/a \ \ \ \ \ \ \ \ $this->options[Memcached::OPT_CLIENT_MODE] = Memcached::DYNAMIC_CLIENT_MODE;' /var/www/moodle/html/cache/stores/memcached/lib.php + fi + + + else + sed -i "s/\$SessionEndpoint = .*/\$SessionEndpoint = '';/" /var/www/moodle/html/config.php + fi + + sudo systemctl restart php-fpm + mode: 000500 + owner: root + group: root + + /tmp/before_install.sh: + content: + !Sub | + #!/bin/bash -xe + + cd /opt/codedeploy-agent/deployment-root/$DEPLOYMENT_GROUP_ID/$DEPLOYMENT_ID/deployment-archive/.pipeline/ + + availabilityzone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) + region=${!availabilityzone:0:-1} + + export EnvDatabaseType=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/DB/Type --query Parameters[0].Value) + export EnvDatabaseType=`echo $EnvDatabaseType | sed -e 's/^"//' -e 's/"$//'` + + if [ "$EnvDatabaseType" == "MySQL" ]; then + #Installing and configuring MYSQL libs. + sh install_mysql_dependencies.sh + else + #Installing and configuring PGSQL libs. + sh install_pgsql_dependencies.sh + fi + + #increasing PHP max_input_vars to 5000 + sed -i 's/; max_input_vars.*/max_input_vars = 5000/' /etc/php.ini + + #Configuring OPCache + sh configure_opcache.sh + + #configuring Cache clients + sh install_cacheclient.sh + + # Setting up EFS shared file storage + sh setup_efs.sh + mode: 000500 + owner: root + group: root + /tmp/setup_efs.sh: + content: + !Sub | + #!/bin/bash -xe + + availabilityzone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) + region=${!availabilityzone:0:-1} + + #Mount shared storage + if grep -qs '/var/www/moodle/data ' /proc/mounts; then + echo "/var/www/moodle/data is mounted." + else + export EnvElasticFileSystem=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/SharedFile/ElasticFileSystem --query Parameters[0].Value) + export EnvElasticFileSystem=`echo $EnvElasticFileSystem | sed -e 's/^"//' -e 's/"$//'` + + sudo mkdir -p /$EnvElasticFileSystem + sudo mountpoint -q /$EnvElasticFileSystem || sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $EnvElasticFileSystem.efs.${AWS::Region}.amazonaws.com:/ /$EnvElasticFileSystem + + #Create directories for Moodle + sudo mkdir -p /$EnvElasticFileSystem/data + sudo mkdir -p /$EnvElasticFileSystem/cache + sudo mkdir -p /$EnvElasticFileSystem/temp + + chown apache:apache /$EnvElasticFileSystem/data/ + chown apache:apache /$EnvElasticFileSystem/cache/ + chown apache:apache /$EnvElasticFileSystem/temp/ + + sudo umount -f /$EnvElasticFileSystem + + mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $EnvElasticFileSystem.efs.${AWS::Region}.amazonaws.com:/data /var/www/moodle/data + #mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $EnvElasticFileSystem.efs.${AWS::Region}.amazonaws.com:/cache /var/www/moodle/cache + #mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $EnvElasticFileSystem.efs.${AWS::Region}.amazonaws.com:/temp /var/www/moodle/temp + fi + mode: 000500 + owner: root + group: root + /tmp/install_pgsql_dependencies.sh: + content: + !Sub | + #!/bin/bash -xe + amazon-linux-extras install -y postgresql13 + yum install -y php-pgsql + mode: 000500 + owner: root + group: root + /tmp/install_mysql_dependencies.sh: + content: + !Sub | + #!/bin/bash -xe + + amazon-linux-extras install -y mariadb10.5 + yum install -y php-mysqlnd + mode: 000500 + owner: root + group: root + /tmp/configure_opcache.sh: + content: + !Sub | + #!/bin/bash -xe + # create hidden opcache directory locally & change owner to apache + if [ ! -d /var/www/.opcache ]; then + mkdir -p /var/www/.opcache + fi + #Ensure opcache is enabled and add settings recomended by moodle at https://docs.moodle.org/34/en/OPcache + sed -i 's/;opcache.file_cache=.*/opcache.file_cache=\/var\/www\/.opcache/' /etc/php.d/10-opcache.ini + sed -i 's/opcache.memory_consumption=.*/opcache.memory_consumption=512/' /etc/php.d/10-opcache.ini + sed -i 's/opcache.max_accelerated_files=.*/opcache.max_accelerated_files=8000/' /etc/php.d/10-opcache.ini + sed -i 's/;opcache.revalidate_freq=.*/opcache.revalidate_freq=300/' /etc/php.d/10-opcache.ini + sed -i 's/;opcache.use_cwd=.*/opcache.use_cwd=1/' /etc/php.d/10-opcache.ini + sed -i 's/;opcache.validate_timestamps=.*/opcache.validate_timestamps=1/' /etc/php.d/10-opcache.ini + sed -i 's/;opcache.save_comments=.*/opcache.save_comments=1/' /etc/php.d/10-opcache.ini + sed -i 's/;opcache.enable_file_override=.*/opcache.enable_file_override=60/' /etc/php.d/10-opcache.ini + mode: 000500 + owner: root + group: root + /tmp/install_cacheclient.sh: + content: + !Sub | + #!/bin/bash -xe + + #Install memcached and then remove it. Memcached is not actually needed. We install amazon-elasticache-cluster-client.so instead. However Moodle does not detect memcached is installed. Therefore, this tricks Moodle into thinking it is installed. + sudo yum install -y php-pecl-memcached + sudo yum remove -y php-pecl-memcached + sudo yum install -y php-redis + + + if [ $(uname -a | grep -c x86_64) == "1" ]; then + echo "downloading x86 client for ElastiCache" + wget -P /tmp/ https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-8.0/latest-64bit-X86-openssl3 + tar -xf '/tmp/latest-64bit-X86' + else + echo "downloading ARM-64 client for ElastiCache" + wget -P /tmp/ https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-8.0/latest-64bit-arm-openssl3 + tar -xf '/tmp/latest-64bit-arm' + fi + + cp 'amazon-elasticache-cluster-client.so' /usr/lib64/php/modules/ + if [ ! -f /etc/php.d/50-memcached.ini ]; then + touch /etc/php.d/50-memcached.ini + fi + echo 'extension=/usr/lib64/php/modules/amazon-elasticache-cluster-client.so;' >> /etc/php.d/50-memcached.ini + echo 'extension=igbinary.so;' >> /etc/php.d/50-memcached.ini + + if [ ! -f /etc/php.d/20-redis.ini ]; then + touch /etc/php.d/20-redis.ini + fi + echo 'extension=/usr/lib64/php/modules/amazon-elasticache-cluster-client.so;' >> /etc/php.d/20-redis.ini + echo 'extension=igbinary.so;' >> /etc/php.d/20-redis.ini + + + mode: 000500 + owner: root + group: root + + /tmp/moodle-git-config.sh: + content: !Sub | + #!/bin/bash -x + + git config --system user.name 'AWS User' + git config --system user.email noreply@amazon.com + + git config --system credential.helper '!aws codecommit credential-helper $@' + git config --system credential.UseHttpPath true + + DIR="/tmp/moodle" + if [ -d "$DIR" ]; then + cd /tmp/moodle + else + mkdir /tmp/moodle + mkdir /tmp/moodle/.pipeline + + # Get Latest Moodle stable version + wget -O /tmp/moodle.tgz https://download.moodle.org/download.php/direct/stable401/moodle-latest-401.tgz + tar -xvzf /tmp/moodle.tgz --strip-components=1 -C /tmp/moodle/ + wget -O /tmp/moodle/lib/aws.phar https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.phar + cd /tmp/moodle + git init + git checkout -b main + git add . + git commit -m "Moodle original code commit." + git remote add origin ${MoodleRepo.CloneUrlHttp} + fi + + #Added code scripts for CodePipeline + + cp -f /tmp/appspec.yml /tmp/moodle/ + + cp -f /tmp/start_application.sh /tmp/moodle/.pipeline/ + cp -f /tmp/stop_application.sh /tmp/moodle/.pipeline/ + cp -f /tmp/basic_health_check.sh /tmp/moodle/.pipeline/ + + cp -f /tmp/config.php /tmp/moodle/ + + cp -f /tmp/before_install.sh /tmp/moodle/.pipeline/ + cp -f /tmp/setup_efs.sh /tmp/moodle/.pipeline/ + cp -f /tmp/configure_opcache.sh /tmp/moodle/.pipeline/ + + cp -f /tmp/install_mysql_dependencies.sh /tmp/moodle/.pipeline/ + cp -f /tmp/install_pgsql_dependencies.sh /tmp/moodle/.pipeline/ + cp -f /tmp/install_cacheclient.sh /tmp/moodle/.pipeline/ + + cp -f /tmp/after_install.sh /tmp/moodle/.pipeline/ + + git add --all + git commit -m "Moodle Code pipeline commits" + + git push -u origin main + + # get instance id + instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) + + # get region from instance meta-data + availabilityzone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) + region=${!availabilityzone:0:-1} + + # wait for Moodle setup to be completed + echo "Start checking whether Moodle setup completed or not" + counter=0 + while true + do + sleep 60 + export EnvIsMoodleSetupCompleted=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/IsMoodleSetupCompleted --query Parameters[0].Value) + export EnvIsMoodleSetupCompleted=`echo $EnvIsMoodleSetupCompleted | sed -e 's/^"//' -e 's/"$//'` + + if [ "$EnvIsMoodleSetupCompleted" == "No" ]; then + ((counter++)) + echo "Waiting for 1 more minute, running for the $counter time." + else + break + fi + + done + + # script to update Moodle pipeline release + + aws codepipeline start-pipeline-execution --name ${ProjectName}-Pipeline --region $region + + # set ASG to zero which terminates instance + + export EnvWebAppASGName=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/WebAppASGName --query Parameters[0].Value) + export EnvWebAppASGName=`echo $EnvWebAppASGName | sed -e 's/^"//' -e 's/"$//'` + + aws autoscaling update-auto-scaling-group --auto-scaling-group-name $EnvWebAppASGName --desired-capacity ${WebAsgMin} --min-size ${WebAsgMin} --max-size ${WebAsgMax} --region $region + + # Shutting down pipeline-helper instance + # get autoscaling group name + asg_name=$(aws autoscaling describe-auto-scaling-instances --instance-ids $instance_id --region $region --output text --query 'AutoScalingInstances[0].AutoScalingGroupName') + + # set pipeline-helper ASG to zero which terminates instance + aws autoscaling update-auto-scaling-group --auto-scaling-group-name $asg_name --min-size 0 --desired-capacity 0 --region $region + mode: '000755' + owner: root + group: root + commands: + update-moodle-repo: + command: ./moodle-git-config.sh + cwd: /tmp + ignoreErrors: false + + Properties: + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + DeleteOnTermination: true + VolumeSize: 10 + VolumeType: gp3 + IamInstanceProfile: + Arn: !GetAtt InstanceProfile.Arn + ImageId: !If [UsingGraviton2Ami, !Ref LatestArmAmiId, !Ref LatestAmiId] + InstanceType: !Ref InstanceType + KeyName: !Ref EC2KeyName + SecurityGroupIds: + - !Ref PipelineSecurityGroup + UserData: + "Fn::Base64": + !Sub | + #!/bin/bash -xe + sudo systemctl enable amazon-ssm-agent + sudo systemctl start amazon-ssm-agent + sudo systemctl status amazon-ssm-agent + + /opt/aws/bin/cfn-init --configsets moodle_git_config --verbose --stack ${AWS::StackName} --resource PipelineHelperLaunchTemplate --region ${AWS::Region} + /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource PipelineHelperASGroup --region ${AWS::Region} + +Outputs: + CodeArtifactS3BucketArn: + Value: !GetAtt CodeArtifactS3Bucket.Arn + CodeArtifactS3BucketName: + Value: !Ref CodeArtifactS3Bucket + MoodleRepoName: + Value: !GetAtt MoodleRepo.Name + MoodleRepoArn: + Value: !GetAtt MoodleRepo.Arn diff --git a/templates/03-publicalb.yaml b/templates/03-publicalb.yaml index 68e834e..eedb302 100644 --- a/templates/03-publicalb.yaml +++ b/templates/03-publicalb.yaml @@ -4,7 +4,6 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Reference Architecture to host Moodle on AWS - Creates Application Load Balancer Metadata: - AWS::CloudFormation::Interface: ParameterGroups: - Label: @@ -28,15 +27,12 @@ Metadata: default: Subnets Parameters: - NumberOfSubnets: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 - Default: 3 + Default: 2 Description: Number of subnets. This must match your selections in the list of subnets below. Type: String PublicAlbAcmCertificate: @@ -52,6 +48,11 @@ Parameters: Vpc: Description: Select an existing Vpc Type: AWS::EC2::VPC::Id + ProjectName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Default: App + Description: The Moodle Project Name + Type: String Conditions: @@ -65,41 +66,16 @@ Conditions: !Equals [ 2, !Ref NumberOfSubnets ] NumberOfSubnets3: !Equals [ 3, !Ref NumberOfSubnets ] - NumberOfSubnets4: - !Equals [ 4, !Ref NumberOfSubnets ] - NumberOfSubnets5: - !Equals [ 5, !Ref NumberOfSubnets ] - NumberOfSubnets6: - !Equals [ 6, !Ref NumberOfSubnets ] Subnet0: !Or - !Condition NumberOfSubnets1 - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 Subnet1: !Or - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet2: !Or - - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet3: !Or - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet4: !Or - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet5: !Condition NumberOfSubnets6 + Subnet2: !Condition NumberOfSubnets3 Resources: - PublicAlbListenerNoSslCertificate: Type : AWS::ElasticLoadBalancingV2::Listener Properties: @@ -109,6 +85,7 @@ Resources: LoadBalancerArn: !Ref PublicApplicationLoadBalancer Port: 80 Protocol: HTTP + PublicAlbListenerSslCertificate: Condition: SslCertificate Type : AWS::ElasticLoadBalancingV2::Listener @@ -121,6 +98,7 @@ Resources: LoadBalancerArn: !Ref PublicApplicationLoadBalancer Port: 443 Protocol: HTTPS + PublicApplicationLoadBalancer: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: @@ -132,19 +110,7 @@ Resources: !If [ NumberOfSubnets2, [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], - !If - [ NumberOfSubnets3, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ], - !If - [ NumberOfSubnets4, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ] ], - !If - [ NumberOfSubnets5, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ] ], - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ], !Select [ 5, !Ref Subnet ] ] - ] - ] - ] + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ] ] ] LoadBalancerAttributes: @@ -154,7 +120,7 @@ Resources: - !Ref PublicAlbSecurityGroup Tags: - Key: Name - Value: !Join [ '', [ 'Public ALB / ', !Ref 'AWS::StackName' ] ] + Value: !Join [ '-', [ 'Moodle',!Ref ProjectName,'alb' ] ] PublicAlbTargetGroup: Type: AWS::ElasticLoadBalancingV2::TargetGroup Properties: @@ -166,15 +132,17 @@ Resources: Protocol: HTTP Tags: - Key: Name - Value: !Join [ '', [ 'Public ALB / ', !Ref 'AWS::StackName' ] ] + Value: !Join [ '-', [ 'Moodle',!Ref ProjectName,'alb-TG' ] ] UnhealthyThresholdCount: 5 VpcId: !Ref Vpc Outputs: - PublicAlbTargetGroupArn: Value: !Ref PublicAlbTargetGroup + PublicAlbTargetGroupName: + Value: + !GetAtt PublicAlbTargetGroup.TargetGroupName PublicAlbCanonicalHostedZoneId: Value: !GetAtt PublicApplicationLoadBalancer.CanonicalHostedZoneID @@ -184,6 +152,9 @@ Outputs: PublicAlbFullName: Value: !GetAtt PublicApplicationLoadBalancer.LoadBalancerFullName + PublicAlbName: + Value: + !GetAtt PublicApplicationLoadBalancer.LoadBalancerName PublicAlbHostname: Value: !If [ NoSslCertificate, !Join [ '', [ 'http://', !GetAtt PublicApplicationLoadBalancer.DNSName ] ], !Join [ '', [ 'https://', !GetAtt PublicApplicationLoadBalancer.DNSName ] ] ] diff --git a/templates/03-rds.yaml b/templates/03-rds.yaml index 4cfe152..541aae2 100644 --- a/templates/03-rds.yaml +++ b/templates/03-rds.yaml @@ -14,7 +14,7 @@ Metadata: # - DatabaseMasterUsername # - DatabaseMasterPassword - DatabaseName - - DatabaseEncrpytedBoolean + - DatabaseEncryptedBoolean - DatabaseCmk - DatabaseSecurityGroup - NumberOfSubnets @@ -22,7 +22,7 @@ Metadata: ParameterLabels: DatabaseType: default: Aurora database type - DatabaseEncrpytedBoolean: + DatabaseEncryptedBoolean: default: Encrypted DB Cluster DatabaseCmk: default: AWS KMS Customer Master Key (CMK) to encrypt DB @@ -49,7 +49,7 @@ Parameters: Default: PostgreSQL Description: Indicates whether to use Aurora MySQL or PostgreSQL. Type: String - DatabaseEncrpytedBoolean: + DatabaseEncryptedBoolean: AllowedValues: - true - false @@ -61,6 +61,7 @@ Parameters: Type: String DatabaseInstanceType: AllowedValues: + - db.t3.medium - db.t3.large - db.r5.large - db.r5.xlarge @@ -76,47 +77,35 @@ Parameters: - db.r6g.8xlarge - db.r6g.12xlarge - db.r6g.16xlarge - ConstraintDescription: Must be a valid RDS instance class. - Default: db.r5.large - Description: The Amazon RDS database instance class. + ConstraintDescription: Must be a valid Aurora RDS instance type. + Default: db.r6g.large + Description: Amazon Aurora RDS database instance type Type: String - # DatabaseMasterUsername: - # AllowedPattern: ^([a-zA-Z0-9]*)$ - # Description: The Amazon RDS master username. - # ConstraintDescription: Must contain only alphanumeric characters and be at least 8 characters. - # MaxLength: 16 - # MinLength: 1 - # Type: String - # DatabaseMasterPassword: - # AllowedPattern: ^([a-z0-9A-Z`~!#$%^&*()_+,\\-])*$ - # ConstraintDescription: Must be letters (upper or lower), numbers, and these special characters '_'`~!#$%^&*()_+,- - # Description: The Amazon RDS master password. - # MaxLength: 41 - # MinLength: 8 - # NoEcho: true - # Type: String - MyRDSInstanceSecretArn: + RDSInstanceSecretArn: Type: String DatabaseName: AllowedPattern: ^([a-zA-Z0-9]*)$ - Description: The Amazon RDS master database name. + Description: Amazon Aurora RDS master database name Type: String DatabaseSecurityGroup: - Description: Select the database security group. + Description: Database security group Type: AWS::EC2::SecurityGroup::Id NumberOfSubnets: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 - Default: 3 + Default: 2 Description: Number of subnets. This must match your selections in the list of subnets below. Type: String Subnet: Description: Select existing subnets. The number selected must match the number of subnets above. Subnets selected must be in separate AZs. Type: List + ProjectName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Default: App + Description: Moodle Project Name + Type: String Conditions: UseMySQL: @@ -129,38 +118,14 @@ Conditions: !Equals [ 2, !Ref NumberOfSubnets ] NumberOfSubnets3: !Equals [ 3, !Ref NumberOfSubnets ] - NumberOfSubnets4: - !Equals [ 4, !Ref NumberOfSubnets ] - NumberOfSubnets5: - !Equals [ 5, !Ref NumberOfSubnets ] - NumberOfSubnets6: - !Equals [ 6, !Ref NumberOfSubnets ] Subnet0: !Or - !Condition NumberOfSubnets1 - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 Subnet1: !Or - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet2: !Or - - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet3: !Or - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet4: !Or - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet5: !Condition NumberOfSubnets6 + Subnet2: !Condition NumberOfSubnets3 UseAWS-ManagedCMK: !Equals ['', !Ref DatabaseCmk] @@ -174,14 +139,16 @@ Resources: Engine: !If [ UsePostgreSQL, aurora-postgresql, aurora-mysql ] DBClusterParameterGroupName: - !If [ UsePostgreSQL, default.aurora-postgresql11, default.aurora-mysql5.7 ] + !If [ UsePostgreSQL, default.aurora-postgresql13, default.aurora-mysql8.0 ] + EngineVersion: + !If [ UsePostgreSQL, '13.8', '8.0.mysql_aurora.3.02.1' ] KmsKeyId: !If [ UseAWS-ManagedCMK, !Ref 'AWS::NoValue', !Ref DatabaseCmk ] - MasterUsername: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSInstanceSecretArn, ':SecretString:username}}' ]] - MasterUserPassword: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSInstanceSecretArn, ':SecretString:password}}' ]] + MasterUsername: !Join ['', ['{{resolve:secretsmanager:', !Ref RDSInstanceSecretArn, ':SecretString:username}}' ]] + MasterUserPassword: !Join ['', ['{{resolve:secretsmanager:', !Ref RDSInstanceSecretArn, ':SecretString:password}}' ]] Port: !If [ UsePostgreSQL, 5432, 3306 ] - StorageEncrypted: !Ref DatabaseEncrpytedBoolean + StorageEncrypted: !Ref DatabaseEncryptedBoolean Tags: - Key: Name Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] @@ -226,27 +193,46 @@ Resources: !If [ NumberOfSubnets2, [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], - !If - [ NumberOfSubnets3, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ], - !If - [ NumberOfSubnets4, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ] ], - !If - [ NumberOfSubnets5, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ] ], - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ], !Select [ 5, !Ref Subnet ] ] - ] - ] - ] + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ] ] ] Tags: - Key: Name Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] + DatabaseClusterParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/ClusterEndpoint' ] ] + Type: String + Value: !GetAtt DatabaseCluster.Endpoint.Address + Description: SSM Parameter for Moodle DB Cluster + + DatabaseClusterReadOnlyParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/ClusterReadOnlyEndpoint' ] ] + Type: String + Value: !GetAtt DatabaseCluster.ReadEndpoint.Address + Description: SSM Parameter for Moodle DB Cluster Read only + + DatabaseNameParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/Name' ] ] + Type: String + Value: !Ref DatabaseName + Description: SSM Parameter for Moodle DB Name + + DatabaseTypeParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/Type' ] ] + Type: String + Value: !Ref DatabaseType + Description: SSM Parameter for Moodle DB Type Outputs: - DatabaseCluster: + Database: Value: !Ref DatabaseCluster DatabaseName: Value: !Ref DatabaseName diff --git a/templates/03-rdsserverless.yaml b/templates/03-rdsserverless.yaml new file mode 100644 index 0000000..3dfe779 --- /dev/null +++ b/templates/03-rdsserverless.yaml @@ -0,0 +1,244 @@ +--- +AWSTemplateFormatVersion: 2010-09-09 + +Description: Reference Architecture to host Moodle on AWS - Creates RDS Aurora Serverless v2 MySQL or PostgreSQL database + +Metadata: + AWS::CloudFormation::Interface: + ParameterGroups: + - Label: + default: Database Parameters + Parameters: + - DatabaseType + - DatabaseMinCapacity + - DatabaseMaxCapacity + - DatabaseName + - DatabaseEncryptedBoolean + - DatabaseCmk + - DatabaseSecurityGroup + - NumberOfSubnets + - Subnet + ParameterLabels: + DatabaseType: + default: Aurora database type + DatabaseMinCapacity: + default: Minimum capacity for database + DatabaseMaxCapacity: + default: Maximum capacity for database + DatabaseEncryptedBoolean: + default: Encrypted DB Cluster + DatabaseCmk: + default: AWS KMS Customer Master Key (CMK) to encrypt DB + DatabaseName: + default: DB Name + DatabaseSecurityGroup: + default: DB Security Group + NumberOfSubnets: + default: Number of subnets + Subnet: + default: Subnets + +Parameters: + DatabaseType: + AllowedValues: + - MySQL + - PostgreSQL + Default: PostgreSQL + Description: Indicates whether to use Aurora MySQL or PostgreSQL. + Type: String + DatabaseEncryptedBoolean: + AllowedValues: + - true + - false + Default: True + Description: Indicates whether the DB instances in the cluster are encrypted. + Type: String + DatabaseCmk: + Description: AWS KMS Customer Master Key (CMK) to encrypt database cluster + Type: String + RDSInstanceSecretArn: + Type: String + DatabaseName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Description: Amazon Aurora RDS master database name + Type: String + DatabaseSecurityGroup: + Description: Database security group + Type: AWS::EC2::SecurityGroup::Id + NumberOfSubnets: + AllowedValues: + - 1 + - 2 + - 3 + Default: 2 + Description: Number of subnets. This must match your selections in the list of subnets below. + Type: String + Subnet: + Description: Select existing subnets. The number selected must match the number of subnets above. Subnets selected must be in separate AZs. + Type: List + ProjectName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Default: App + Description: Moodle Project Name + Type: String + DatabaseMinCapacity: + AllowedValues: + - 0.5 + - 1 + - 2 + - 4 + - 5 + - 16 + - 32 + - 64 + - 128 + Default: 0.5 + Description: The minimum capacity for an Aurora DB cluster, starts with 0.5 and maximum up to 1 + Type: String + DatabaseMaxCapacity: + AllowedValues: + - 0.5 + - 1 + - 2 + - 4 + - 5 + - 16 + - 32 + - 64 + - 128 + Default: 64 + Description: The maximum capacity for an Aurora DB cluster, starts with 0.5 and maximum up to 1 + Type: String + +Conditions: + UseMySQL: + !Equals [!Ref DatabaseType, MySQL] + UsePostgreSQL: + !Equals [!Ref DatabaseType, PostgreSQL] + NumberOfSubnets1: + !Equals [ 1, !Ref NumberOfSubnets ] + NumberOfSubnets2: + !Equals [ 2, !Ref NumberOfSubnets ] + NumberOfSubnets3: + !Equals [ 3, !Ref NumberOfSubnets ] + Subnet0: !Or + - !Condition NumberOfSubnets1 + - !Condition NumberOfSubnets2 + - !Condition NumberOfSubnets3 + Subnet1: !Or + - !Condition NumberOfSubnets2 + - !Condition NumberOfSubnets3 + Subnet2: !Condition NumberOfSubnets3 + UseAWS-ManagedCMK: + !Equals ['', !Ref DatabaseCmk] + +Resources: + DatabaseCluster: + Type: AWS::RDS::DBCluster + Properties: + BackupRetentionPeriod: 30 + DatabaseName: !Ref DatabaseName + DBSubnetGroupName: !Ref DataSubnetGroup + Engine: + !If [ UsePostgreSQL, aurora-postgresql, aurora-mysql ] + DBClusterParameterGroupName: + !If [ UsePostgreSQL, default.aurora-postgresql13, default.aurora-mysql8.0 ] + EngineVersion: + !If [ UsePostgreSQL, '13.8', '8.0.mysql_aurora.3.02.1' ] + KmsKeyId: + !If [ UseAWS-ManagedCMK, !Ref 'AWS::NoValue', !Ref DatabaseCmk ] + MasterUsername: !Join ['', ['{{resolve:secretsmanager:', !Ref RDSInstanceSecretArn, ':SecretString:username}}' ]] + MasterUserPassword: !Join ['', ['{{resolve:secretsmanager:', !Ref RDSInstanceSecretArn, ':SecretString:password}}' ]] + Port: + !If [ UsePostgreSQL, 5432, 3306 ] + StorageEncrypted: !Ref DatabaseEncryptedBoolean + Tags: + - Key: Name + Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] + VpcSecurityGroupIds: + - !Ref DatabaseSecurityGroup + ServerlessV2ScalingConfiguration: + MinCapacity: !Ref DatabaseMinCapacity + MaxCapacity: !Ref DatabaseMaxCapacity + + DatabaseInstance0: + Type: AWS::RDS::DBInstance + DeletionPolicy: Delete + Properties: + AllowMajorVersionUpgrade: false + AutoMinorVersionUpgrade: true + DBClusterIdentifier: !Ref DatabaseCluster + DBInstanceClass: 'db.serverless' + DBSubnetGroupName: !Ref DataSubnetGroup + Engine: + !If [ UsePostgreSQL, aurora-postgresql, aurora-mysql ] + Tags: + - Key: Name + Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] + + DataSubnetGroup: + Type: AWS::RDS::DBSubnetGroup + Properties: + DBSubnetGroupDescription: RDS Database Subnet Group for Moodle + SubnetIds: + !If + [ NumberOfSubnets1, + [ !Select [ 0, !Ref Subnet ] ], + !If + [ NumberOfSubnets2, + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ] + ] + ] + Tags: + - Key: Name + Value: !Join [ '', [ 'Moodle / ', !Ref 'AWS::StackName' ] ] + + DatabaseClusterParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/ClusterEndpoint' ] ] + Type: String + Value: !GetAtt DatabaseCluster.Endpoint.Address + Description: SSM Parameter for Moodle DB Cluster + + DatabaseClusterReadOnlyParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/ClusterReadOnlyEndpoint' ] ] + Type: String + # Aurora Serverless v1 does not support Read-only replicas + Value: !GetAtt DatabaseCluster.Endpoint.Address + Description: SSM Parameter for Moodle DB Cluster Read only + + DatabaseNameParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/Name' ] ] + Type: String + Value: !Ref DatabaseName + Description: SSM Parameter for Moodle DB Name + + DatabaseTypeParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Join [ '', [ '/Moodle/',!Ref ProjectName, '/DB/Type' ] ] + Type: String + Value: !Ref DatabaseType + Description: SSM Parameter for Moodle DB Type + +Outputs: + Database: + Value: !Ref DatabaseCluster + DatabaseName: + Value: !Ref DatabaseName + DataSubnetGroup: + Value: !Ref DataSubnetGroup + DatabaseClusterEndpointAddress: + Value: !GetAtt DatabaseCluster.Endpoint.Address + DatabaseClusterEndpointPort: + Value: !GetAtt DatabaseCluster.Endpoint.Port + DatabaseClusterReadEndpointAddress: + Value: !GetAtt DatabaseCluster.ReadEndpoint.Address + + diff --git a/templates/04-cloudfront.yaml b/templates/04-cloudfront.yaml index aed9e95..a80c99f 100644 --- a/templates/04-cloudfront.yaml +++ b/templates/04-cloudfront.yaml @@ -53,8 +53,6 @@ Resources: Condition: NoSslCertificate Properties: DistributionConfig: - Aliases: - - !If [ DomainName, !Ref DomainName, !Ref 'AWS::NoValue' ] Comment: !Ref 'AWS::StackName' DefaultCacheBehavior: AllowedMethods: @@ -74,16 +72,20 @@ Resources: - '*' Cookies: Forward: all - TargetOriginId: elb - ViewerProtocolPolicy: allow-all + TargetOriginId: alb + ViewerProtocolPolicy: redirect-to-https Compress: true Enabled: true Origins: - DomainName: !Ref PublicAlbDnsName - Id: elb + Id: alb CustomOriginConfig: OriginProtocolPolicy: http-only - PriceClass: PriceClass_100 + PriceClass: PriceClass_All + HttpVersion: http2and3 + ViewerCertificate: + CloudFrontDefaultCertificate: true + CloudFrontDistributionSslCertificate: Type: AWS::CloudFront::Distribution Condition: SslCertificate @@ -110,24 +112,23 @@ Resources: - '*' Cookies: Forward: all - TargetOriginId: elb + TargetOriginId: alb ViewerProtocolPolicy: redirect-to-https Compress: true Enabled: true Origins: - DomainName: !Ref PublicAlbDnsName - Id: elb + Id: alb CustomOriginConfig: - OriginProtocolPolicy: https-only - PriceClass: PriceClass_100 + OriginProtocolPolicy: http-only + PriceClass: PriceClass_All + HttpVersion: http2and3 ViewerCertificate: AcmCertificateArn: !Ref CloudFrontAcmCertificate SslSupportMethod: sni-only - MinimumProtocolVersion: TLSv1 + MinimumProtocolVersion: TLSv1.2_2019 Outputs: - DnsEndpoint: - Value: !If [ NoSslCertificate, !GetAtt CloudFrontDistributionNoSslCertificate.DomainName, !GetAtt CloudFrontDistributionSslCertificate.DomainName ] - DnsHostname: - Value: !If [ NoSslCertificate, !Join [ '', [ 'http://', !GetAtt CloudFrontDistributionNoSslCertificate.DomainName ] ], !Join [ '', [ 'https://', !GetAtt CloudFrontDistributionSslCertificate.DomainName ] ] ] \ No newline at end of file + DnsName: + Value: !If [ NoSslCertificate, !GetAtt CloudFrontDistributionNoSslCertificate.DomainName, !GetAtt CloudFrontDistributionSslCertificate.DomainName ] \ No newline at end of file diff --git a/templates/04-efsfilegrowhelper.yaml b/templates/04-efsfilegrowhelper.yaml new file mode 100644 index 0000000..9d4dc78 --- /dev/null +++ b/templates/04-efsfilegrowhelper.yaml @@ -0,0 +1,660 @@ +--- +AWSTemplateFormatVersion: 2010-09-09 + +Description: Reference Architecture to host Moodle on AWS - Creates EFS alarms + +Parameters: + Growth: + ConstraintDescription: Must be an integer. + Default: 0 + Description: Amount of dummy data (GiB) to add to the file system (max 6144 GiB). Amazon EFS storage charges apply. + MaxValue: 6144 + MinValue: 0 + Type: Number + CriticalThreshold: + AllowedPattern: ^[0-9]+$ + ConstraintDescription: Must be an integer. + Default: 60 + Description: Send critical alarm this minutes before burst credit balance is zero. + Type: String + SecurityGroup: + Description: Select the Amazon EFS security group. + Type: AWS::EC2::SecurityGroup::Id + ElasticFileSystem: + Description: The Amazon EFS file system id. + Type: String + EmailAddress: + Description: The email address for SNS notifications. + Type: String + InstanceType: + AllowedValues: + - m5.large + - m5.xlarge + - m5.2xlarge + - m5.4xlarge + - m5.8xlarge + - m5.12xlarge + - m5.16xlarge + - m5.24xlarge + - c5.large + - c5.xlarge + - c5.2xlarge + - c5.4xlarge + - c5.9xlarge + - c5.12xlarge + - c5.18xlarge + - c5.24xlarge + - r5.large + - r5.xlarge + - r5.2xlarge + - r5.4xlarge + - r5.8xlarge + - r5.12xlarge + - r5.16xlarge + - r5.24xlarge + - m5a.large + - m5a.xlarge + - m5a.2xlarge + - m5a.4xlarge + - m5a.8xlarge + - m5a.12xlarge + - m5a.16xlarge + - m5a.24xlarge + - c5a.large + - c5a.xlarge + - c5a.2xlarge + - c5a.4xlarge + - c5a.9xlarge + - c5a.12xlarge + - c5a.18xlarge + - c5a.24xlarge + - r5a.large + - r5a.xlarge + - r5a.2xlarge + - r5a.4xlarge + - r5a.8xlarge + - r5a.12xlarge + - r5a.16xlarge + - r5a.24xlarge + - m6g.large + - m6g.xlarge + - m6g.2xlarge + - m6g.4xlarge + - m6g.8xlarge + - m6g.12xlarge + - m6g.16xlarge + - m6g.24xlarge + - c6g.large + - c6g.xlarge + - c6g.2xlarge + - c6g.4xlarge + - c6g.9xlarge + - c6g.12xlarge + - c6g.18xlarge + - c6g.24xlarge + - r6g.large + - r6g.xlarge + - r6g.2xlarge + - r6g.4xlarge + - r6g.8xlarge + - r6g.12xlarge + - r6g.16xlarge + - r6g.24xlarge + ConstraintDescription: Must be a valid Amazon EC2 instance type. + Default: m6g.large + Description: The Amazon EC2 instance type that dynamically adjusts thresholds based on permitted throughput changes. + Type: String + EC2KeyName: + Description: Name of an existing EC2 key pair + Type: AWS::EC2::KeyPair::KeyName + NumberOfSubnets: + AllowedValues: + - 1 + - 2 + - 3 + Default: 2 + Description: Number of subnets. This must match your selections in the list of Subnets below. + Type: String + Subnet: + Description: Select existing subnets. + Type: List + WarningThreshold: + AllowedPattern: ^[0-9]+$ + ConstraintDescription: Must be an integer. + Default: 180 + Description: Send warning alarm this many minutes before burst credit balance is zero. + Type: String + LatestAmiId : + Type : AWS::SSM::Parameter::Value + Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 + LatestArmAmiId : + Type : AWS::SSM::Parameter::Value + Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2 + +Conditions: + NumberOfSubnets1: + !Equals [ 1, !Ref NumberOfSubnets ] + NumberOfSubnets2: + !Equals [ 2, !Ref NumberOfSubnets ] + NumberOfSubnets3: + !Equals [ 3, !Ref NumberOfSubnets ] + Subnet0: !Or + - !Condition NumberOfSubnets1 + - !Condition NumberOfSubnets2 + - !Condition NumberOfSubnets3 + Subnet1: !Or + - !Condition NumberOfSubnets2 + - !Condition NumberOfSubnets3 + Subnet2: !Condition NumberOfSubnets3 + UsingGraviton2Ami: !Or + - !Equals ["t4",!Select [0, !Split [ "g.", !Ref InstanceType]]] + - !Equals ["c6",!Select [0, !Split [ "g.", !Ref InstanceType]]] + - !Equals ["m6",!Select [0, !Split [ "g.", !Ref InstanceType]]] + - !Equals ["r6",!Select [0, !Split [ "g.", !Ref InstanceType]]] + +Resources: + InstanceProfile: + Type: AWS::IAM::InstanceProfile + Properties: + Path: / + Roles: + - !Ref InstanceRole + + InstanceRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - ec2.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore' + Path: / + Policies: + - PolicyName: MoodleEFSFileHelperPolicy + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - autoscaling:DescribeAutoScalingGroups + - autoscaling:DescribeAutoScalingInstances + - autoscaling:DescribePolicies + - autoscaling:UpdateAutoScalingGroup + Resource: '*' + - Effect: Allow + Action: + - cloudwatch:GetMetricStatistics + - cloudwatch:PutMetricAlarm + - autoscaling:DescribeAutoScalingGroups + - autoscaling:DescribeAutoScalingInstances + - autoscaling:DescribePolicies + - autoscaling:UpdateAutoScalingGroup + - elasticfilesystem:DescribeFileSystems + Resource: '*' + - Effect: Allow + Action: + - sns:Publish + Resource: !Ref SNSTopic + + AutoScalingGroup: + Type: AWS::AutoScaling::AutoScalingGroup + Properties: + Cooldown: 60 + HealthCheckGracePeriod: 120 + HealthCheckType: EC2 + LaunchTemplate: + LaunchTemplateId: !Ref LaunchTemplate + Version: !GetAtt LaunchTemplate.LatestVersionNumber + MaxSize: 1 + MinSize: 0 + DesiredCapacity: 1 + Tags: + - Key: Name + Value: !Join [ '', [ 'Moodle EFS Helper ', !Ref 'ElasticFileSystem', ' ...will auto terminate' ] ] + PropagateAtLaunch: true + VPCZoneIdentifier: + !If + [ NumberOfSubnets1, + [ !Select [ 0, !Ref Subnet ] ], + !If + [ NumberOfSubnets2, + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ] + ] + ] + CreationPolicy: + ResourceSignal: + Count: 0 + Timeout: PT12H + UpdatePolicy: + AutoScalingReplacingUpdate: + WillReplace: true + + AutoScalingPolicy: + Type: AWS::AutoScaling::ScalingPolicy + Properties: + AdjustmentType: ChangeInCapacity + AutoScalingGroupName: !Ref AutoScalingGroup + Cooldown: 60 + PolicyType: SimpleScaling + ScalingAdjustment: 1 + + BurstCreditBalanceDecreaseAlarm: + Type: AWS::CloudWatch::Alarm + Properties: + AlarmActions: + - !Ref SNSTopic + - !Ref AutoScalingPolicy + AlarmDescription: !Join [ '', [ 'Set ', !Ref ElasticFileSystem, ' burst credit balance decrease threshold - ', !Ref 'AWS::StackName' ] ] + AlarmName: !Join [ '', [ 'Set ', !Ref ElasticFileSystem, ' burst credit balance decrease threshold - ', !Ref 'AWS::StackName' ] ] + ComparisonOperator: LessThanThreshold + Dimensions: + - Name: FileSystemId + Value: !Ref ElasticFileSystem + EvaluationPeriods: 10 + MetricName: PermittedThroughput + Namespace: AWS/EFS + Period: 60 + Statistic: Sum + Threshold: 0 + TreatMissingData: missing + + BurstCreditBalanceIncreaseAlarm: + Type: AWS::CloudWatch::Alarm + Properties: + AlarmActions: + - !Ref SNSTopic + - !Ref AutoScalingPolicy + AlarmDescription: !Join [ '', [ 'Set ', !Ref ElasticFileSystem, ' burst credit balance increase threshold - ', !Ref 'AWS::StackName' ] ] + AlarmName: !Join [ '', [ 'Set ', !Ref ElasticFileSystem, ' burst credit balance increase threshold - ', !Ref 'AWS::StackName' ] ] + ComparisonOperator: LessThanThreshold + Dimensions: + - Name: FileSystemId + Value: !Ref ElasticFileSystem + EvaluationPeriods: 10 + MetricName: PermittedThroughput + Namespace: AWS/EFS + Period: 60 + Statistic: Sum + Threshold: 0 + TreatMissingData: missing + + CriticalAlarm: + Type: AWS::CloudWatch::Alarm + Properties: + AlarmActions: + - !Ref SNSTopic + AlarmDescription: !Join [ '', [ !Ref ElasticFileSystem, ' burst credit balance - Critical - ', !Ref 'AWS::StackName' ] ] + AlarmName: !Join [ '', [ !Ref ElasticFileSystem, ' burst credit balance - Critical - ', !Ref 'AWS::StackName' ] ] + ComparisonOperator: LessThanThreshold + Dimensions: + - Name: FileSystemId + Value: !Ref ElasticFileSystem + EvaluationPeriods: 10 + MetricName: BurstCreditBalance + Namespace: AWS/EFS + Period: 60 + Statistic: Sum + Threshold: 0 + TreatMissingData: missing + + LaunchTemplate: + Type: AWS::EC2::LaunchTemplate + Metadata: + AWS::CloudFormation::Init: + configSets: + efs_add_storage: + - efs-add-storage + set_cloudwatch_alarms: + - set-cloudwatch-alarms + efs-add-storage: + packages: + yum: + #Only needed to set permissions on the moodle folder + httpd: [] + files: + /tmp/efs-add-storage.sh: + content: !Sub | + #!/bin/bash -x + + FILE_SYSTEM_ID=$1 + DATA_DIRECTORY=$2 + GROWTH=$3 + + if [ $# -lt 3 ]; then + echo "Invalid # of arguments. Require: file system id, data directory, file system growth (GiB) " + exit 0 + fi + + # get region from instance meta-data + availabilityzone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) + region=${!availabilityzone:0:-1} + + # get instance id + instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id) + + # get autoscaling group name + asg_name=$(aws autoscaling describe-auto-scaling-instances --instance-ids $instance_id --region $region --output text --query 'AutoScalingInstances[0].AutoScalingGroupName') + + # set the number of threads to the number of vcpus + threads=$(( $(nproc --all) * 8 )) + + # wait for file system DNS name to be propagated + results=1 + while [[ $results != 0 ]]; do + nslookup $FILE_SYSTEM_ID.efs.$region.amazonaws.com + results=$? + if [[ results = 1 ]]; then + sleep 30 + fi + done + + # mount file system + sudo mkdir -p /$FILE_SYSTEM_ID + sudo chown ec2-user:ec2-user /$FILE_SYSTEM_ID + sudo mountpoint -q /$FILE_SYSTEM_ID || sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $FILE_SYSTEM_ID.efs.$region.amazonaws.com:/ /$FILE_SYSTEM_ID + + #Create directories for Moodle + sudo mkdir -p /$FILE_SYSTEM_ID/data + sudo mkdir -p /$FILE_SYSTEM_ID/cache + sudo mkdir -p /$FILE_SYSTEM_ID/temp + chown apache:apache /$FILE_SYSTEM_ID/data/ + chown apache:apache /$FILE_SYSTEM_ID/cache/ + chown apache:apache /$FILE_SYSTEM_ID/temp/ + + # create data directory if not exists + sudo mkdir -p /$FILE_SYSTEM_ID/$DATA_DIRECTORY + sudo chown ec2-user:ec2-user /$FILE_SYSTEM_ID/$DATA_DIRECTORY + + # dd 1GiB files to file system to match DATA_SIZE + files=$GROWTH + if [ $(( $files / $threads )) == 0 ]; + then + runs=0 + parallel_threads=$(( $files % $threads )) + else + runs=$(( $files / $threads )) + parallel_threads=$threads + fi + while [ $runs -ge 0 ]; do + if [ $runs == 0 ]; + then + parallel_threads=$(( $files % $threads )) + seq 0 $(( $parallel_threads - 1 )) | parallel --will-cite -j $parallel_threads --compress dd if=/dev/zero of=/$FILE_SYSTEM_ID/$DATA_DIRECTORY/1G-dd-$(date +%Y%m%d%H%M%S.%3N)-{} bs=1M count=1024 oflag=sync + runs=$(($runs-1)) + else + seq 0 $(( $parallel_threads - 1 )) | parallel --will-cite -j $parallel_threads --compress dd if=/dev/zero of=/$FILE_SYSTEM_ID/$DATA_DIRECTORY/1G-dd-$(date +%Y%m%d%H%M%S.%3N)-{} bs=1M count=1024 oflag=sync + runs=$(($runs-1)) + fi + done + + # set ASG to zero which terminates instance + # aws autoscaling update-auto-scaling-group --auto-scaling-group-name $asg_name --desired-capacity 0 --region $region + mode: 000777 + owner: root + group: root + set-cloudwatch-alarms: + files: + /tmp/set-cloudwatch-alarms.sh: + content: + !Join [ + "",[ + "#!/bin/bash -x\n", + "\n", + "FILE_SYSTEM_ID=$1\n", + "WARNING_THRESHOLD_MINUTES=$2\n", + "CRITICAL_THRESHOLD_MINUTES=$3\n", + "SNS_ARN=$4\n", + "\n", + "error=0\n", + "\n", + "# get region\n", + "availability_zone=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)\n", + "region=${availability_zone:0:-1}\n", + "\n", + "# get instance id\n", + "instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)\n", + "\n", + "# get autoscaling group name\n", + "asg_name=$(aws autoscaling describe-auto-scaling-instances --instance-ids ${instance_id} --region ${region} --output text --query 'AutoScalingInstances[0].AutoScalingGroupName')\n", + "\n", + "# get autoscaling policy arn\n", + "asg_policy_arn=$(aws autoscaling describe-policies --auto-scaling-group-name ${asg_name} --region ${region} --output text --query 'ScalingPolicies[0].PolicyARN')\n", + "\n", + "# validate FILE_SYSTEM_ID send notification and exit if doesn't exist\n", + "aws efs describe-file-systems --file-system-id ${FILE_SYSTEM_ID} --region ${region} --output text --query 'FileSystems[0].[FileSystemId]'\n", + "result=$?\n", + "if [ $result -ne 0 ]; then\n", + " aws sns publish --topic-arn ${SNS_ARN} --region ${region} --message 'Amazon EFS burst credit balance CloudWatch alarm error. File system '${FILE_SYSTEM_ID}' does not exist.'\n", + " exit\n", + "fi\n", + "\n", + "# get current permitted throughput\n", + "count=1\n", + "while [ -z ${permitted_throughput} ] || [ ${permitted_throughput} == null ] && [ ${count} -lt 60 ]; do\n", + " permitted_throughput=$(aws cloudwatch get-metric-statistics --namespace AWS/EFS --metric-name PermittedThroughput --dimensions Name=FileSystemId,Value=${FILE_SYSTEM_ID} --start-time $(date --utc +%FT%TZ -d '-120 seconds') --end-time $(date --utc +%FT%TZ -d '-60 seconds') --period 60 --statistics Sum --region ${region} --output json --query 'Datapoints[0].Sum')\n", + " sleep 2\n", + " count=$(expr ${count} + 1)\n", + "done\n", + "\n", + "# get current burst credit balance\n", + "count=1\n", + "while [ -z ${burst_credit_balance} ] || [ ${burst_credit_balance} == null ] && [ ${count} -lt 60 ]; do\n", + " burst_credit_balance=$(aws cloudwatch get-metric-statistics --namespace AWS/EFS --metric-name BurstCreditBalance --dimensions Name=FileSystemId,Value=${FILE_SYSTEM_ID} --start-time $(date --utc +%FT%TZ -d '-120 seconds') --end-time $(date --utc +%FT%TZ -d '-60 seconds') --period 60 --statistics Sum --region ${region} --output json --query 'Datapoints[0].Sum')\n", + " sleep 2\n", + " count=$(expr ${count} + 1)\n", + "done\n", + "\n", + "# calculate new burst credit balance warning threshold\n", + "burst_credit_balance_threshold_warning=$(( ${burst_credit_balance:0:-2} - ( ( ( ${burst_credit_balance:0:-2} / ( ${permitted_throughput:0:-2} * 60 ) ) - $WARNING_THRESHOLD_MINUTES ) * ( ${permitted_throughput:0:-2} * 60 ) ) ))\n", + "\n", + "# calculate new burst credit balance critical threshold\n", + "burst_credit_balance_threshold_critical=$(( ${burst_credit_balance:0:-2} - ( ( ( ${burst_credit_balance:0:-2} / ( ${permitted_throughput:0:-2} * 60 ) ) - $CRITICAL_THRESHOLD_MINUTES ) * ( ${permitted_throughput:0:-2} * 60 ) ) ))\n", + "\n", + "# update warning alarm with new burst credit balance warning threshold\n", + "aws cloudwatch put-metric-alarm --alarm-name ''${FILE_SYSTEM_ID}' burst credit balance - Warning - '", !Ref 'AWS::StackName', " --alarm-description ''${FILE_SYSTEM_ID}' burst credit balance - Warning - '", !Ref 'AWS::StackName', " --actions-enabled --alarm-actions ${SNS_ARN} --metric-name BurstCreditBalance --namespace AWS/EFS --statistic Sum --dimensions Name=FileSystemId,Value=${FILE_SYSTEM_ID} --period 60 --evaluation-periods 5 --threshold ${burst_credit_balance_threshold_warning} --comparison-operator LessThanThreshold --treat-missing-data missing --region ${region}\n", + "result=$?\n", + "if [ $result -ne 0 ]; then\n", + " aws sns publish --topic-arn ${SNS_ARN} --region ${region} --message 'Amazon EFS burst credit balance CloudWatch alarm error. Check CloudWatch alarms for file system '${FILE_SYSTEM_ID}'.'\n", + " error=$(expr ${error} + 1)\n", + "fi\n", + "\n", + "# update critical alarm with new burst credit balance critical threshold\n", + "aws cloudwatch put-metric-alarm --alarm-name ''${FILE_SYSTEM_ID}' burst credit balance - Critical - '", !Ref 'AWS::StackName', " --alarm-description ''${FILE_SYSTEM_ID}' burst credit balance - Critical - '", !Ref 'AWS::StackName', " --actions-enabled --alarm-actions ${SNS_ARN} --metric-name BurstCreditBalance --namespace AWS/EFS --statistic Sum --dimensions Name=FileSystemId,Value=${FILE_SYSTEM_ID} --period 60 --evaluation-periods 5 --threshold ${burst_credit_balance_threshold_critical} --comparison-operator LessThanThreshold --treat-missing-data missing --region ${region}\n", + "result=$?\n", + "if [ $result -ne 0 ]; then\n", + " aws sns publish --topic-arn ${SNS_ARN} --region ${region} --message 'Amazon EFS burst credit balance CloudWatch alarm error. Check CloudWatch alarms for file system '${FILE_SYSTEM_ID}'.'\n", + " error=$(expr ${error} + 1)\n", + "fi\n", + "\n", + "# update burst credit balance increase threshold based\n", + "aws cloudwatch put-metric-alarm --alarm-name 'Set '${FILE_SYSTEM_ID}' burst credit balance increase threshold - '", !Ref 'AWS::StackName', " --alarm-description 'Set '${FILE_SYSTEM_ID}' burst credit balance increase threshold - '", !Ref 'AWS::StackName', " --actions-enabled --alarm-actions ${SNS_ARN} ${asg_policy_arn} --metric-name PermittedThroughput --namespace AWS/EFS --statistic Sum --dimensions Name=FileSystemId,Value=${FILE_SYSTEM_ID} --period 60 --evaluation-periods 5 --threshold ${permitted_throughput:0:-2} --comparison-operator GreaterThanThreshold --treat-missing-data missing --region ${region}\n", + "result=$?\n", + "if [ $result -ne 0 ]; then\n", + " aws sns publish --topic-arn ${SNS_ARN} --region ${region} --message 'Amazon EFS burst credit balance CloudWatch alarm error. Check CloudWatch alarms for file system '${FILE_SYSTEM_ID}'.'\n", + " error=$(expr ${error} + 1)\n", + "fi\n", + "\n", + "# update burst credit balance decrease threshold based\n", + "aws cloudwatch put-metric-alarm --alarm-name 'Set '${FILE_SYSTEM_ID}' burst credit balance decrease threshold - '", !Ref 'AWS::StackName', " --alarm-description 'Set '${FILE_SYSTEM_ID}' burst credit balance decrease threshold - '", !Ref 'AWS::StackName', " --actions-enabled --alarm-actions ${SNS_ARN} ${asg_policy_arn} --metric-name PermittedThroughput --namespace AWS/EFS --statistic Sum --dimensions Name=FileSystemId,Value=${FILE_SYSTEM_ID} --period 60 --evaluation-periods 5 --threshold ${permitted_throughput:0:-2} --comparison-operator LessThanThreshold --treat-missing-data missing --region ${region}\n", + "result=$?\n", + "if [ $result -ne 0 ]; then\n", + " aws sns publish --topic-arn ${SNS_ARN} --region ${region} --message 'Amazon EFS burst credit balance CloudWatch alarm error. Check CloudWatch alarms for file system '${FILE_SYSTEM_ID}'.'\n", + " error=$(expr ${error} + 1)\n", + "fi\n", + "\n", + "# auto terminate instance - setting auto scaling group desired capacity 0\n", + "if [ $error -eq 0 ]; then\n", + " aws autoscaling update-auto-scaling-group --auto-scaling-group-name ${asg_name} --desired-capacity 0 --region ${region}\n", + " else\n", + " aws sns publish --topic-arn ${SNS_ARN} --region ${region} --message 'Amazon EFS burst credit balance CloudWatch alarm error. Check CloudWatch alarms for file system '${FILE_SYSTEM_ID}'.'\n", + "fi\n", + "\n" + ] + ] + mode: 000777 + owner: root + group: root + Properties: + LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + DeleteOnTermination: true + VolumeSize: 10 + VolumeType: gp3 + IamInstanceProfile: + Arn: !GetAtt InstanceProfile.Arn + ImageId: !If [UsingGraviton2Ami, !Ref LatestArmAmiId, !Ref LatestAmiId] + Monitoring: + Enabled: true + InstanceType: !Ref InstanceType + KeyName: !Ref EC2KeyName + SecurityGroupIds: + - !Ref SecurityGroup + UserData: + "Fn::Base64": + !Sub | + #!/bin/bash -xe + sudo systemctl enable amazon-ssm-agent + sudo systemctl start amazon-ssm-agent + sudo systemctl status amazon-ssm-agent + + yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm + yum-config-manager --enable epel + yum install -y parallel + /opt/aws/bin/cfn-init --configsets set_cloudwatch_alarms --verbose --stack ${AWS::StackName} --resource LaunchTemplate --region ${AWS::Region} + /opt/aws/bin/cfn-init --configsets efs_add_storage --verbose --stack ${AWS::StackName} --resource LaunchTemplate --region ${AWS::Region} + /tmp/efs-add-storage.sh ${ElasticFileSystem} throughput_data ${Growth} + /tmp/set-cloudwatch-alarms.sh ${ElasticFileSystem} ${WarningThreshold} ${CriticalThreshold} ${SNSTopic} + /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource AutoScalingGroup --region ${AWS::Region} + + EfsSizeMonitorFunction: + DependsOn: LambdaRole + Type: AWS::Lambda::Function + Properties: + Code: + ZipFile: !Sub | + import boto3 + import os + import sys + + def handler(event, context): + if not os.environ.get('filesystemid'): + print "Unable to get the environment variable filesystemid" + sys.exit(1) + else: + filesystemid = os.environ.get('filesystemid') + + if not os.environ.get('region'): + print "Unable to get the environment variable region" + sys.exit(1) + else: + region = os.environ.get('region') + + def efs_get_size(): + client = boto3.client('efs') + response = client.describe_file_systems(FileSystemId=filesystemid) + k = response['FileSystems'][0]['SizeInBytes']['Value'] + return k + + def cloudwatch_put_metric(): + client = boto3.client('cloudwatch') + client.put_metric_data( + MetricData=[ + { + 'MetricName': 'SizeInBytes', + 'Dimensions': [ + { + 'Name': 'FileSystemId', + 'Value': filesystemid + }, + ], + 'Unit': 'None', + 'Value': efs_get_size() + }, + ], + Namespace='Custom/EFS' + ) + print('CloudWatch metric SizeInBytes sucessfully updated.') + + cloudwatch_put_metric() + Description: Lambda function to update the SizeInBytes EFS CloudWatch metric + Environment: + Variables: + filesystemid: !Ref ElasticFileSystem + region: !Ref 'AWS::Region' + FunctionName: !Join [ '', [ 'efs-', !Ref ElasticFileSystem, '-size-monitor' ] ] + Handler: index.handler + Role: !GetAtt LambdaRole.Arn + Runtime: python3.9 + Timeout: 60 + + LambdaRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - lambda.amazonaws.com + Action: + - sts:AssumeRole + Path: / + ManagedPolicyArns: + - arn:aws:iam::aws:policy/CloudWatchFullAccess + - arn:aws:iam::aws:policy/AmazonElasticFileSystemReadOnlyAccess + # EfsLambdaPermission: + # Type: AWS::Lambda::Permission + # Properties: + # FunctionName: !Ref EfsSizeMonitorFunction + # Action: lambda:InvokeFunction + # Principal: events.amazonaws.com + # SourceArn: !GetAtt EfsSizeMonitorEvent.Arn + # EfsSizeMonitorEvent: + # Type: AWS::Events::Rule + # Properties: + # Description: Scheduled event to update SizeInBytes EFS CloudWatch metric + # Name: !Join [ '', [ 'efs-', !Ref ElasticFileSystem, '-size-monitor-scheduled-event' ] ] + # ScheduleExpression: rate(1 minute) + # State: ENABLED + # Targets: + # - Arn: !GetAtt EfsSizeMonitorFunction.Arn + # Id: '1' + + SNSTopic: + Type: AWS::SNS::Topic + Properties: + DisplayName: !Join [ '', [ !Ref ElasticFileSystem, '-alarm-notification' ] ] + Subscription: + - Endpoint: !Ref EmailAddress + Protocol: "email" + TopicName: !Join [ '', [ !Ref ElasticFileSystem, '-alarm-notification' ] ] + + WarningAlarm: + Type: AWS::CloudWatch::Alarm + Properties: + AlarmActions: + - !Ref SNSTopic + AlarmDescription: !Join [ '', [ !Ref ElasticFileSystem, ' burst credit balance - Warning - ', !Ref 'AWS::StackName' ] ] + AlarmName: !Join [ '', [ !Ref ElasticFileSystem, ' burst credit balance - Warning - ', !Ref 'AWS::StackName' ] ] + ComparisonOperator: LessThanThreshold + Dimensions: + - Name: FileSystemId + Value: !Ref ElasticFileSystem + EvaluationPeriods: 10 + MetricName: BurstCreditBalance + Namespace: AWS/EFS + Period: 60 + Statistic: Sum + Threshold: 0 + TreatMissingData: missing + diff --git a/templates/04-web.yaml b/templates/04-web.yaml index 76af6f3..a0ebed9 100644 --- a/templates/04-web.yaml +++ b/templates/04-web.yaml @@ -2,113 +2,10 @@ AWSTemplateFormatVersion: 2010-09-09 Description: Reference Architecture to host Moodle on AWS - Creates Moodle web Auto Scaling group - -Metadata: - - AWS::CloudFormation::Interface: - ParameterGroups: - - Label: - default: Web Parameters - Parameters: - - EC2KeyName - - WebInstanceType - - WebAsgMax - - WebAsgMin - - WebSecurityGroup - - NumberOfSubnets - - Subnet - - PublicAlbTargetGroupArn - - PublicAlbHostname - - SslCertificate - - Label: - default: Moodle Parameters - Parameters: - - DomainName - - MoodleLocale - - Label: - default: Database Parameters - Parameters: - - DatabaseClusterEndpointAddress - - DatabaseName - # - DatabaseMasterUsername - # - DatabaseMasterPassword - - DatabaseClusterEndpointAddress - - ElastiCacheClusterEndpointAddress - - Label: - default: File System Parameters - Parameters: - - ElasticFileSystem - ParameterLabels: - DatabaseClusterEndpointAddress: - default: DB Cluster Endpoint Address - # DatabaseMasterUsername: - # default: DB Master Username - # DatabaseMasterPassword: - # default: DB Master Password - DatabaseName: - default: DB Name - ElastiCacheClusterEndpointAddress: - default: ElastiCache Endpoint Address - ElasticFileSystem: - default: EFS File System - EC2KeyName: - default: Existing Key Pair - NumberOfSubnets: - default: Number of subnets - PublicAlbTargetGroupArn: - default: Public ALB Target Group Arn - PublicAlbHostname: - default: Public ALB Hostname - SslCertificate: - default: ACM Cert attached to Public ALB - Subnet: - default: Subnets - WebAsgMax: - default: Web ASG Max - WebAsgMin: - default: Web ASG Min - WebInstanceType: - default: Web Instance Type - WebSecurityGroup: - default: Web Security Group - DomainName: - default: Site Domain - MoodleLocale: - default: Language Code - + Parameters: - ElastiCacheClusterEndpointAddress: - Description: The ElastiCacheCluster cluster endpoint address. - Type: String - DatabaseClusterEndpointAddress: - Description: The RDS cluster endpoint address. - Type: String - # DatabaseMasterUsername: - # AllowedPattern: ^([a-zA-Z0-9]*)$ - # Description: The Amazon RDS master username. - # ConstraintDescription: Must contain only alphanumeric characters and be at least 8 characters. - # MaxLength: 16 - # MinLength: 1 - # Type: String - # DatabaseMasterPassword: - # AllowedPattern: ^([a-z0-9A-Z`~!#$%^&*()_+,\\-])*$ - # ConstraintDescription: Must be letters (upper or lower), numbers, and these special characters '_'`~!#$%^&*()_+,- - # Description: The Amazon RDS master password. - # MaxLength: 41 - # MinLength: 8 - # NoEcho: true - # Type: String - MyRDSInstanceSecretArn: - Type: String - DatabaseName: - AllowedPattern: ^([a-zA-Z0-9]*)$ - Description: The Amazon RDS master database name. - Type: String - Default: moodle - ElasticFileSystem: - AllowedPattern: ^(fs-)([a-z0-9]{8}|[a-z0-9]{17})$ - Description: The Amazon EFS file system id. + RDSInstanceSecretArn: Type: String EC2KeyName: AllowedPattern: ^([a-zA-Z0-9 @.`~!#$%^&*()_+,\\-])*$ @@ -117,35 +14,22 @@ Parameters: Type: AWS::EC2::KeyPair::KeyName NumberOfSubnets: AllowedValues: + - 1 - 2 - 3 - - 4 - - 5 - - 6 Default: 2 Description: Number of subnets. This must match your selections in the list of subnets below. Type: String PublicAlbTargetGroupArn: Description: The public application load balancer target group arn. Type: String - PublicAlbHostname: - Description: The hostname of the public ALB http form (e.g. http://abdc-12345-xyz..elb.amazonaws.com) - Type: String - SslCertificate: - AllowedValues: - - True - - False - Default: True - Description: Is there an ACM SSL Certificate attached to the Public ALB? - Type: - String Subnet: Description: Select existing subnets. The number selected must match the number of subnets above. Subnets selected must be in separate AZs. Type: List WebAsgMax: AllowedPattern: ^((?!0$)[1-2]?[0-9]|30)$ ConstraintDescription: Must be a number between 1 and 30. - Default: 4 + Default: 1 Description: Specifies the maximum number of EC2 instances in the Web Autoscaling Group. Type: String WebAsgMin: @@ -187,72 +71,107 @@ Parameters: - r5.12xlarge - r5.16xlarge - r5.24xlarge + - t3a.nano + - t3a.micro + - t3a.small + - t3a.medium + - t3a.large + - t3a.xlarge + - t3a.2xlarge + - m5a.large + - m5a.xlarge + - m5a.2xlarge + - m5a.4xlarge + - m5a.8xlarge + - m5a.12xlarge + - m5a.16xlarge + - m5a.24xlarge + - c5a.large + - c5a.xlarge + - c5a.2xlarge + - c5a.4xlarge + - c5a.9xlarge + - c5a.12xlarge + - c5a.18xlarge + - c5a.24xlarge + - r5a.large + - r5a.xlarge + - r5a.2xlarge + - r5a.4xlarge + - r5a.8xlarge + - r5a.12xlarge + - r5a.16xlarge + - r5a.24xlarge + - t4g.nano + - t4g.micro + - t4g.small + - t4g.medium + - t4g.large + - t4g.xlarge + - t4g.2xlarge + - m6g.large + - m6g.xlarge + - m6g.2xlarge + - m6g.4xlarge + - m6g.8xlarge + - m6g.12xlarge + - m6g.16xlarge + - m6g.24xlarge + - c6g.large + - c6g.xlarge + - c6g.2xlarge + - c6g.4xlarge + - c6g.9xlarge + - c6g.12xlarge + - c6g.18xlarge + - c6g.24xlarge + - r6g.large + - r6g.xlarge + - r6g.2xlarge + - r6g.4xlarge + - r6g.8xlarge + - r6g.12xlarge + - r6g.16xlarge + - r6g.24xlarge ConstraintDescription: Must be a valid Amazon EC2 instance type. - Default: t3.large + Default: m6g.large Description: The Amazon EC2 instance type for your web instances. Type: String WebSecurityGroup: Description: Select the web security group. Type: AWS::EC2::SecurityGroup::Id - DomainName: - AllowedPattern: ^$|(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ - Description: '[ Optional ] The main domain name of the Moodle site (e.g. moodle.example.edu). Leave empty to use the ALB DNS name for the Moodle site.' - Type: String - MoodleLocale: - Description: The main language used in the Moodle configuration wizard. - Type: String - Default: en LatestAmiId : Type : AWS::SSM::Parameter::Value Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 + LatestArmAmiId : + Type : AWS::SSM::Parameter::Value + Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2 + CodeArtifactS3BucketArn: + Type: "String" + Description: Code Artifact S3 Bucket Arn Conditions: - - NoSslCertificate: - !Equals [ False, !Ref SslCertificate ] NumberOfSubnets1: !Equals [ 1, !Ref NumberOfSubnets ] NumberOfSubnets2: !Equals [ 2, !Ref NumberOfSubnets ] NumberOfSubnets3: !Equals [ 3, !Ref NumberOfSubnets ] - NumberOfSubnets4: - !Equals [ 4, !Ref NumberOfSubnets ] - NumberOfSubnets5: - !Equals [ 5, !Ref NumberOfSubnets ] - NumberOfSubnets6: - !Equals [ 6, !Ref NumberOfSubnets ] Subnet0: !Or - !Condition NumberOfSubnets1 - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 Subnet1: !Or - !Condition NumberOfSubnets2 - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet2: !Or - - !Condition NumberOfSubnets3 - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet3: !Or - - !Condition NumberOfSubnets4 - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet4: !Or - - !Condition NumberOfSubnets5 - - !Condition NumberOfSubnets6 - Subnet5: !Condition NumberOfSubnets6 - NoDomainName: - !Equals [ '', !Ref DomainName ] + Subnet2: !Condition NumberOfSubnets3 + UsingGraviton2Ami: !Or + - !Equals ["t4",!Select [0, !Split [ "g.", !Ref WebInstanceType]]] + - !Equals ["c6",!Select [0, !Split [ "g.", !Ref WebInstanceType]]] + - !Equals ["m6",!Select [0, !Split [ "g.", !Ref WebInstanceType]]] + - !Equals ["r6",!Select [0, !Split [ "g.", !Ref WebInstanceType]]] - Resources: WebInstanceProfile: Type: AWS::IAM::InstanceProfile @@ -272,9 +191,12 @@ Resources: - ec2.amazonaws.com Action: - sts:AssumeRole + ManagedPolicyArns: + - 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore' + - 'arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforAWSCodeDeployLimited' Path: / Policies: - - PolicyName: logs + - PolicyName: MoodleCustomWebInstancePolicy PolicyDocument: Version: 2012-10-17 Statement: @@ -286,10 +208,6 @@ Resources: - logs:DescribeLogStreams Resource: - arn:aws:logs:*:*:* - - PolicyName: CompleteLifecycleAction - PolicyDocument: - Version: 2012-10-17 - Statement: - Effect: Allow Action: - autoscaling:CompleteLifecycleAction @@ -297,20 +215,30 @@ Resources: - autoscaling:DescribeLifecycleHooks Resource: - arn:aws:autoscaling:*:*:* - - PolicyName: SecretManager - PolicyDocument: - Version: 2012-10-17 - Statement: - Effect: Allow Action: - secretsmanager:GetSecretValue Resource: - - !Ref MyRDSInstanceSecretArn + - !Ref RDSInstanceSecretArn + - Effect: Allow + Action: + - s3:* + Resource: + - !Ref CodeArtifactS3BucketArn + - !Join [ '', [ !Ref CodeArtifactS3BucketArn,'/*' ] ] + - Effect: Allow + Action: + - cloudformation:DescribeStackResources + - cloudformation:DescribeStackResource + Resource: + - '*' + Logs: Type: AWS::Logs::LogGroup DeletionPolicy: Retain Properties: RetentionInDays: 7 + WebAutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: @@ -318,8 +246,8 @@ Resources: HealthCheckGracePeriod: 120 HealthCheckType: ELB LaunchTemplate: - LaunchTemplateId: !Ref WebLaunchConfiguration - Version: !GetAtt WebLaunchConfiguration.LatestVersionNumber + LaunchTemplateId: !Ref WebLaunchTemplate + Version: !GetAtt WebLaunchTemplate.LatestVersionNumber MaxSize: !Ref WebAsgMax MinSize: !Ref WebAsgMin Tags: @@ -335,19 +263,7 @@ Resources: !If [ NumberOfSubnets2, [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ] ], - !If - [ NumberOfSubnets3, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ], - !If - [ NumberOfSubnets4, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ] ], - !If - [ NumberOfSubnets5, - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ] ], - [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ], !Select [ 3, !Ref Subnet ], !Select [ 4, !Ref Subnet ], !Select [ 5, !Ref Subnet ] ] - ] - ] - ] + [ !Select [ 0, !Ref Subnet ], !Select [ 1, !Ref Subnet ], !Select [ 2, !Ref Subnet ] ] ] ] CreationPolicy: @@ -363,6 +279,7 @@ Resources: Ref: WebAutoScalingGroup Cooldown: '300' ScalingAdjustment: 1 + CPUAlarmHigh: Type: AWS::CloudWatch::Alarm Properties: @@ -379,6 +296,7 @@ Resources: Value: !Ref WebAutoScalingGroup ComparisonOperator: GreaterThanThreshold MetricName: CPUUtilization + ScaleDownPolicy: Type: AWS::AutoScaling::ScalingPolicy Properties: @@ -387,6 +305,7 @@ Resources: Ref: WebAutoScalingGroup Cooldown: '300' ScalingAdjustment: -1 + CPUAlarmLow: Type: AWS::CloudWatch::Alarm Properties: @@ -404,45 +323,16 @@ Resources: ComparisonOperator: LessThanThreshold MetricName: CPUUtilization - WebLaunchConfiguration: + WebLaunchTemplate: Type: AWS::EC2::LaunchTemplate Metadata: AWS::CloudFormation::Init: configSets: deploy_webserver: - install_logs - - install_webserver - - install_moodle - install_codedeploy - - install_cacheclient - - install_opcache + - install_webserver - start_webserver - install_webserver: - files: - /tmp/create_site_conf.sh: - content: !Sub | - #!/bin/bash -xe - amazon-linux-extras install -y php7.3 postgresql9.6 - yum install -y awslogs httpd php-pgsql php-gd php-soap php-intl php-mbstring php-xmlrpc php-zip - sed -i 's/memory_limit =.*/memory_limit = 2048M/' /etc/php.ini - if [ ! -f /etc/httpd/conf.d/moodle.conf ]; then - touch /etc/httpd/conf.d/moodle.conf - echo 'ServerName 127.0.0.1:80' >> /etc/httpd/conf.d/moodle.conf - echo 'DocumentRoot /var/www/moodle/html' >> /etc/httpd/conf.d/moodle.conf - echo '' >> /etc/httpd/conf.d/moodle.conf - echo ' Options Indexes FollowSymLinks' >> /etc/httpd/conf.d/moodle.conf - echo ' AllowOverride All' >> /etc/httpd/conf.d/moodle.conf - echo ' Require all granted' >> /etc/httpd/conf.d/moodle.conf - echo '' >> /etc/httpd/conf.d/moodle.conf - fi - mode: 000500 - owner: root - group: root - commands: - create_site_conf: - command: ./create_site_conf.sh - cwd: /tmp - ignoreErrors: false install_logs: packages: yum: @@ -488,7 +378,6 @@ Resources: log_group_name = ${Logs} log_stream_name = {instance_id}/httpd datetime_format = %d/%b/%Y:%H:%M:%S - mode: '000444' owner: root group: root @@ -516,179 +405,6 @@ Resources: command: ./download_aws_ini.sh cwd: /tmp ignoreErrors: true - install_moodle: - files: - /tmp/config.php: - content: !Sub | - '2017-10-17', - 'region' => '${AWS::Region}', - ]); - - $secretName = '${MyRDSInstanceSecretArn}'; - - try { - $result = $client->getSecretValue([ - 'SecretId' => $secretName, - ]); - - } catch (AwsException $e) { - $error = $e->getAwsErrorCode(); - } - // Decrypts secret using the associated KMS CMK. - // Depending on whether the secret is a string or binary, one of these fields will be populated. - if (isset($result['SecretString'])) { - $secret = $result['SecretString']; - } - $CFG = new stdClass; - $CFG->dbtype = 'pgsql'; - $CFG->dblibrary = 'native'; - $CFG->dbhost = '${DatabaseClusterEndpointAddress}'; - $CFG->dbname = '${DatabaseName}'; - $CFG->dbuser = json_decode($secret)->{'username'}; - $CFG->dbpass = json_decode($secret)->{'password'}; - $CFG->prefix = 'mdl_'; - $CFG->lang = '${MoodleLocale}'; - $CFG->dboptions = array( - 'dbpersist' => false, - 'dbsocket' => false, - 'dbport' => '', - 'dbhandlesoptions' => false, - 'dbcollation' => 'utf8mb4_unicode_ci', - ); - // Hostname definition // - $hostname = '${DomainName}'; - if ($hostname == '') { - $hostwithprotocol = '${PublicAlbHostname}'; - } - else { - $hostwithprotocol = 'https://' . strtolower($hostname); - } - $CFG->wwwroot = strtolower($hostwithprotocol); - $CFG->sslproxy = (substr($hostwithprotocol,0,5)=='https' ? true : false); - // Moodledata location // - $CFG->dataroot = '/var/www/moodle/data'; - $CFG->tempdir = '/var/www/moodle/temp'; - $CFG->cachedir = '/var/www/moodle/cache'; - $CFG->localcachedir = '/var/www/moodle/local'; - $CFG->directorypermissions = 02777; - $CFG->admin = 'admin'; - // Configure Session Cache - $SessionEndpoint = '${ElastiCacheClusterEndpointAddress}'; - if ($SessionEndpoint != '') { - $CFG->dbsessions = false; - $CFG->session_handler_class = '\core\session\memcached'; - $CFG->session_memcached_save_path = $SessionEndpoint; - $CFG->session_memcached_prefix = 'memc.sess.key.'; - $CFG->session_memcached_acquire_lock_timeout = 120; - $CFG->session_memcached_lock_expire = 7100; - $CFG->session_memcached_lock_retry_sleep = 150; - } - //@error_reporting(E_ALL | E_STRICT); // NOT FOR PRODUCTION SERVERS! - //@ini_set('display_errors', '1'); // NOT FOR PRODUCTION SERVERS! - //$CFG->debug = (E_ALL | E_STRICT); // === DEBUG_DEVELOPER - NOT FOR PRODUCTION SERVERS! - //$CFG->debugdisplay = 1; - require_once(__DIR__ . '/lib/setup.php'); - // END OF CONFIG // - ?> - mode: '000755' - owner: root - group: root - /tmp/install_moodle.sh: - content: !Sub | - #!/bin/bash -xe - #mkdir /var/www/moodle/html - #mkdir /var/www/moodle/local - #chown -R root:apache /var/www/moodle/html - #chown -R apache:apache /var/www/moodle/local - cp /tmp/status.txt /var/www/moodle/html/status.txt - - mode: 000500 - owner: root - group: root - - /tmp/status.txt: - content: !Sub | - Health Check - - mode: '000644' - owner: root - group: root - commands: - install_moodle: - command: ./install_moodle.sh - cwd: /tmp - ignoreErrors: false - install_cacheclient: - packages: - yum: - gcc-c++: [] - files: - /tmp/install_cacheclient.sh: - content: - !Sub | - #!/bin/bash -xe - - #Install memcached and then remove it. Memcached is not actually needed. We install amazon-elasticache-cluster-client.so instead. However Moodle does not detect memcached is installed. Therefore, this tricks Moodle into thinking it is installed. - sudo yum install -y php-pecl-memcached - sudo yum remove -y php-pecl-memcached - - wget -P /tmp/ https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.3/latest-64bit - tar -xf '/tmp/latest-64bit' - cp '/tmp/amazon-elasticache-cluster-client.so' /usr/lib64/php/modules/ - if [ ! -f /etc/php.d/50-memcached.ini ]; then - touch /etc/php.d/50-memcached.ini - fi - echo 'extension=/usr/lib64/php/modules/amazon-elasticache-cluster-client.so;' >> /etc/php.d/50-memcached.ini - echo 'extension=igbinary.so;' >> /etc/php.d/50-memcached.ini - - #update Moodle source to use DYNAMIC_CLIENT_MODE so Moodle can detect changes to the elasticache cluster membership - #sed -i '/\$this->options\[Memcached::OPT_BUFFER_WRITES\] = \$bufferwrites;/a \ \ \ \ \ \ \ \ $this->options[Memcached::OPT_CLIENT_MODE] = Memcached::DYNAMIC_CLIENT_MODE;' /var/www/moodle/html/cache/stores/memcached/lib.php - - mode: 000500 - owner: root - group: root - commands: - install_cacheclient: - command: ./install_cacheclient.sh - cwd: /tmp - ignoreErrors: false - install_opcache: - packages: - yum: - php-opcache: [] - files: - /tmp/install_opcache.sh: - content: - !Sub | - #!/bin/bash -xe - # create hidden opcache directory locally & change owner to apache - if [ ! -d /var/www/.opcache ]; then - mkdir -p /var/www/.opcache - fi - #Ensure opcache is enabled and add settings recomended by moodle at https://docs.moodle.org/34/en/OPcache - sed -i 's/;opcache.file_cache=.*/opcache.file_cache=\/var\/www\/.opcache/' /etc/php.d/10-opcache.ini - sed -i 's/opcache.memory_consumption=.*/opcache.memory_consumption=512/' /etc/php.d/10-opcache.ini - sed -i 's/opcache.max_accelerated_files=.*/opcache.max_accelerated_files=8000/' /etc/php.d/10-opcache.ini - sed -i 's/;opcache.revalidate_freq=.*/opcache.revalidate_freq=300/' /etc/php.d/10-opcache.ini - sed -i 's/;opcache.use_cwd=.*/opcache.use_cwd=1/' /etc/php.d/10-opcache.ini - sed -i 's/;opcache.validate_timestamps=.*/opcache.validate_timestamps=1/' /etc/php.d/10-opcache.ini - sed -i 's/;opcache.save_comments=.*/opcache.save_comments=1/' /etc/php.d/10-opcache.ini - sed -i 's/;opcache.enable_file_override=.*/opcache.enable_file_override=60/' /etc/php.d/10-opcache.ini - mode: 000500 - owner: root - group: root - commands: - install_opcache: - command: ./install_opcache.sh - cwd: /tmp - ignoreErrors: false install_codedeploy: packages: yum: @@ -698,12 +414,10 @@ Resources: content: !Sub | #!/bin/bash -xe - cd /home/ec2-user wget https://aws-codedeploy-${AWS::Region}.s3.${AWS::Region}.amazonaws.com/latest/install chmod +x ./install ./install auto - mode: 000500 owner: root group: root @@ -712,6 +426,44 @@ Resources: command: ./install_codedeploy.sh cwd: /tmp ignoreErrors: false + install_webserver: + files: + /tmp/status.txt: + content: !Sub | + Health Check + mode: '000644' + owner: root + group: root + /tmp/create_site_conf.sh: + content: !Sub | + #!/bin/bash -xe + amazon-linux-extras install -y php8.0 + amazon-linux-extras enable php8.0 + + yum install -y httpd gcc-c++ + yum install -y php-gd php-soap php-intl php-mbstring php-xml php-zip php-opcache php-sodium php-fpm + + sed -i 's/memory_limit =.*/memory_limit = 4096M/' /etc/php.ini + if [ ! -f /etc/httpd/conf.d/moodle.conf ]; then + touch /etc/httpd/conf.d/moodle.conf + echo 'ServerName 127.0.0.1:80' >> /etc/httpd/conf.d/moodle.conf + echo 'DocumentRoot /var/www/moodle/html' >> /etc/httpd/conf.d/moodle.conf + echo '' >> /etc/httpd/conf.d/moodle.conf + echo ' Options Indexes FollowSymLinks' >> /etc/httpd/conf.d/moodle.conf + echo ' AllowOverride All' >> /etc/httpd/conf.d/moodle.conf + echo ' Require all granted' >> /etc/httpd/conf.d/moodle.conf + echo '' >> /etc/httpd/conf.d/moodle.conf + fi + + cp /tmp/status.txt /var/www/moodle/html/status.txt + mode: 000500 + owner: root + group: root + commands: + create_site_conf: + command: ./create_site_conf.sh + cwd: /tmp + ignoreErrors: false start_webserver: services: sysvinit: @@ -720,21 +472,29 @@ Resources: ensureRunning: true Properties: LaunchTemplateData: + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + DeleteOnTermination: true + VolumeSize: 10 + VolumeType: gp3 IamInstanceProfile: Arn: !GetAtt WebInstanceProfile.Arn - ImageId: !Ref LatestAmiId + ImageId: !If [UsingGraviton2Ami, !Ref LatestArmAmiId, !Ref LatestAmiId] InstanceType: !Ref WebInstanceType Monitoring: Enabled: true KeyName: !Ref EC2KeyName SecurityGroupIds: - !Ref WebSecurityGroup - CreditSpecification: - CpuCredits: standard UserData: Fn::Base64: !Sub | #!/bin/bash -xe + sudo systemctl enable amazon-ssm-agent + sudo systemctl start amazon-ssm-agent + sudo systemctl status amazon-ssm-agent + yum update -y #Create directory structure @@ -743,17 +503,11 @@ Resources: mkdir -p /var/www/moodle/cache mkdir -p /var/www/moodle/temp mkdir -p /var/www/moodle/local - - #Mount shared storage - mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/data /var/www/moodle/data - mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/cache /var/www/moodle/cache - mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${ElasticFileSystem}.efs.${AWS::Region}.amazonaws.com:/temp /var/www/moodle/temp - + #Run CloudFormation Init Scripts - /opt/aws/bin/cfn-init --configsets deploy_webserver --verbose --stack ${AWS::StackName} --resource WebLaunchConfiguration --region ${AWS::Region} + /opt/aws/bin/cfn-init --configsets deploy_webserver --verbose --stack ${AWS::StackName} --resource WebLaunchTemplate --region ${AWS::Region} /opt/aws/bin/cfn-signal --exit-code $? --stack ${AWS::StackName} --resource WebAutoScalingGroup --region ${AWS::Region} Outputs: - - Opcachestatus: - Value: !Join [ '', [ !Ref PublicAlbHostname, '/opcache-instanceid.php' ] ] + WebAutoScalingGroupName: + Value: !Ref WebAutoScalingGroup diff --git a/templates/05-codepipeline.yaml b/templates/05-codepipeline.yaml new file mode 100644 index 0000000..22f3af4 --- /dev/null +++ b/templates/05-codepipeline.yaml @@ -0,0 +1,176 @@ +Parameters: + CodeCommitRepoName: + Type: "String" + Default: "Moodle Repo" + Description: Moodle CodeCommit repo name + CodeCommitRepoArn: + Type: "String" + Description: Moodle CodeCommit repo Arn + BranchName: + Type: "String" + Default: "main" + Description: repository's branch name + AppAutoScalingGroupName: + Type: "String" + Description: Name of Autoscaling group for Moodle Web app. + MoodleAppTargetGroupName: + Type: "String" + Description: Name of Target group attached to load balancer for web application servers. + CodeArtifactS3BucketName: + Type: "String" + Description: Code Artifact S3 Bucket Name + CodeArtifactS3BucketArn: + Type: "String" + Description: Code Artifact S3 Bucket ARN + ProjectName: + AllowedPattern: ^([a-zA-Z0-9]*)$ + Default: App + Description: The Moodle Project Name + Type: String + +Resources: + # AWS CodePipeline to deploy source code from CodeCommit repo to autoscaling groups for Moodle Web apps. + + # This role is assumed by the CodePipeline service itself. + MoodleCodeDeployServiceRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - codedeploy.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - 'arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole' + Path: / + Policies: + - PolicyName: MoodleCodeDeployCustomPolicy + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - iam:PassRole + - ec2:CreateTags + - ec2:RunInstances + Resource: + - '*' + + MoodleDeployApp: + Type: 'AWS::CodeDeploy::Application' + Properties: + ApplicationName: !Sub '${ProjectName}-DeployApp' + + MoodleDeploymentGroup: + Type: 'AWS::CodeDeploy::DeploymentGroup' + DependsOn: MoodleDeployApp + Properties: + ApplicationName: !Ref MoodleDeployApp + DeploymentGroupName: !Sub '${ProjectName}-AppDG' + ServiceRoleArn: !GetAtt MoodleCodeDeployServiceRole.Arn + DeploymentStyle: + DeploymentOption: BLUE_GREEN #IN_PLACE + DeploymentOption: WITH_TRAFFIC_CONTROL #WITHOUT_TRAFFIC_CONTROL + AutoScalingGroups: + - !Ref AppAutoScalingGroupName + LoadBalancerInfo: + TargetGroupInfoList: + - Name: !Ref MoodleAppTargetGroupName + + MoodleWebAppASGNameParam: + Type: AWS::SSM::Parameter + Properties: + Name: !Sub '/Moodle/${ProjectName}/WebAppASGName' + Type: String + Value: !Ref AppAutoScalingGroupName + Description: SSM Parameter for Moodle WebApp Auto scaling group + + #This role is for Moodle pipeline to perform ci-cd tasks. + # !TODO to limit this role from full access. + MoodlePipelineRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - codepipeline.amazonaws.com + Action: sts:AssumeRole + ManagedPolicyArns: + - 'arn:aws:iam::aws:policy/AWSCodePipeline_FullAccess' + Path: / + Policies: + - PolicyName: MoodlePipelineCustomPolicy + PolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Action: + - codedeploy:* + Resource: + - arn:aws:codedeploy:*:*:application:* + - arn:aws:codedeploy:*:*:deploymentgroup:*/* + - arn:aws:codedeploy:*:*:instance:* + - arn:aws:codedeploy:*:*:deploymentconfig:* + - Effect: Allow + Action: + - s3:* + Resource: + - !Ref CodeArtifactS3BucketArn + - !Join [ '', [ !Ref CodeArtifactS3BucketArn,'/*' ] ] + - Effect: Allow + Action: + - codecommit:* + Resource: + - !Ref CodeCommitRepoArn + + # The CI/CD pipeline stitching the full mechanism together + MoodleAppPipeline: + Type: AWS::CodePipeline::Pipeline + Properties: + Name: !Sub '${ProjectName}-Pipeline' + RoleArn: !GetAtt MoodlePipelineRole.Arn + Stages: + - Actions: + # Initiate Pipeline from CodeCommit + - ActionTypeId: + Version: '1' + Provider: CodeCommit + Category: Source + Owner: AWS + OutputArtifacts: + - Name: source + InputArtifacts: [] + Name: source + Configuration: + RepositoryName: !Ref CodeCommitRepoName + BranchName: !Ref BranchName + PollForSourceChanges: 'false' + RunOrder: 1 + Namespace: SourceVars + Name: Initiate + - Actions: + # Creating CodeDeploy for Deploying Moodle codebase from CodeCommit repo + - ActionTypeId: + Category: Deploy + Owner: AWS + Provider: CodeDeploy + Version: "1" + InputArtifacts: + - Name: source + Name: DeployOnASG + Configuration: + ApplicationName: !Ref MoodleDeployApp + DeploymentGroupName: !Ref MoodleDeploymentGroup + RunOrder: 1 + Name: Deploy + ArtifactStore: + Location: !Ref CodeArtifactS3BucketName + Type: S3 + \ No newline at end of file diff --git a/templates/05-route53.yaml b/templates/05-route53.yaml index bad6837..ff5db23 100644 --- a/templates/05-route53.yaml +++ b/templates/05-route53.yaml @@ -20,7 +20,7 @@ Metadata: DnsHostId: default: DNS Host Id DomainName: - default: Site Domain + default: Domain Name of the Moodle site HostedZoneName: default: Hosted Zone Name @@ -28,11 +28,11 @@ Parameters: DnsEndpoint: AllowedPattern: ^(?!http)(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ - Description: The DNS endpoint - CloudFront DNS if using CloudFront else Public ELB DNS name. + Description: The DNS endpoint - CloudFront DNS if using CloudFront else Public ALB DNS name. Type: String DnsHostId: - AllowedPattern: ^[A-Z0-9]{14}$ - Description: The DNS host zone id - 'Z2FDTNDATAQYW2' if using CloudFront else Public ELB host zone id. + AllowedPattern: ^[A-Z0-9]+$ + Description: The DNS host zone id - 'Z2FDTNDATAQYW2' if using CloudFront else Public ALB host zone id. Type: String HostedZoneName: AllowedPattern: ^(?!http)(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$