--- AWSTemplateFormatVersion: '2010-09-09' Description: This template creates a VPC infrastructure for Simphony Application deployment on AWS. This template creates VPC, 2 Private Subnets, All required Security Groups, VPC End points for S3 bucket and Monitoring, Data lifecycle Manager for instance backup, Instance Profile for S3 and monitoring access. Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Network Configuration Parameters: - UserSpecifiedVPCId - Subnet1ID - Subnet2ID - Label: default: AWS Quick Start configuration Parameters: - QSS3BucketName - QSS3BucketRegion - QSS3KeyPrefix - Label: default: Simphony Environment configuration Parameters: - EnvironmentSize - KeyPairName - StackPrefix - ProxyServer - PuppetServerFQDN - Label: default: Backup configuration Parameters: - DLMCrossRegionCopy ParameterLabels: UserSpecifiedVPCId: default: VPC ID Subnet1ID: default: First Private Subnet ID Subnet2ID: default: Second Private Subnet ID DLMCrossRegionCopy: default: DLM Cross Region Name QSS3BucketName: default: Quick Start S3 bucket QSS3BucketRegion: default: Quick Start S3 bucket Region QSS3KeyPrefix: default: Quick Start S3 key prefix EnvironmentSize: default: Environment Size KeyPairName: default: Key Pair Name StackPrefix: default: Stack Name Prefix ProxyServer: default: Proxy Server URL PuppetServerFQDN: default: Puppet Server FQDN Parameters: UserSpecifiedVPCId: Type: 'AWS::EC2::VPC::Id' Description: The VPC ID where to deploy Simphony in. Subnet1ID: Type: 'AWS::EC2::Subnet::Id' Description: The First Private Subnet ID. Subnet2ID: Type: 'AWS::EC2::Subnet::Id' Description: The Second Private Subnet ID. Select Subnet ID with different AZ that you selected from the First Private Subnet ID. DLMCrossRegionCopy: Description: The Cross Region to copy the EC2 instance snapshots for backup. Type: String Default: us-east-2 QSS3BucketName: AllowedPattern: "^[0-9a-zA-Z]+([0-9a-zA-Z-]*[0-9a-zA-Z])*$" ConstraintDescription: "Quick Start bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-)." Default: aws-quickstart Description: "S3 bucket name for the Quick Start assets. Quick Start bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-)." Type: String QSS3BucketRegion: Default: 'us-east-1' Description: "AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted. If you use your own bucket, specify that value." Type: String QSS3KeyPrefix: AllowedPattern: "^[0-9a-zA-Z-/]*$" ConstraintDescription: "Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/)." Default: quickstart-skillnet-simphony/ Description: "S3 key prefix for the Quick Start assets. Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/)." Type: String EnvironmentSize: Type: String Default: Small AllowedValues: - Small - Medium - Large Description: The Simphony Environment Size (S,M,L). KeyPairName: Description: EC2 key pair name. Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: must be the name of an existing EC2 KeyPair. StackPrefix: Type: String MinLength: "1" MaxLength: "20" AllowedPattern: "[a-zA-Z0-9]*" Description: The prefix name to all the associated resources in the stack. Default: Simphony ProxyServer: Type: String Default: "http://192.168.50.197:3128" Description: The proxy server URL to have internet access. PuppetServerFQDN: Type: String Default: "puppet.skillnetaws.com" Description: Assign Fully Qualified Domain Name for Puppet Server. Conditions: UsingDefaultBucket: !Equals [!Ref QSS3BucketName, 'aws-quickstart'] Resources: LandingZone: Type: "AWS::CloudFormation::Stack" Properties: TemplateURL: !Sub - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/simphony-landingzone.template.yaml - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: UserSpecifiedVPCId: !Ref UserSpecifiedVPCId Subnet1ID: !Ref Subnet1ID Subnet2ID: !Ref Subnet2ID DLMCrossRegionCopy: !Ref DLMCrossRegionCopy PuppetServer: Type: "AWS::CloudFormation::Stack" Properties: TemplateURL: !Sub - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/simphony-puppet.template.yaml - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: EnvironmentSize: !Ref EnvironmentSize Subnet: Fn::GetAtt: - LandingZone - Outputs.SimphonySubnet1ID SecurityGroups: Fn::GetAtt: - LandingZone - Outputs.SimphonySecurityGroup KeyPairName: !Ref KeyPairName StackPrefix: !Ref StackPrefix ProxyServer: !Ref ProxyServer IamInstanceProfile: Fn::GetAtt: - LandingZone - Outputs.SimphonyInstanceProfile PuppetServerFQDN: !Ref PuppetServerFQDN QSS3BucketName: !Ref QSS3BucketName QSS3KeyPrefix: !Ref QSS3KeyPrefix OracleDB: Type: "AWS::CloudFormation::Stack" Properties: TemplateURL: !Sub - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/simphony-oracledb.template.yaml - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: EnvironmentSize: !Ref EnvironmentSize VpcId: Fn::GetAtt: - LandingZone - Outputs.SimphonyVpcID Subnets: !Join [ ",", [!GetAtt LandingZone.Outputs.SimphonySubnet1ID, !GetAtt LandingZone.Outputs.SimphonySubnet2ID ]] SecurityGroups: Fn::GetAtt: - LandingZone - Outputs.SimphonySecurityGroup KeyPairName: !Ref KeyPairName StackPrefix: !Ref StackPrefix PuppetServerIP: Fn::GetAtt: - PuppetServer - Outputs.PupperServerIP ProxyServer: !Ref ProxyServer IamInstanceProfile: Fn::GetAtt: - LandingZone - Outputs.SimphonyInstanceProfile ApplicationServer: Type: "AWS::CloudFormation::Stack" Properties: TemplateURL: !Sub - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/simphony-appserver.template.yaml - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: EnvironmentSize: !Ref EnvironmentSize VpcId: Fn::GetAtt: - LandingZone - Outputs.SimphonyVpcID Subnets: !Join [ ",", [!GetAtt LandingZone.Outputs.SimphonySubnet1ID, !GetAtt LandingZone.Outputs.SimphonySubnet2ID ]] SecurityGroups: Fn::GetAtt: - LandingZone - Outputs.SimphonySecurityGroup KeyPairName: !Ref KeyPairName StackPrefix: !Ref StackPrefix PuppetServerIP: Fn::GetAtt: - PuppetServer - Outputs.PupperServerIP PuppetServerFQDN: !Ref PuppetServerFQDN ProxyServer: !Ref ProxyServer QSS3BucketName: !Ref QSS3BucketName QSS3KeyPrefix: !Ref QSS3KeyPrefix IamInstanceProfile: Fn::GetAtt: - LandingZone - Outputs.SimphonyInstanceProfile