From 9a84820287ea4a877309c5d5066ef7226e9fe45f Mon Sep 17 00:00:00 2001
From: mwshriya <58791311+mwshriya@users.noreply.github.com>
Date: Thu, 12 Sep 2024 13:05:42 -0400
Subject: [PATCH] R2024b release
---
README.md | 2 +-
releases/R2021b/README.md | 250 ------------
.../mps-aws-refarch-existing-vpc-cf.yml | 311 ---------------
.../templates/mps-aws-refarch-new-vpc-cf.yml | 247 ------------
releases/{R2021b => R2024b}/LICENSE.md | 2 +-
releases/R2024b/README.md | 150 +++++++
.../images/mps_ref_arch_aws_diagram.png | Bin
.../mps-aws-refarch-existing-vpc-cf.yml | 367 ++++++++++++++++++
.../templates/mps-aws-refarch-new-vpc-cf.yml | 280 +++++++++++++
.../templates/templateURL.txt | 4 +-
10 files changed, 801 insertions(+), 812 deletions(-)
delete mode 100644 releases/R2021b/README.md
delete mode 100644 releases/R2021b/templates/mps-aws-refarch-existing-vpc-cf.yml
delete mode 100644 releases/R2021b/templates/mps-aws-refarch-new-vpc-cf.yml
rename releases/{R2021b => R2024b}/LICENSE.md (98%)
create mode 100644 releases/R2024b/README.md
rename releases/{R2021b => R2024b}/images/mps_ref_arch_aws_diagram.png (100%)
create mode 100644 releases/R2024b/templates/mps-aws-refarch-existing-vpc-cf.yml
create mode 100644 releases/R2024b/templates/mps-aws-refarch-new-vpc-cf.yml
rename releases/{R2021b => R2024b}/templates/templateURL.txt (56%)
diff --git a/README.md b/README.md
index 52e8104..34c02ab 100644
--- a/README.md
+++ b/README.md
@@ -36,12 +36,12 @@ The default MATLAB Production Server deployment template uses the Network Licens
To deploy the reference architecture, select your MATLAB Production Server release from the table and follow the instructions to deploy the server using the provided template. A deployment of MATLAB Production Server supports MATLAB Runtime versions up to six releases back.
| Release | Supported MATLAB Runtime Versions |
| ------- | --------------------------------- |
+| [R2024b](releases/R2024b/README.md) | R2024b, R2024a, R2023b, R2023a, R2022b, R2022a |
| [R2024a](releases/R2024a/README.md) | R2024a, R2023b, R2023a, R2022b, R2022a, R2021b |
| [R2023b](releases/R2023b/README.md) | R2023b, R2023a, R2022b, R2022a, R2021b, R2021a |
| [R2023a](releases/R2023a/README.md) | R2023a, R2022b, R2022a, R2021b, R2021a, R2020b |
| [R2022b](releases/R2022b/README.md) | R2022b, R2022a, R2021b, R2021a, R2020b, R2020a |
| [R2022a](releases/R2022a/README.md) | R2022a, R2021b, R2021a, R2020b, R2020a, R2019b |
-| [R2021b](releases/R2021b/README.md) | R2021b, R2021a, R2020b, R2020a, R2019b, R2019a |
> **Note**: MathWorks provides templates for only the six most recent releases of MATLAB Production Server. Earlier templates are removed and are no longer supported.
# Architecture and Resources
Deploying this reference architecture creates several resources in your
diff --git a/releases/R2021b/README.md b/releases/R2021b/README.md
deleted file mode 100644
index 898f3ac..0000000
--- a/releases/R2021b/README.md
+++ /dev/null
@@ -1,250 +0,0 @@
-# MATLAB Production Server on Amazon Web Services - R2021b
-
-# Requirements
-
-Before starting, you need the following:
-
-- A MATLAB® Production Server™ license that meets the following conditions:
- - Current on Software Maintenance Service (SMS).
- - Linked to a MathWorks Account.
- - Concurrent license type. To check your license type, view your MathWorks Account.
- - Configured to use a network license manager on the virtual network. By default, the deployment of MATLAB Production Server includes a network license manager, but you can also use an existing license manager. In either case, activate or move the license after deployment. For details, see [Configure MATLAB Production Server Licensing on the Cloud](https://www.mathworks.com/help/licensingoncloud/matlab-production-server-on-the-cloud.html).
-- An Amazon Web Services™ (AWS) account.
-- A Key Pair for your AWS account in the US East (N. Virginia), EU (Ireland) or Asia Pacific (Tokyo) region. For more information, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
-
-# Costs
-You are responsible for the cost of the AWS services used when you create cloud resources using this guide. Resource settings, such as instance type, will affect the cost of deployment. For cost estimates, see the pricing pages for each AWS service you will be using. Prices are subject to change.
-
-
-# Introduction
-The following guide will help you automate the process of running MATLAB
-Production Server on the Amazon Web Services (AWS) Cloud. The automation is
-accomplished using an AWS CloudFormation template. The template is a JSON
-file that defines the resources required to deploy and manage MATLAB Production
-Server on AWS. Once deployed, you can manage the server using the
-MATLAB Production Server dashboard—a web-based interface to
-configure and manage server instances on the cloud. For more information, see [Manage MATLAB Production Server Using the Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html).
-For information about the architecture of this solution, see [Architecture and Resources](#architecture-and-resources). For information about AWS templates, see [AWS CloudFormation Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html).
-
-The default MATLAB Production Server deployment template uses the Network License Manager for MATLAB reference architecture to manage MATLAB Production Server licenses. The template for using an exisitng VPC for the deployment provides an option to either deploy the Network License Manager or use your own license server. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws).
-
-# Prepare Your AWS Account
-1. If you do not have an AWS account, create one at https://aws.amazon.com by following the on-screen instructions.
-2. Use the regions selector in the navigation bar to choose **US-EAST (N. Virginia)**, **EU (Ireland)** or **Asia Pacific (Tokyo)**, as the region where you want to deploy MATLAB Production Server.
-3. Create a [key pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) in that region. The key pair is necessary as it is the only way to connect to the instance as an administrator.
-4. If necessary, [request a service limit increase](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-) for the Amazon EC2 instance type or VPCs. You might need to do this if you already have existing deployments that use that instance type or you think you might exceed the [default limit](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) with this deployment.
-
-# Deployment Steps
-
-## Step 1. Launch Template
-Click the **Launch Stack** button to deploy resources on AWS. This will open the AWS Management Console in your web browser.
-
-| Release | Windows Server 2019 or Ubuntu 18.04 VM |
-|---------------|------------------------|
-| MATLAB R2021b |
|
-
-For other releases, see [How do I launch a template that uses a previous MATLAB release?](#how-do-i-launch-a-template-that-uses-a-previous-matlab-release)
-
Note: Creating a stack on AWS can take at least 20 minutes.
-
-## Step 2. Configure Stack
-1. Provide values for parameters in the **Create Stack** page:
-
- | Parameter Name | Value |
- |----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
- | **Stack name** | Choose a name for the stack. After the deployment finishes, this name is displayed in the AWS console. *Example*: Boston
|
- ||**Server**|
- | **Number of Server VMs** | Choose the number of AWS instances to start for the server. *Example*: 6
If you have a standard 24 worker MATLAB Production Server license and select `m5.xlarge` (4 cores) as the **Number of server VMs**, you need 6 worker nodes to fully utilize the workers in your license.
You can always under provision the number instances, in which case you may end up using fewer workers than you are licensed for.
|
- | **Server VM Type** | Choose the AWS instance type to use for the server instances. All AWS instance types are supported. For more information, see [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/). *Example*: m5.xlarge
|
- | **Server VM Operating System** | Choose between Windows (Windows Server) and Linux(Ubuntu) to use for the server instances. |
- | **Create Redis ElastiCache** | Choose whether you want to create a Redis ElastiCache service. Creating this service will allow you to use the persistence functionality of the server. Persistence provides a mechanism to cache data between calls to MATLAB code running on a server instance. |
- | **Deploy License Server** | Specify whether you want to deploy the Network License Manager for MATLAB. This parameter is available only if you use the deployment template for an existing VPC. You can deploy a license server only if your solution uses public IP adresses. If your solution uses private IP addresses, you must separately deploy a license server in a public subnet.
|
- ||**Dashboard Login**|
- | **Username for MATLAB Production Server Dashboard** | Specify the administrator user name to log in to the MATLAB Production Server dashboard. |
- | **Password for MATLAB Production Server and License Server** | Enter the password to use for logging in to MATLAB Production Server dashboard and the Network License Manager for MATLAB dashboard. |
- | **Confirm Password MATLAB Production Server and License Server** | Reenter the password to log in to the MATLAB Production Server dashboard and the Network License Manager for MATLAB dashboard. |
- | |**Network**|
- | **Name of Existing Key Pair** | Choose the name of an existing EC2 Key Pair to allow access to all the VMs in the stack. For information about creating an Amazon EC2 key pair, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair). *Example*: boston-keypair
|
- | **Allow Connections from IP Address** | Specify the IP address range that is allowed to connect to the dashboard that manages the server. The format for this field is IP Address/Mask.
Example:
10.0.0.1/32 - This is the public IP address which can be found by searching for "what is my ip address" on the web. The mask determines the number of IP addresses to include.
- A mask of 32 is a single IP address.
- Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP addresses.
- You may need to contact your IT administrator to determine which address is appropriate.
|
- | **Make Solution Available over Internet** | Choose 'Yes' if you want your solution to use public IP addresses. |
- | **ARN of SSL Certificate** | Provide the Amazon Resource Name (ARN) of an existing certificate in the AWS Certificate Manager to enable secure HTTPS communication to the HTTPS server endpoint. For information on creating and uploading a self-signed certificate, see [Create and Sign an X509 Certificate](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html) and [Import SSL Certificate]().*Example*: arn:aws:acm:us-east-1:12345:certificate/123456789012
|
-
-
- >**Note**: Make sure you select US East (N.Virginia), EU (Ireland) or Asia Pacific (Tokyo) as your region from the navigation panel on top. Currently, US East, EU (Ireland), and Asia Pacific (Tokyo) are the only supported regions.
-
-2. Click **Next** to continue configuring stack options. Configuring stack options is optional. You can leave all fields blank or enter values based on your requirement. Click **Next** to review your stack details and stack options.
-
-4. Review or edit your stack details and any stack options that you set. You must select the acknowledgement to create IAM resources. Otherwise, the deployment produces a `Requires capabilities : [CAPABILITY_IAM]` error and fails to create resources.
-
- When you are satisfied with your stack configuration, click **Create stack** to start the creation of AWS resources for your server environment. Resource creation can take up to 20 minutes. After resource creation, it can take up to 15 minutes for the resources to be active.
-
-## Step 3. Upload License File
-1. Clicking **Create stack** takes you to the *Stack Detail* page for your stack. Wait for the status to reach **CREATE\_COMPLETE**.
-1. In the Stack Detail for your stack, click **Outputs**.
-1. Look for the key named `MatlabProductionServerLicenseServer` and click the corresponding URL listed under value. Doing so takes you to Network License Manager for MATLAB dashboard log in page.
-1. The user name for the Network License Manager for MATLAB dashboard is **manager**. For the password, enter the password that you entered in the **Network License Manager for MATLAB** section while creating the stack in [Step 2](#step-2-configure-the-stack).
-1. Follow the instructions to upload your MATLAB Production Server license.
-
-
-## Step 4. Connect and Log In to MATLAB Production Server Dashboard
-> **Note**: The Internet Explorer web browser is not supported for interacting with the dashboard.
-
-1. In the Stack Detail for your stack, expand the **Outputs** section.
-1. Look for the key named `MatlabProductionServerDashboardURL` and click the corresponding URL listed under value. This is the HTTPS endpoint to the MATLAB Production Server dashboard.
-1. Use the administrator user name and password that you specified in the dashboard login step of the deployment process to log in. For more information on how to use the dashboard, see [Manage MATLAB Production Server using Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html).
-
-You are now ready to use MATLAB Production Server on AWS.
-
-To run applications on MATLAB Production Server, you need to create applications using MATLAB Compiler SDK. For more information, see [Deployable Archive Creation](https://www.mathworks.com/help/mps/deployable-archive-creation.html) in the MATLAB Production Server product documentation.
-
-# Additional Information
-
-## Delete Your Stack
-
-Once you have finished using your stack, it is recommended that you delete all resources to avoid incurring further cost.
-
-If you are using an existing license server, and have added the security group of the server VMs to the security group of the license server, you must delete the inbound rules before you delete the stack.
-1. In the AWS management console, select the stack that you deployed.
-1. In the stack detail for your stack, click **Resources**.
-1. Look for the **Logical ID** named `SecurityGroup` and click the corresponding URL listed under **Physical ID**. This will take you to the security group details.
-1. Click the **Inbound Rules** tab, then click **Edit Inbound Rules**.
-1. Click **Delete Rule** for the rules that have the tag `matlab-production-server-cloud-stack-elb-1-sg` as their **Source**.
-1. Click **Save Rules**.
-
-To delete the stack, do the following:
-1. Log in to the AWS Console.
-3. Go to the AWS Cloud Formation page and select the stack that you created.
-3. Click the **Actions** button and click **Delete Stack** from the menu that appears.
-
-If you do not want to delete the entire deployment but want to minimize the cost, you can bring the number of instances in the Auto Scaling Group down to 0 and then scale it back up when the need arises.
-
-## Get License Server MAC Address
-The Network License Manager for MATLAB reference architecture manages the MATLAB Production Server license file. The deployment templates for the MATLAB Production Server reference architecture provide an option to deploy the license manager. You can also use an existing license manager that is located in the same VPC and the security group of the MATLAB Production Server instances. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws).
-
->**NOTE**: For a new license manager deployed with MATLAB Production Server, the license manager MAC address is available only after the deployment to the cloud is complete. For information on deploying the solution, see [Deployment Steps](/README.md#deployment-steps).
-
-To get the MAC address of the license manager:
-1. Log in to the Network License Manager for MATLAB dashboard. For a license manager deployed with the MATLAB Production Server deployment, use the following credentials:
-Username: **manager**
-Password: Enter the password that you entered during the deployment process.
-1. Click **Administration** > **License**.
-1. Copy the license server MAC address displayed at the top.
-# Architecture and Resources
-Deploying this reference architecture will create several resources in your
-resource group.
-
-
-
-
-*Architecture on AWS*
-
-### Resources
-
-| Resource Type | Number of Resources | Description |
-|----------------------------------------------------------------------------|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| AWS EC2 Instance | 2 | - Virtual machine (VM) that hosts the MATLAB Production Server dashboard. Use the dashboard to:
- Get HTTPS endpoint to make requests
- Upload applications (CTF files) to the server
- Manage server configurations
- Manage the HTTPS certificate
For more information, see [MATLAB Production Server Using the Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html).
- VM that hosts the Network License Manager for MATLAB. For more information, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws).
|
-| Auto Scaling Group | 1 | Manages the number of identical VMs to be deployed. Each VM runs an instance of MATLAB Production Server which in turn runs multiple MATLAB workers. |
-| Load Balancer | 2 | Provides routing and load balancing service to MATLAB Production Server instances. The MATLAB Production Server dashboard retrieves the HTTPS endpoint for making requests to the server from the load balancer resource. |
-| S3 Bucket | 1 | S3 storage bucket created during the creation of the stack where applications deployed to the reference architecture are stored. |
-| Virtual Private Cluster (VPC) | 1 | Enables resources to communicate with each other. |
-| Redis ElastiCache | 1 | Enables caching of data between calls to MATLAB code running on a server instance. |
-| CloudWatch | 1 | Enables viewing of logs. |
-
-# FAQ
-## How do I use an existing VPC to deploy MATLAB Production Server?
-
-Use the following templates to launch the reference architecture within an existing VPC and subnet. The templates provide an option to deploy the Network License Manager for MATLAB to manage MATLAB Production Server licenses. The license manager must be in the same VPC and security group as MATLAB Production Server.
-
-| Release | Windows Server 2019 or Ubuntu 18.04 VM |
-|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| R2021b |
|
-
-In addition to the parameters specified in the section [Configure the Stack](#step-2-configure-the-stack), you will need to specify the following parameters in the template to use your existing VPC.
-
-| Parameter | Value |
-|----------------------------------|--------------------------------------------------------------------------------|
-| Existing VPC ID | ID of your existing VPC. |
-| IP address range of existing VPC | IP address range from the existing VPC. To find the IP address range: - Log in to the AWS Console.
- Navigate to the VPC dashboard and select your VPC.
- Click the **CIDR blocks** tab.
- The **IPv4 CIDR Blocks** gives the IP address range.
|
-| Subnet 1 ID | ID of an existing subnet that will host the dashboard and other resources. |
-| Subnet 2 ID | ID of an existing subnet that will host the application load balancer. |
-
-- If Subnet 1 and Subnet 2 are public, then you must connect the EC2 VPC endpoint and the AutoScaling VPC endpoint to the VPC.
-- If Subnet 1 and Subnet 2 are private, then you must either deploy a NAT gateway in the VPC, or connect all of the following endpoints to the VPC:
- - EC2 VPC endpoint
- - AutoScaling VPC endpoint
- - S3 VPC endpoint
- - CloudFormation endpoint
-
-For more information about creating endpoints, see [AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint).
-
-You will also need to open the following ports in your VPC:
-
-| Port | Description |
-|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `443` | Required for communicating with the dashboard and the MATLAB execution endpoint. |
-| `8000`, `8002`, `9910` | Required for communication between the dashboard and workers within the VPC. These ports do not need to be open to the internet. |
-| `27000`, `50115` | Required for communication between the network license manager and the workers. |
-| `22`, `3389` | Required for Remote Desktop functionality. This can be used for troubleshooting and debugging. |
-
-### How to use an existing license server in an existing VPC?
-If you want to use an exisiting license server, select `No` for the *Deploy License Server* step of the deployment.
-
-To use an existing license server, you must add the security group of the server VMs to the security group of the license server.
-1. In the AWS management console, select the stack that you deployed.
-1. In the stack detail for your stack, click **Resources**.
-1. Look for the **Logical ID** named ```SecurityGroup``` and click the corresponding URL listed under **Physical ID**. This will take you to the security group details.
-1. Click the **Inbound Rules** tab, then click **Edit Inbound Rules**.
-1. Click **Add Rule**.
-1. In the **Type** dropdown, select ```All TCP```.
-1. In the **Source**, search and add the ```MatlabProductionServerCloudStackElb1Sg``` security group.
-1. Click **Save Rules**.
-
-You must also add the private IP address of the license server to the `License Server` property in the **Settings** tab of the dashboard.
-Find the IP address of the license server from the AWS management console.
-1. In the AWS management console, navigate to the EC2 dashboard.
-1. Select the license server instance.
-1. In the instance details, copy the value of **Private IPs**. For example, 172.30.1.126
-1. Add the private IP to the `License Server` property. For example, ` 27000@172.30.1.126`.
-
-## How do I launch a template that uses a previous MATLAB release?
-| Release | Windows Server VM | Ubuntu VM |
-|---------------|------------------------|-----------------|
-| MATLAB R2020a |
|
|
-| MATLAB R2020b |
|
|
-| MATLAB R2021a |
|
|
-
-For more information, see [previous releases](/releases).
-
-## What versions of MATLAB Runtime are supported?
-
-| Release | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime |
-|---------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|---------------|
-| MATLAB R2019b | R2017a | R2017b | R2018a | R2018b | R2019a | R2019b |
-| MATLAB R2020a | | R2017b | R2018a | R2018b | R2019a | R2019b | R2020a |
-| MATLAB R2020b | | | R2018a | R2018b | R2019a | R2019b | R2020a | R2020b |
-| MATLAB R2021a | | | | R2018b | R2019a | R2019b | R2020a | R2020b | R2021a |
-| MATLAB R2021b | | | | | R2019a | R2019b | R2020a | R2020b | R2021a | R2021b|
-
-
-## Why do requests to the server fail with errors such as “untrusted certificate” or “security exception”?
-
-These errors result from either CORS not being enabled on the server or due to the fact that the server endpoint uses a self-signed
-certificate.
-
-If you are making an AJAX request to the server, make sure that CORS is enabled in the server configuration. You can enable CORS by editing the property `CORS Allowed Origins` property in the **Settings** tab of the dashboard.
-
-Also, some HTTP libraries and Javascript AJAX calls will reject a request originating from a server that uses a self-signed certificate. You may need to manually override the default security behavior of the client application. Or you can add a new
-HTTPS endpoint to the application gateway. For more information, see [Change SSL Certificate](https://www.mathworks.com/help/mps/server/manage-aws-resources-reference-architecture.html#mw_51d64616-777c-4e15-af40-ab3d8dcc418f).
-
-## How do I allow multiple IP address ranges access to the dashboard?
-The deployment template allows you to enter only one range of IP addresses that can access the dashboard. After the deployment is complete, you can allow additional IP ranges access to the dashboard. For details, see
-[Update security group rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#updating-security-group-rules) in the AWS documentation.
-
-The name of the security group to update is ``` matlab-production-server-cloud-stack-elb-1-sg```. Edit inbound rules to add additional IP address ranges in CIDR format for the ```HTTPS``` type.
-
-
-# Enhancement Request
-Provide suggestions for additional features or capabilities using the following link: https://www.mathworks.com/cloud/enhancement-request.html
-
-# Technical Support
-If you require assistance or have a request for additional features or capabilities, please contact [MathWorks Technical Support](https://www.mathworks.com/support/contact_us.html).
-
diff --git a/releases/R2021b/templates/mps-aws-refarch-existing-vpc-cf.yml b/releases/R2021b/templates/mps-aws-refarch-existing-vpc-cf.yml
deleted file mode 100644
index f24fc9c..0000000
--- a/releases/R2021b/templates/mps-aws-refarch-existing-vpc-cf.yml
+++ /dev/null
@@ -1,311 +0,0 @@
-AWSTemplateFormatVersion: "2010-09-09"
-Description: "R2021b MATLAB Production Server Reference Architecture with Existing VPC"
-Parameters:
- KeyPairName:
- Type: "AWS::EC2::KeyPair::KeyName"
- Description: "Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs."
- ConstraintDescription: "Must be the name of an existing EC2 Key Pair."
- ClientIPAddress:
- Description: "Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 0 and 32. Example: 10.0.0.1/24."
- Type: String
- MinLength: 9
- MaxLength: 18
- AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})"
- ConstraintDescription: "Must be a valid IP in CIDR notation of the form x.x.x.x/x"
- AllowPublicIP:
- Description: "Specify whether the deployed solution should use public IP addresses."
- Type: String
- AllowedValues:
- - 'Yes'
- - 'No'
- Default: 'Yes'
-
- NumWorkerNodes:
- Description: "Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances."
- Type: Number
- Default: 2
- MinValue: 1
- MaxValue: 24
-
- WorkerInstanceType:
- Description: "Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/"
- Default: "m5.xlarge"
- Type: String
- AllowedValues:
- - 'm5.xlarge'
- - 'm5.2xlarge'
- - 'm5.4xlarge'
- - 'm5.8xlarge'
- - 'm5.12xlarge'
- - 'm5.16xlarge'
- - 'm5.24xlarge'
- - 'm5.metal'
- - 'c5.xlarge'
- - 'c5.2xlarge'
- - 'c5.4xlarge'
- - 'c5.9xlarge'
- - 'c5.12xlarge'
- - 'c5.18xlarge'
- - 'c5.24xlarge'
- - 'c5.metal'
- - 'r5.xlarge'
- - 'r5.2xlarge'
- - 'r5.4xlarge'
- - 'r5.8xlarge'
- - 'r5.12xlarge'
- - 'r5.16xlarge'
- - 'r5.24xlarge'
- - 'r5.metal'
- ConstraintDescription: "Specify worker instance type."
-
- WorkerSystem:
- Description: Choose between Windows (Windows Server) and Linux (Ubuntu).
- Type: String
- AllowedValues:
- - Ubuntu
- - Windows
-
- SSLCertificateARN:
- Description: "Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager."
- Type: String
- AllowedPattern: "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]+:[\\w+=,.@-]+(/[\\w+=,.@-]+)*"
- ConstraintDescription: "Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012"
-
- EnablePersistence:
- Description: "Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server."
- Type: String
- AllowedValues:
- - 'Yes'
- - 'No'
- Default: 'No'
-
- DeployLicenseServer:
- Description: "Specify whether you want to deploy the Network License Manager for MATLAB"
- Type: String
- AllowedValues:
- - 'Yes'
- - 'No'
- Default: 'Yes'
- Username:
- Description: "Specify the administrator user name to log in to the MATLAB Production Server dashboard."
- Type: String
- AllowedPattern: "^[^'\\s]*$"
- ConstraintDescription: Must not contain whitespace or single quote
- Password:
- Description: "Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard."
- Type: String
- AllowedPattern: "^[^'\\s\\$]*$"
- ConstraintDescription: Must not contain whitespace, single quote or $ sign
- NoEcho: true
- ConfirmPassword:
- Description: "Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard."
- Type: String
- NoEcho: true
-
- ExistingVPC:
- Description: "ID of your existing VPC where you want to deploy this solution."
- Type: "AWS::EC2::VPC::Id"
- ConstraintDescription: "Must be the ID of an existing VPC."
- Default: ""
- ExistingVPCAddress:
- Description: "Get the IP address range from the existing VPC you selected above."
- Type: String
- MinLength: 9
- MaxLength: 18
- AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})"
- ConstraintDescription: "Must be a valid IP CIDR range of the form x.x.x.x/x"
- ExistingSubnet1:
- Description: "ID of an existing subnet that will host the dashboard and cloud resources."
- Type: "AWS::EC2::Subnet::Id"
- ConstraintDescription: "Must be the ID of an existing Subnet."
- Default: ""
- ExistingSubnet2:
- Description: "ID of an existing subnet that will host the load balancer."
- Type: "AWS::EC2::Subnet::Id"
- ConstraintDescription: "Must be the ID of an existing Subnet."
- Default: ""
-
-
-Metadata:
- "AWS::CloudFormation::Interface":
- ParameterGroups:
- - Label:
- default: Server
- Parameters:
- - NumWorkerNodes
- - WorkerInstanceType
- - WorkerSystem
- - EnablePersistence
- - DeployLicenseServer
- - Label:
- default: Dashboard Login
- Parameters:
- - Username
- - Password
- - ConfirmPassword
- - Label:
- default: Network
- Parameters:
- - KeyPairName
- - ClientIPAddress
- - AllowPublicIP
- - SSLCertificateARN
- - Label:
- default: Existing VPC
- Parameters:
- - ExistingVPC
- - ExistingVPCAddress
- - ExistingSubnet1
- - ExistingSubnet2
-
- ParameterLabels:
- KeyPairName:
- default: "Name of Existing Key Pair"
- NumWorkerNodes:
- default: "Number of Server VMs"
- SSLCertificateARN:
- default: "ARN of SSL Certificate"
- WorkerInstanceType:
- default: "Server VM Type"
- WorkerSystem:
- default: Choose between Windows (Windows Server) and Linux (Ubuntu).
- Username:
- default: Username for Dashboard
- Password:
- default: Password for MPS and License Server Dashboard
- ConfirmPassword:
- default: Confirm Password for MPS and License Server Dashboard
- ClientIPAddress:
- default: "Allow Connections from IP Address"
- AllowPublicIP:
- default: "Make Solution Available over Internet"
- EnablePersistence:
- default: "Create ElastiCache for Redis"
- ExistingVPC:
- default: "Existing VPC ID"
- ExistingVPCAddress:
- default: "IP Address Range of Existing VPC"
- ExistingSubnet1:
- default: "Subnet 1 ID"
- ExistingSubnet2:
- default: "Subnet 2 ID"
-
-Rules:
- matchPasswords:
- Assertions:
- - Assert: !Equals [!Ref Password, !Ref ConfirmPassword]
- AssertDescription: "Passwords do not match"
- checkSubnetInVPC:
- Assertions:
- - Assert: !EachMemberEquals
- - !ValueOfAll
- - AWS::EC2::Subnet::Id
- - VpcId
- - !Ref ExistingVPC
- AssertDescription: Subnet must exist in the VPC you have selected
- noLicenseDeployIfPrivate:
- RuleCondition: !Equals
- - !Ref AllowPublicIP
- - "No"
- Assertions:
- - Assert: !Equals [!Ref DeployLicenseServer, "No"]
- AssertDescription: 'License Server should not be deployed to private subnets'
-
-Conditions:
- DoPublicIP: !Equals
- - 'Yes'
- - !Ref AllowPublicIP
- DoDeployLicenseServer: !Equals
- - 'Yes'
- - !Ref DeployLicenseServer
-
-Mappings:
- VarMap:
- NestedTemplateURLs:
- vpsStackURL: 'https://matlab-production-server-templates.s3.amazonaws.com/r2021b_mps_refarch/mw-aws-payg-vpc-stack-cf.yml'
- productionServerStackURL: 'https://matlab-production-server-templates.s3.amazonaws.com/r2021b_mps_refarch/mw-aws-refarch-cf.yml'
-
-Outputs:
- MATLABProductionServerAdminVM:
- Description: Admin VM that hosts MATLAB Production Server dashboard
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM
- MatlabProductionServerLicenseServer:
- Description: "Address of the MATLAB network license manager dashboard"
- Value: !If
- - DoDeployLicenseServer
- - !GetAtt MatlabProductionServerLicenseServerStack.Outputs.ServerAddress
- - 'License Server was not deployed with this stack'
- MATLABProductionServerApplicationsBucket:
- Description: "S3 Bucket for MATLAB Production Server applications (CTF files)"
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket
- MATLABProductionServerDashboardURL:
- Description: URL to access MATLAB Production Server dashboard
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL
- MATLABProductionServerFunctionExecutionURL:
- Description: MATLAB Execution Endpoint
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL
- MATLABProductionServerAdminVMLogGroup:
- Description: CloudWatch log group for admin VM
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup
- MATLABProductionServerWorkerVMLogGroup:
- Description: CloudWatch log group for worker VM
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup
- MATLABProductionServerAutoScalingGroup:
- Description: Auto Scaling Group for managing the number of server VMs
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup
- MATLABProductionServerCloudStackCacheClusterAddress:
- Description: Hostname of Redis cache cluster
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress
- MATLABProductionServerCloudStackCacheClusterPort:
- Description: Port number of Redis cache cluster
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort
- MATLABProductionServerLoadBalancer:
- Description: Load balancer to change SSL certificate for MATLAB execution endpoint
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer
- MATLABProductionServerDashboardLoadBalancer:
- Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer
-
-Resources:
- MatlabProductionServerLicenseServerStack:
- Condition: DoDeployLicenseServer
- Type: AWS::CloudFormation::Stack
- Properties:
- TemplateURL: 'https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2020b/license-manager-template.json'
- Parameters:
- VPC: !Ref ExistingVPC
- Subnet: !Ref ExistingSubnet1
- ClientIPAddress: !If [DoPublicIP, !Ref ClientIPAddress, !Ref ExistingVPCAddress]
- ServerInstanceType: t2.micro
- SSHKeyName: !Ref KeyPairName
- Password: !Ref Password
- ConfirmPassword: !Ref ConfirmPassword
-
- MatlabProductionServerResourcesStack:
- Type: AWS::CloudFormation::Stack
- Properties:
- TemplateURL: !FindInMap [VarMap, NestedTemplateURLs , productionServerStackURL]
- Parameters:
- ExistingVPC: !Ref ExistingVPC
- ExistingVPCAddress: !Ref ExistingVPCAddress
- ExistingSubnet1: !Ref ExistingSubnet1
- ExistingSubnet2: !Ref ExistingSubnet2
- KeyPairName: !Ref KeyPairName
- ClientIPAddress: !Ref ClientIPAddress
- AllowPublicIP: !Ref AllowPublicIP
- SSLCertificateARN: !Ref SSLCertificateARN
- NumWorkerNodes: !Ref NumWorkerNodes
- WorkerInstanceType: !Ref WorkerInstanceType
- WorkerSystem: !Ref WorkerSystem
- EnablePersistence: !Ref EnablePersistence
- Username: !Ref Username
- Password: !Ref Password
- ConfirmPassword: !Ref ConfirmPassword
- LicenseServerSecurityGroup: !If
- - DoDeployLicenseServer
- - !GetAtt MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup
- - ''
- LicenseServerPrivateDNS: !If
- - DoDeployLicenseServer
- - !GetAtt MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS
- - ''
\ No newline at end of file
diff --git a/releases/R2021b/templates/mps-aws-refarch-new-vpc-cf.yml b/releases/R2021b/templates/mps-aws-refarch-new-vpc-cf.yml
deleted file mode 100644
index a0739d2..0000000
--- a/releases/R2021b/templates/mps-aws-refarch-new-vpc-cf.yml
+++ /dev/null
@@ -1,247 +0,0 @@
-AWSTemplateFormatVersion: "2010-09-09"
-Description: "R2021b MATLAB Production Server Reference Architecture with New VPC"
-Parameters:
- KeyPairName:
- Type: "AWS::EC2::KeyPair::KeyName"
- Description: "Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs."
- ConstraintDescription: "Must be the name of an existing EC2 Key Pair."
- ClientIPAddress:
- Description: "Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 0 and 32. Example: 10.0.0.1/24."
- Type: String
- MinLength: 9
- MaxLength: 18
- AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})"
- ConstraintDescription: "Must be a valid IP in CIDR notation of the form x.x.x.x/x"
- AllowPublicIP:
- Description: "Specify whether the deployed solution should use public IP addresses."
- Type: String
- AllowedValues:
- - 'Yes'
- - 'No'
- Default: 'Yes'
-
- NumWorkerNodes:
- Description: "Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances."
- Type: Number
- Default: 2
- MinValue: 1
- MaxValue: 24
-
- WorkerInstanceType:
- Description: "Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/"
- Default: "m5.xlarge"
- Type: String
- AllowedValues:
- - 'm5.xlarge'
- - 'm5.2xlarge'
- - 'm5.4xlarge'
- - 'm5.8xlarge'
- - 'm5.12xlarge'
- - 'm5.16xlarge'
- - 'm5.24xlarge'
- - 'm5.metal'
- - 'c5.xlarge'
- - 'c5.2xlarge'
- - 'c5.4xlarge'
- - 'c5.9xlarge'
- - 'c5.12xlarge'
- - 'c5.18xlarge'
- - 'c5.24xlarge'
- - 'c5.metal'
- - 'r5.xlarge'
- - 'r5.2xlarge'
- - 'r5.4xlarge'
- - 'r5.8xlarge'
- - 'r5.12xlarge'
- - 'r5.16xlarge'
- - 'r5.24xlarge'
- - 'r5.metal'
- ConstraintDescription: "Specify worker instance type."
-
- WorkerSystem:
- Description: Choose between Windows (Windows Server) and Linux (Ubuntu).
- Type: String
- AllowedValues:
- - Ubuntu
- - Windows
-
- SSLCertificateARN:
- Description: "Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager."
- Type: String
- AllowedPattern: "arn:[\\w+=/,.@-]+:[\\w+=/,.@-]+:[\\w+=/,.@-]*:[0-9]+:[\\w+=,.@-]+(/[\\w+=,.@-]+)*"
- ConstraintDescription: "Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012"
-
- EnablePersistence:
- Description: "Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server."
- Type: String
- AllowedValues:
- - 'Yes'
- - 'No'
- Default: 'No'
- Username:
- Description: "Specify the administrator user name to log in to the MATLAB Production Server dashboard."
- Type: String
- AllowedPattern: "^[^'\\s\\$]*$"
- ConstraintDescription: Must not contain whitespace, single quote or $ sign
-
- Password:
- Description: "Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard."
- Type: String
- AllowedPattern: "^[^'\\s\\$]*$"
- ConstraintDescription: Must not contain whitespace, single quote or $ sign
- NoEcho: true
-
- ConfirmPassword:
- Description: "Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard."
- Type: String
- NoEcho: true
-
-
-Metadata:
- "AWS::CloudFormation::Interface":
- ParameterGroups:
- - Label:
- default: Server
- Parameters:
- - NumWorkerNodes
- - WorkerInstanceType
- - WorkerSystem
- - EnablePersistence
- - Label:
- default: Dashboard Login
- Parameters:
- - Username
- - Password
- - ConfirmPassword
- - Label:
- default: Network
- Parameters:
- - KeyPairName
- - ClientIPAddress
- - AllowPublicIP
- - SSLCertificateARN
-
- ParameterLabels:
- KeyPairName:
- default: "Name of Existing Key Pair"
- NumWorkerNodes:
- default: "Number of Server VMs"
- SSLCertificateARN:
- default: "ARN of SSL Certificate"
- WorkerInstanceType:
- default: "Server VM Type"
- WorkerSystem:
- default: Choose between Windows (Windows Server) and Linux (Ubuntu).
- Username:
- default: Username for Dashboard
- Password:
- default: Password for MPS and License Server Dashboard
- ConfirmPassword:
- default: Confirm Password for MPS and License Server Dashboard
- ClientIPAddress:
- default: "Allow Connections from IP Address"
- AllowPublicIP:
- default: "Make Solution Available over Internet"
- EnablePersistence:
- default: "Create ElastiCache for Redis"
-
-Rules:
- matchPasswords:
- Assertions:
- - Assert: !Equals [!Ref Password, !Ref ConfirmPassword]
- AssertDescription: "Passwords do not match"
-
-Conditions:
- DoPublicIP: !Equals
- - 'Yes'
- - !Ref AllowPublicIP
-
-Mappings:
- VarMap:
- NestedTemplateURLs:
- vpsStackURL: 'https://matlab-production-server-templates.s3.amazonaws.com/r2021b_mps_refarch/mw-aws-payg-vpc-stack-cf.yml'
- productionServerStackURL: 'https://matlab-production-server-templates.s3.amazonaws.com/r2021b_mps_refarch/mw-aws-refarch-cf.yml'
-
-Outputs:
- MATLABProductionServerAdminVM:
- Description: Admin VM that hosts MATLAB Production Server dashboard
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM
- MatlabProductionServerLicenseServer:
- Description: Address of the network license manager for MATLAB dashboard
- Value: !GetAtt MatlabProductionServerLicenseServerStack.Outputs.ServerAddress
- MATLABProductionServerApplicationsBucket:
- Description: "S3 Bucket for MATLAB Production Server applications (CTF files)"
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket
- MATLABProductionServerDashboardURL:
- Description: URL to access MATLAB Production Server dashboard
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL
- MATLABProductionServerFunctionExecutionURL:
- Description: MATLAB Execution Endpoint
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL
- MATLABProductionServerAdminVMLogGroup:
- Description: CloudWatch log group for admin VM
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup
- MATLABProductionServerWorkerVMLogGroup:
- Description: CloudWatch log group for worker VM
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup
- MATLABProductionServerAutoScalingGroup:
- Description: Auto Scaling Group for managing the number of server VMs
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup
- MATLABProductionServerCloudStackCacheClusterAddress:
- Description: Hostname of Redis cache cluster
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress
- MATLABProductionServerCloudStackCacheClusterPort:
- Description: Port number of Redis cache cluster
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort
- MATLABProductionServerLoadBalancer:
- Description: Load balancer to change SSL certificate for MATLAB execution endpoint
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer
- MATLABProductionServerDashboardLoadBalancer:
- Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard
- Value: !GetAtt MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer
-
-Resources:
- MatlabProductionServerVPCStack:
- Type: AWS::CloudFormation::Stack
- Properties:
- TemplateURL: !FindInMap [VarMap, NestedTemplateURLs , vpsStackURL]
- Parameters:
- AllowPublicIP: !Ref AllowPublicIP
-
- MatlabProductionServerLicenseServerStack:
- Type: AWS::CloudFormation::Stack
- Properties:
- TemplateURL: 'https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2020b/license-manager-template.json'
- Parameters:
- VPC: !GetAtt MatlabProductionServerVPCStack.Outputs.VPCID
- Subnet: !GetAtt MatlabProductionServerVPCStack.Outputs.PublicSubnet
- ClientIPAddress: !If [DoPublicIP, !Ref ClientIPAddress, !GetAtt MatlabProductionServerVPCStack.Outputs.VPCCIDR]
- ServerInstanceType: t2.micro
- SSHKeyName: !Ref KeyPairName
- Password: !Ref Password
- ConfirmPassword: !Ref ConfirmPassword
-
- MatlabProductionServerResourcesStack:
- DependsOn:
- - MatlabProductionServerVPCStack
- Type: AWS::CloudFormation::Stack
- Properties:
- TemplateURL: !FindInMap [VarMap, NestedTemplateURLs , productionServerStackURL]
- Parameters:
- ExistingVPC: !GetAtt MatlabProductionServerVPCStack.Outputs.VPCID
- ExistingVPCAddress: !GetAtt MatlabProductionServerVPCStack.Outputs.VPCCIDR
- ExistingSubnet1: !GetAtt MatlabProductionServerVPCStack.Outputs.Subnet1
- ExistingSubnet2: !GetAtt MatlabProductionServerVPCStack.Outputs.Subnet2
- KeyPairName: !Ref KeyPairName
- ClientIPAddress: !Ref ClientIPAddress
- AllowPublicIP: !Ref AllowPublicIP
- SSLCertificateARN: !Ref SSLCertificateARN
- NumWorkerNodes: !Ref NumWorkerNodes
- WorkerInstanceType: !Ref WorkerInstanceType
- WorkerSystem: !Ref WorkerSystem
- EnablePersistence: !Ref EnablePersistence
- Username: !Ref Username
- Password: !Ref Password
- ConfirmPassword: !Ref ConfirmPassword
- LicenseServerSecurityGroup: !GetAtt MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup
- LicenseServerPrivateDNS: !GetAtt MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS
\ No newline at end of file
diff --git a/releases/R2021b/LICENSE.md b/releases/R2024b/LICENSE.md
similarity index 98%
rename from releases/R2021b/LICENSE.md
rename to releases/R2024b/LICENSE.md
index c896375..53e4061 100644
--- a/releases/R2021b/LICENSE.md
+++ b/releases/R2024b/LICENSE.md
@@ -4,7 +4,7 @@ The files in this GitHub repository refer to commercial software products and se
The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository.
-Copyright (c) 2021, The MathWorks, Inc.
+Copyright (c) 2022, The MathWorks, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
diff --git a/releases/R2024b/README.md b/releases/R2024b/README.md
new file mode 100644
index 0000000..1d79f98
--- /dev/null
+++ b/releases/R2024b/README.md
@@ -0,0 +1,150 @@
+# MATLAB Production Server on Amazon Web Services - R2024b
+
+# Deployment Steps
+Follow these steps to deploy the R2024b MATLAB Production Server reference architecture on AWS. To deploy reference architectures for other releases, see [Deploy Reference Architecture for Your Release](/README.md#deploy-reference-architecture-for-your-release).
+## Step 1. Launch Template
+Before launching the template, make sure that you have selected one of these supported AWS regions from the top navigation:- **US-East (N. Virginia)**
- **US-West (Oregon)**
- **Europe (Ireland)**
- **Asia Pacific (Tokyo)**
+
+Then, click the appropriate **Launch Stack** button to launch the stack configuration template for deploying resources onto your AWS account. You can deploy resources onto either a new or existing VPC.
+
+| Release | New VPC | Existing VPC |
+|---------|---------| ------------ |
+| R2024b |
|
|
+
+The AWS Management Console opens in your web browser.
+
+## Step 2. Configure Stack
+On the **Create Stack** page, specify these parameters:
+
+| Parameter Name | Value |
+|--------------- | ----- |
+| **Stack name** | Choose a name for the stack. After the deployment finishes, this name is displayed in the AWS console. *Example*: Boston
|
+||**Server**|
+| **Number of Server VMs** | Choose the number of AWS instances to start for the server. *Example*: 6
For example, if you have a 24-worker MATLAB Production Server license and select `m6.xlarge` (4 cores) as the **Number of server VMs**, you need 6 worker nodes to fully use the workers in your license.
You can always underprovision the number instances, in which case you may end up using fewer workers than you are licensed for.
|
+| **Server VM Type** | Choose the AWS instance type to use for the server instances. All AWS instance types are supported. For more information, see [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/). *Example*: m6.xlarge
|
+| **Server VM Operating System** | Choose between Windows (Windows Server 2022) and Linux (Ubuntu 22) to use for the server instances. |
+| **Create ElastiCache for Redis** | Choose whether you want to create a Redis ElastiCache service. Creating this service enables you to use the persistence functionality of the server. Persistence provides a mechanism to cache data between calls to MATLAB code running on a server instance. |
+||**Dashboard Login**|
+| **Username for MATLAB Production Server Dashboard** | Specify the administrator username for logging in to the MATLAB Production Server Dashboard. |
+| **Password for MATLAB Production Server and License Server Dashboards** | Specify the password to use for logging in to MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. |
+| **Confirm Password for MATLAB Production Server and License Server Dashboards** | Reenter the password to use for logging in to the MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. |
+| |**Network**|
+| **Name of Existing Key Pair** | Select the name of an existing EC2 Key Pair to allow access to all the VMs in the stack. For information about creating an Amazon EC2 key pair, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair). *Example*: boston-keypair
|
+| **Allow Connections from IP Address** | Specify the IP address range that is allowed to connect to the dashboard that manages the server. The format for this field is IP Address/Mask.
Example: 10.0.0.1/32
- This is the public IP address, which can be found by searching for "what is my ip address" on the web. The mask determines the number of IP addresses to include.
- A mask of 32 is a single IP address.
- If you need a range of IP addresses, use a [CIDR calculator](https://www.ipaddressguide.com/cidr).
- To determine which address is appropriate, contact your IT administrator.
|
+| **Make Solution Available over Internet** | Choose 'Yes' if you want your solution to use public IP addresses. |
+| **ARN of SSL Certificate** | Provide the Amazon Resource Name (ARN) of an existing certificate in the AWS Certificate Manager. This certificate enables secure HTTPS communication to the HTTPS server endpoint. For information on creating and uploading a self-signed certificate, see [Create and sign an X509 certificate](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html) and [Import SSL Certificate](https://www.mathworks.com/help/mps/server/manage-aws-resources-reference-architecture.html#mw_b0d98763-0e90-48fc-bcc3-ff2755ffe722).*Example*: arn:aws:acm:us-east-1:12345:certificate/123456789012
|
+
+## Step 3. Configure Existing VPC
+
+>**Note**: If you are deploying to a new VPC, skip this step.
+
+To deploy MATLAB Production Server onto an existing VPC, specify these additional parameters.
+
+| Parameter Name | Value |
+|--------------- | ----- |
+||**Network License Manager**|
+| **Deploy License Server** | Specify whether you want to deploy the Network License Manager for MATLAB. This parameter is available only if you use the deployment template for an existing VPC. Instead of specifying values for the following two parameters, you may choose to configure the License Server manually. For manual configurtion steps for using an existing License Server with an existing VPC, see the [Use Existing License Server in Existing VPC](#use-existing-license-server-in-existing-vpc) section.
|
+|**IP Address and port number of Existing Network License Manager**| Optional parameter: Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format *port*@*privateDNSname*, for example, `27000@ip-172-30-1-89.ec2.internal` or `27000@172.30.1.89`. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager.
|
+|**Security Group of Existing Network License Manager**| Optional parameter: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager.|
+||**Existing VPC**|
+| **Existing VPC ID** | ID of your existing VPC. |
+| IP address range of existing VPC | IP address range from the existing VPC. To find the IP address range: - Log in to the AWS Console.
- Navigate to the VPC dashboard and select your VPC.
- Click the **CIDR blocks** tab.
- Get the IP address range listed under **IPv4 CIDR Blocks**.
|
+| **Subnet 1 ID** | ID of an existing subnet that will host the dashboard and other resources. |
+| **Subnet 2 ID** | ID of an existing subnet that will host the application load balancer. |
+
+- If Subnet 1 and Subnet 2 are public, then you must connect the EC2 VPC endpoint and the AutoScaling VPC endpoint to the VPC.
+- If Subnet 1 and Subnet 2 are private, then you must either deploy a NAT gateway in the VPC, or connect all of these endpoints to the VPC:
+ - EC2 VPC endpoint
+ - AutoScaling VPC endpoint
+ - S3 VPC endpoint
+ - CloudFormation endpoint
+
+For more information about creating endpoints, see the [AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint).
+
+You also need to open these ports in your VPC:
+
+| Port | Description |
+|------|------------ |
+| `443` | Required for communicating with the dashboard and the MATLAB execution endpoint. |
+| `8000`, `8002`, `9910` | Required for communication between the dashboard and workers within the VPC. These ports do not need to be open to the Internet. |
+| `27000`, `50115` | Required for communication between the Network License Manager and the workers. |
+| `22`, `3389` | Required for Remote Desktop functionality. This can be used for troubleshooting and debugging. |
+
+## Step 4. Create Stack
+Review or edit your stack details. You must select the acknowledgements to create IAM resources. Otherwise, the deployment produces a `Requires capabilities : [CAPABILITY_IAM]` error and fails to create resources.
+
+When you are satisfied with your stack configuration, click **Create stack**. AWS starts creating the resources for your server environment and opens you to the **Events** tab for the stack.
+
+>**Note**: Resource creation can take up to 20 minutes. After resource creation, it can take up to 15 minutes for the resources to be active.
+
+## Step 5. Upload License File
+1. On the **Events** tab for your stack, wait for the status to reach **CREATE\_COMPLETE**.
+1. On the **Outputs** tab, in the row for the `MatlabProductionServerLicenseServer` key, click the corresponding URL listed under **Value** to open the Network License Manager for MATLAB Dashboard login page.
+1. Log in to the Network License Manager for MATLAB Dashboard.- The username is **manager**.
- For the password, enter the password that you entered in the **Dashboard Login** section while creating the stack.
+1. Upload your MATLAB Production Server license by following the instructions in the dashboard.
+
+
+## Step 6. Connect and Log In to MATLAB Production Server Dashboard
+> **Note**: The Internet Explorer web browser is not supported for interacting with the dashboard.
+
+1. On the **Outputs** tab for your stack, in the row for the `MatlabProductionServerDashboardURL` key, click the corresponding URL listed under **Value**. This URL is the HTTPS endpoint to the MATLAB Production Server Dashboard and brings you to the dashboard login page.
+1. Log in using the administrator username and password that you specified in the **Dashboard Login** section while creating the stack. For more information on how to use the dashboard, see [Manage MATLAB Production Server Using the Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html).
+
+You are now ready to use MATLAB Production Server on AWS.
+
+To run applications on MATLAB Production Server, you need to create applications using MATLAB Compiler SDK. For more information, see [Create Deployable Archive for MATLAB Production Server](https://www.mathworks.com/help/compiler_sdk/mps_dev_test/create-a-deployable-archive-for-matlab-production-server.html).
+
+# Additional Information
+
+## Use Existing License Server in Existing VPC
+To manage MATLAB Production Server licenses, you can use an existing Network License Manager server for MATLAB instead of deploying a new one. To use an existing license server, on the *Deploy License Server* step of the deployment, select `No`.
+
+The license manager must be in the same VPC and security group as MATLAB Production Server. You must also add the security group of the server VMs to the security group of the license server.
+1. In the AWS management console, select the license manager stack that you deployed.
+1. In the stack details page, click **Resources**.
+1. In the **Logical ID** named ```MWSecurityGroupExternal```, click the corresponding URL listed under **Physical ID**
+1. In the stack details page for ```MWSecurityGroupExternal```, click **Resources**.
+1. In the **Logical ID** named ```SecurityGroup```, click the corresponding URL listed under **Physical ID** to open the security group details.
+1. Click the **Inbound Rules** tab, and then click **Edit Inbound Rules**.
+1. Click **Add Rule**.
+1. In the **Type** dropdown, select ```All TCP```.
+1. Under **Source**, search and add the ```MatlabProductionServerCloudStackElb1Sg``` security group.
+1. Click **Save Rules**.
+
+You must also add the private IP address of the license server to the `License Server` property in the **Settings** tab of the dashboard.
+You can find the IP address of the license server from the AWS management console.
+1. In the AWS management console, navigate to the EC2 dashboard.
+1. Select the license server instance.
+1. In the instance details, copy the value of **Private IPs**. For example: 172.30.1.126
+1. Add the private IP to the `License Server` property. For example: ` 27000@172.30.1.126`
+
+## Delete Your Stack
+
+Once you finish using your stack, to avoid incurring further cost, it is recommended that you delete all resources.
+
+If you are using an existing license server, and have added the security group of the server VMs to the security group of the license server, you must delete the inbound rules before you delete the stack.
+1. In the AWS management console, select the stack that you deployed.
+1. On the details page your stack, click the **Resources** tab.
+1. In the **Logical ID** named `SecurityGroup`, click the corresponding URL listed under **Physical ID** to open the security group details.
+1. On the **Inbound Rules** tab, click **Edit Inbound Rules**.
+1. For each rule that has the **Source** tag set to `matlab-production-server-cloud-stack-elb-1-sg`, click **Delete Rule**.
+1. Click **Save Rules**.
+
+To delete the stack, do the following:
+1. Log in to the AWS Console.
+3. Go to the AWS Cloud Formation page and select the stack that you created.
+3. Click **Delete**.
+
+If you do not want to delete the entire deployment but want to minimize the cost, you can bring the number of instances in the Auto Scaling Group down to 0 and then scale it back up when the need arises.
+
+## Get License Server MAC Address
+The Network License Manager for MATLAB reference architecture manages the MATLAB Production Server license file. The deployment templates for the MATLAB Production Server reference architecture provide an option to deploy the license manager. You can also use an existing license manager that is located in the same VPC and security group as the MATLAB Production Server instances. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws).
+
+>**NOTE**: For a new license manager deployed with MATLAB Production Server, the license manager MAC address is available only after the deployment to the cloud is complete. For information on deploying the solution, see [Deployment Steps](/README.md#deployment-steps).
+
+To get the MAC address of the license manager:
+1. Log in to the Network License Manager for MATLAB Dashboard. For a license manager deployed with the MATLAB Production Server deployment, use the following credentials:
+Username: **manager**
+Password: Enter the password that you specified during the deployment process.
+1. Click **Administration** and then **License**.
+1. Copy the license server MAC address displayed at the top.
\ No newline at end of file
diff --git a/releases/R2021b/images/mps_ref_arch_aws_diagram.png b/releases/R2024b/images/mps_ref_arch_aws_diagram.png
similarity index 100%
rename from releases/R2021b/images/mps_ref_arch_aws_diagram.png
rename to releases/R2024b/images/mps_ref_arch_aws_diagram.png
diff --git a/releases/R2024b/templates/mps-aws-refarch-existing-vpc-cf.yml b/releases/R2024b/templates/mps-aws-refarch-existing-vpc-cf.yml
new file mode 100644
index 0000000..241f8e6
--- /dev/null
+++ b/releases/R2024b/templates/mps-aws-refarch-existing-vpc-cf.yml
@@ -0,0 +1,367 @@
+AWSTemplateFormatVersion: '2010-09-09'
+Description: MATLAB Production Server R2023b with Existing VPC
+Parameters:
+ KeyPairName:
+ Type: AWS::EC2::KeyPair::KeyName
+ Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs.
+ ConstraintDescription: Must be the name of an existing EC2 Key Pair.
+ ClientIPAddress:
+ Description: >-
+ Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between
+ 0 and 32. Example: 10.0.0.1/24.
+ Type: String
+ MinLength: 9
+ MaxLength: 18
+ AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
+ ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x
+ AllowPublicIP:
+ Description: Specify whether the deployed solution should use public IP addresses.
+ Type: String
+ AllowedValues:
+ - 'Yes'
+ - 'No'
+ Default: 'Yes'
+ NumWorkerNodes:
+ Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances.
+ Type: Number
+ Default: 2
+ MinValue: 1
+ MaxValue: 24
+ WorkerInstanceType:
+ Description: >-
+ Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches
+ the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/
+ Default: m6i.xlarge
+ Type: String
+ AllowedValues:
+ - m6i.xlarge
+ - m6i.2xlarge
+ - m6i.4xlarge
+ - m6i.8xlarge
+ - m6i.12xlarge
+ - m6i.16xlarge
+ - m6i.24xlarge
+ - m6i.metal
+ - m6a.xlarge
+ - m6a.xlarge
+ - m6a.2xlarge
+ - m6a.4xlarge
+ - m6a.8xlarge
+ - m6a.12xlarge
+ - m6a.16xlarge
+ - m6a.24xlarge
+ - m6a.metal
+ - c6i.xlarge
+ - c6i.2xlarge
+ - c6i.4xlarge
+ - c6i.8xlarge
+ - c6i.12xlarge
+ - c6i.16xlarge
+ - c6i.24xlarge
+ - c6i.32xlarge
+ - c6i.metal
+ - c6a.xlarge
+ - c6a.2xlarge
+ - c6a.4xlarge
+ - c6a.8xlarge
+ - c6a.12xlarge
+ - c6a.16xlarge
+ - c6a.24xlarge
+ - c6a.32xlarge
+ - c6a.48xlarge
+ - c6a.metal
+ - r6i.xlarge
+ - r6i.2xlarge
+ - r6i.4xlarge
+ - r6i.8xlarge
+ - r6i.12xlarge
+ - r6i.16xlarge
+ - r6i.24xlarge
+ - r6i.32xlarge
+ - r6i.metal
+ - r6a.xlarge
+ - r6a.2xlarge
+ - r6a.4xlarge
+ - r6a.8xlarge
+ - r6a.12xlarge
+ - r6a.16xlarge
+ - r6a.24xlarge
+ - r6a.32xlarge
+ - r6a.48xlarge
+ - r6a.metal
+ ConstraintDescription: Specify worker instance type.
+ WorkerSystem:
+ Description: Choose between Windows (Windows Server) and Linux (Ubuntu).
+ Type: String
+ AllowedValues:
+ - Ubuntu
+ - Windows
+ SSLCertificateARN:
+ Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager.
+ Type: String
+ AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)*
+ ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
+ EnablePersistence:
+ Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server.
+ Type: String
+ AllowedValues:
+ - 'Yes'
+ - 'No'
+ Default: 'No'
+ DeployLicenseServer:
+ Description: Specify whether you want to deploy the Network License Manager for MATLAB
+ Type: String
+ AllowedValues:
+ - 'Yes'
+ - 'No'
+ Default: 'Yes'
+ ExistingLicenseServer:
+ Description: >-
+ Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format @,
+ for example, 27000@ip-172-30-1-89.ec2.internal or 27000@172.30.1.89. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager.
+ Type: String
+ AllowedPattern: ([0-9]+@[a-zA-Z0-9.\\-]+)?
+ ConstraintDescription: If specified, must be in the form @
+ ExistingLicenseServerSecurityGroup:
+ Description: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager.
+ Type: String
+ Default: ''
+ Username:
+ Description: Specify the administrator username to log in to the MATLAB Production Server dashboard.
+ Type: String
+ AllowedPattern: ^[^'\s]*$
+ ConstraintDescription: Must not contain whitespace or single quote
+ Password:
+ Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard.
+ Type: String
+ AllowedPattern: ^[^'\s\$]*$
+ ConstraintDescription: Must not contain whitespace, single quote or $ sign
+ NoEcho: true
+ ConfirmPassword:
+ Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard.
+ Type: String
+ NoEcho: true
+ ExistingVPC:
+ Description: ID of your existing VPC where you want to deploy this solution.
+ Type: AWS::EC2::VPC::Id
+ ConstraintDescription: Must be the ID of an existing VPC.
+ Default: ''
+ ExistingSubnet1:
+ Description: ID of an existing subnet that will host the dashboard and cloud resources.
+ Type: AWS::EC2::Subnet::Id
+ ConstraintDescription: Must be the ID of an existing Subnet.
+ Default: ''
+ ExistingSubnet2:
+ Description: ID of an existing subnet that will host the load balancer.
+ Type: AWS::EC2::Subnet::Id
+ ConstraintDescription: Must be the ID of an existing Subnet.
+ Default: ''
+Metadata:
+ AWS::CloudFormation::Interface:
+ ParameterGroups:
+ - Label:
+ default: Server
+ Parameters:
+ - NumWorkerNodes
+ - WorkerInstanceType
+ - WorkerSystem
+ - EnablePersistence
+ - Label:
+ default: Dashboard Login
+ Parameters:
+ - Username
+ - Password
+ - ConfirmPassword
+ - Label:
+ default: Network
+ Parameters:
+ - KeyPairName
+ - ClientIPAddress
+ - AllowPublicIP
+ - SSLCertificateARN
+ - Label:
+ default: Network License Manager
+ Parameters:
+ - DeployLicenseServer
+ - ExistingLicenseServer
+ - ExistingLicenseServerSecurityGroup
+ - Label:
+ default: Existing VPC
+ Parameters:
+ - ExistingVPC
+ - ExistingSubnet1
+ - ExistingSubnet2
+ ParameterLabels:
+ KeyPairName:
+ default: Name of Existing Key Pair
+ NumWorkerNodes:
+ default: Number of Server VMs
+ SSLCertificateARN:
+ default: ARN of SSL Certificate
+ WorkerInstanceType:
+ default: Server VM Type
+ WorkerSystem:
+ default: Choose between Windows (Windows Server) and Linux (Ubuntu)
+ Username:
+ default: Username for Dashboard
+ Password:
+ default: Password for MATLAB Production Server and License Server dashboards
+ ConfirmPassword:
+ default: Confirm Password for MATLAB Production Server and License Server dashboards
+ ClientIPAddress:
+ default: Allow Connections from IP Address
+ AllowPublicIP:
+ default: Make Solution Available over Internet
+ EnablePersistence:
+ default: Create ElastiCache for Redis
+ DeployLicenseServer:
+ default: Deploy License Server
+ ExistingLicenseServer:
+ default: IP Address and port number of Existing Network License Manager
+ ExistingLicenseServerSecurityGroup:
+ default: Security Group of Existing Network License Manager
+ ExistingVPC:
+ default: Existing VPC ID
+ ExistingSubnet1:
+ default: Subnet 1 ID
+ ExistingSubnet2:
+ default: Subnet 2 ID
+Rules:
+ matchPasswords:
+ Assertions:
+ - Assert: !Equals
+ - !Ref 'Password'
+ - !Ref 'ConfirmPassword'
+ AssertDescription: Passwords do not match
+ checkLicenseServerIPAddressProvided:
+ RuleCondition: !Not
+ - !Equals
+ - !Ref 'ExistingLicenseServer'
+ - ''
+ Assertions:
+ - Assert: !Equals
+ - 'No'
+ - !Ref 'DeployLicenseServer'
+ AssertDescription: Cannot deploy a new license server when you provide a port@hostname for an existing license server.
+ checkSubnetInVPC:
+ Assertions:
+ - Assert: !EachMemberEquals
+ - !ValueOfAll
+ - AWS::EC2::Subnet::Id
+ - VpcId
+ - !Ref 'ExistingVPC'
+ AssertDescription: Subnet must exist in the VPC you have selected
+Conditions:
+ DoPublicIP: !Equals
+ - 'Yes'
+ - !Ref 'AllowPublicIP'
+ DoDeployLicenseServer: !Equals
+ - 'Yes'
+ - !Ref 'DeployLicenseServer'
+Mappings:
+ VarMap:
+ NestedTemplateURLs:
+ vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml
+ productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-cf.yml
+Outputs:
+ MATLABProductionServerAdminVM:
+ Description: Admin VM that hosts MATLAB Production Server dashboard
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM'
+ MatlabProductionServerLicenseServer:
+ Description: Address of the MATLAB network license manager dashboard
+ Value: !If
+ - DoDeployLicenseServer
+ - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress'
+ - License Server was not deployed with this stack
+ MATLABProductionServerApplicationsBucket:
+ Description: S3 Bucket for MATLAB Production Server applications (CTF files)
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket'
+ MATLABProductionServerDashboardURL:
+ Description: URL to access MATLAB Production Server dashboard
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL'
+ MATLABProductionServerFunctionExecutionURL:
+ Description: MATLAB Execution Endpoint
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL'
+ MATLABProductionServerAdminVMLogGroup:
+ Description: CloudWatch log group for admin VM
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup'
+ MATLABProductionServerWorkerVMLogGroup:
+ Description: CloudWatch log group for worker VM
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup'
+ MATLABProductionServerAutoScalingGroup:
+ Description: Auto Scaling Group for managing the number of server VMs
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup'
+ MATLABProductionServerCloudStackCacheClusterAddress:
+ Description: Hostname of Redis cache cluster
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress'
+ MATLABProductionServerCloudStackCacheClusterPort:
+ Description: Port number of Redis cache cluster
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort'
+ MATLABProductionServerLoadBalancer:
+ Description: Load balancer to change SSL certificate for MATLAB execution endpoint
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer'
+ MATLABProductionServerDashboardLoadBalancer:
+ Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer'
+Resources:
+ MatlabProductionServerCustomParamLambdaFunctionStack:
+ Type: AWS::CloudFormation::Stack
+ Properties:
+ TemplateURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/CustomParamLambda.yml
+ Parameters:
+ ExistingVPC: !Ref 'ExistingVPC'
+ MatlabProductionServerLicenseServerStack:
+ Condition: DoDeployLicenseServer
+ DependsOn:
+ - MatlabProductionServerCustomParamLambdaFunctionStack
+ Type: AWS::CloudFormation::Stack
+ Properties:
+ TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2024b/license-manager-template.json
+ Parameters:
+ VPC: !Ref 'ExistingVPC'
+ Subnet: !Ref 'ExistingSubnet1'
+ ClientIPAddress: !If
+ - DoPublicIP
+ - !Ref 'ClientIPAddress'
+ - !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR'
+ ServerInstanceType: t2.micro
+ SSHKeyName: !Ref 'KeyPairName'
+ Password: !Ref 'Password'
+ ConfirmPassword: !Ref 'ConfirmPassword'
+ MatlabProductionServerResourcesStack:
+ DependsOn:
+ - MatlabProductionServerCustomParamLambdaFunctionStack
+ Type: AWS::CloudFormation::Stack
+ Properties:
+ TemplateURL: !FindInMap
+ - VarMap
+ - NestedTemplateURLs
+ - productionServerStackURL
+ Parameters:
+ ExistingVPC: !Ref 'ExistingVPC'
+ ExistingVPCAddress: !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR'
+ ExistingSubnet1: !Ref 'ExistingSubnet1'
+ ExistingSubnet2: !Ref 'ExistingSubnet2'
+ KeyPairName: !Ref 'KeyPairName'
+ ClientIPAddress: !Ref 'ClientIPAddress'
+ AllowPublicIP: !Ref 'AllowPublicIP'
+ SSLCertificateARN: !Ref 'SSLCertificateARN'
+ NumWorkerNodes: !Ref 'NumWorkerNodes'
+ WorkerInstanceType: !Ref 'WorkerInstanceType'
+ WorkerSystem: !Ref 'WorkerSystem'
+ EnablePersistence: !Ref 'EnablePersistence'
+ Username: !Ref 'Username'
+ Password: !Ref 'Password'
+ ConfirmPassword: !Ref 'ConfirmPassword'
+ LicenseServerSecurityGroup: !If
+ - DoDeployLicenseServer
+ - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup'
+ - !Ref 'ExistingLicenseServerSecurityGroup'
+ LicenseServerPrivateDNS: !If
+ - DoDeployLicenseServer
+ - !Join
+ - ''
+ - - 27000
+ - '@'
+ - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS'
+ - !Ref 'ExistingLicenseServer'
diff --git a/releases/R2024b/templates/mps-aws-refarch-new-vpc-cf.yml b/releases/R2024b/templates/mps-aws-refarch-new-vpc-cf.yml
new file mode 100644
index 0000000..bdc1a17
--- /dev/null
+++ b/releases/R2024b/templates/mps-aws-refarch-new-vpc-cf.yml
@@ -0,0 +1,280 @@
+AWSTemplateFormatVersion: '2010-09-09'
+Description: MATLAB Production Server R2023b with new VPC
+Parameters:
+ KeyPairName:
+ Type: AWS::EC2::KeyPair::KeyName
+ Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs.
+ ConstraintDescription: Must be the name of an existing EC2 Key Pair.
+ ClientIPAddress:
+ Description: >-
+ Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between
+ 0 and 32. Example: 10.0.0.1/24.
+ Type: String
+ MinLength: 9
+ MaxLength: 18
+ AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
+ ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x
+ AllowPublicIP:
+ Description: Specify whether the deployed solution should use public IP addresses.
+ Type: String
+ AllowedValues:
+ - 'Yes'
+ - 'No'
+ Default: 'Yes'
+ NumWorkerNodes:
+ Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances.
+ Type: Number
+ Default: 2
+ MinValue: 1
+ MaxValue: 24
+ WorkerInstanceType:
+ Description: >-
+ Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches
+ the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/
+ Default: m6i.xlarge
+ Type: String
+ AllowedValues:
+ - m6i.xlarge
+ - m6i.2xlarge
+ - m6i.4xlarge
+ - m6i.8xlarge
+ - m6i.12xlarge
+ - m6i.16xlarge
+ - m6i.24xlarge
+ - m6i.metal
+ - m6a.xlarge
+ - m6a.xlarge
+ - m6a.2xlarge
+ - m6a.4xlarge
+ - m6a.8xlarge
+ - m6a.12xlarge
+ - m6a.16xlarge
+ - m6a.24xlarge
+ - m6a.metal
+ - c6i.xlarge
+ - c6i.2xlarge
+ - c6i.4xlarge
+ - c6i.8xlarge
+ - c6i.12xlarge
+ - c6i.16xlarge
+ - c6i.24xlarge
+ - c6i.32xlarge
+ - c6i.metal
+ - c6a.xlarge
+ - c6a.2xlarge
+ - c6a.4xlarge
+ - c6a.8xlarge
+ - c6a.12xlarge
+ - c6a.16xlarge
+ - c6a.24xlarge
+ - c6a.32xlarge
+ - c6a.48xlarge
+ - c6a.metal
+ - r6i.xlarge
+ - r6i.2xlarge
+ - r6i.4xlarge
+ - r6i.8xlarge
+ - r6i.12xlarge
+ - r6i.16xlarge
+ - r6i.24xlarge
+ - r6i.32xlarge
+ - r6i.metal
+ - r6a.xlarge
+ - r6a.2xlarge
+ - r6a.4xlarge
+ - r6a.8xlarge
+ - r6a.12xlarge
+ - r6a.16xlarge
+ - r6a.24xlarge
+ - r6a.32xlarge
+ - r6a.48xlarge
+ - r6a.metal
+ ConstraintDescription: Specify worker instance type.
+ WorkerSystem:
+ Description: Choose between Windows (Windows Server) and Linux (Ubuntu).
+ Type: String
+ AllowedValues:
+ - Ubuntu
+ - Windows
+ SSLCertificateARN:
+ Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager.
+ Type: String
+ AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)*
+ ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
+ EnablePersistence:
+ Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server.
+ Type: String
+ AllowedValues:
+ - 'Yes'
+ - 'No'
+ Default: 'No'
+ Username:
+ Description: Specify the administrator username to log in to the MATLAB Production Server dashboard.
+ Type: String
+ AllowedPattern: ^[^'\s\$]*$
+ ConstraintDescription: Must not contain whitespace, single quote or $ sign
+ Password:
+ Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard.
+ Type: String
+ AllowedPattern: ^[^'\s\$]*$
+ ConstraintDescription: Must not contain whitespace, single quote or $ sign
+ NoEcho: true
+ ConfirmPassword:
+ Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard.
+ Type: String
+ NoEcho: true
+Metadata:
+ AWS::CloudFormation::Interface:
+ ParameterGroups:
+ - Label:
+ default: Server
+ Parameters:
+ - NumWorkerNodes
+ - WorkerInstanceType
+ - WorkerSystem
+ - EnablePersistence
+ - Label:
+ default: Dashboard Login
+ Parameters:
+ - Username
+ - Password
+ - ConfirmPassword
+ - Label:
+ default: Network
+ Parameters:
+ - KeyPairName
+ - ClientIPAddress
+ - AllowPublicIP
+ - SSLCertificateARN
+ ParameterLabels:
+ KeyPairName:
+ default: Name of Existing Key Pair
+ NumWorkerNodes:
+ default: Number of Server VMs
+ SSLCertificateARN:
+ default: ARN of SSL Certificate
+ WorkerInstanceType:
+ default: Server VM Type
+ WorkerSystem:
+ default: Choose between Windows (Windows Server) and Linux (Ubuntu).
+ Username:
+ default: Username for Dashboard
+ Password:
+ default: Password for MATLAB Production Server and License Server dashboards
+ ConfirmPassword:
+ default: Confirm Password for MATLAB Production Server and License Server dashboards
+ ClientIPAddress:
+ default: Allow Connections from IP Address
+ AllowPublicIP:
+ default: Make Solution Available over Internet
+ EnablePersistence:
+ default: Create ElastiCache for Redis
+Rules:
+ matchPasswords:
+ Assertions:
+ - Assert: !Equals
+ - !Ref 'Password'
+ - !Ref 'ConfirmPassword'
+ AssertDescription: Passwords do not match
+Conditions:
+ DoPublicIP: !Equals
+ - 'Yes'
+ - !Ref 'AllowPublicIP'
+Mappings:
+ VarMap:
+ NestedTemplateURLs:
+ vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml
+ productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-cf.yml
+Outputs:
+ MATLABProductionServerAdminVM:
+ Description: Admin VM that hosts MATLAB Production Server dashboard
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM'
+ MatlabProductionServerLicenseServer:
+ Description: Address of the network license manager for MATLAB dashboard
+ Value: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress'
+ MATLABProductionServerApplicationsBucket:
+ Description: S3 Bucket for MATLAB Production Server applications (CTF files)
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket'
+ MATLABProductionServerDashboardURL:
+ Description: URL to access MATLAB Production Server dashboard
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL'
+ MATLABProductionServerFunctionExecutionURL:
+ Description: MATLAB Execution Endpoint
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL'
+ MATLABProductionServerAdminVMLogGroup:
+ Description: CloudWatch log group for admin VM
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup'
+ MATLABProductionServerWorkerVMLogGroup:
+ Description: CloudWatch log group for worker VM
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup'
+ MATLABProductionServerAutoScalingGroup:
+ Description: Auto Scaling Group for managing the number of server VMs
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup'
+ MATLABProductionServerCloudStackCacheClusterAddress:
+ Description: Hostname of Redis cache cluster
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress'
+ MATLABProductionServerCloudStackCacheClusterPort:
+ Description: Port number of Redis cache cluster
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort'
+ MATLABProductionServerLoadBalancer:
+ Description: Load balancer to change SSL certificate for MATLAB execution endpoint
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer'
+ MATLABProductionServerDashboardLoadBalancer:
+ Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard
+ Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer'
+Resources:
+ MatlabProductionServerVPCStack:
+ Type: AWS::CloudFormation::Stack
+ Properties:
+ TemplateURL: !FindInMap
+ - VarMap
+ - NestedTemplateURLs
+ - vpsStackURL
+ Parameters:
+ AllowPublicIP: !Ref 'AllowPublicIP'
+ MatlabProductionServerLicenseServerStack:
+ Type: AWS::CloudFormation::Stack
+ Properties:
+ TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2024b/license-manager-template.json
+ Parameters:
+ VPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID'
+ Subnet: !GetAtt 'MatlabProductionServerVPCStack.Outputs.PublicSubnet'
+ ClientIPAddress: !If
+ - DoPublicIP
+ - !Ref 'ClientIPAddress'
+ - !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR'
+ ServerInstanceType: t2.micro
+ SSHKeyName: !Ref 'KeyPairName'
+ Password: !Ref 'Password'
+ ConfirmPassword: !Ref 'ConfirmPassword'
+ MatlabProductionServerResourcesStack:
+ DependsOn:
+ - MatlabProductionServerVPCStack
+ Type: AWS::CloudFormation::Stack
+ Properties:
+ TemplateURL: !FindInMap
+ - VarMap
+ - NestedTemplateURLs
+ - productionServerStackURL
+ Parameters:
+ ExistingVPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID'
+ ExistingVPCAddress: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR'
+ ExistingSubnet1: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet1'
+ ExistingSubnet2: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet2'
+ KeyPairName: !Ref 'KeyPairName'
+ ClientIPAddress: !Ref 'ClientIPAddress'
+ AllowPublicIP: !Ref 'AllowPublicIP'
+ SSLCertificateARN: !Ref 'SSLCertificateARN'
+ NumWorkerNodes: !Ref 'NumWorkerNodes'
+ WorkerInstanceType: !Ref 'WorkerInstanceType'
+ WorkerSystem: !Ref 'WorkerSystem'
+ EnablePersistence: !Ref 'EnablePersistence'
+ Username: !Ref 'Username'
+ Password: !Ref 'Password'
+ ConfirmPassword: !Ref 'ConfirmPassword'
+ LicenseServerSecurityGroup: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup'
+ LicenseServerPrivateDNS: !Join
+ - ''
+ - - 27000
+ - '@'
+ - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS'
diff --git a/releases/R2021b/templates/templateURL.txt b/releases/R2024b/templates/templateURL.txt
similarity index 56%
rename from releases/R2021b/templates/templateURL.txt
rename to releases/R2024b/templates/templateURL.txt
index ebd3715..a8b9efb 100644
--- a/releases/R2021b/templates/templateURL.txt
+++ b/releases/R2024b/templates/templateURL.txt
@@ -1,2 +1,2 @@
-https://matlab-production-server-templates.s3.amazonaws.com/r2021b_mps_refarch/mps-aws-refarch-new-vpc-cf.yml
-https://matlab-production-server-templates.s3.amazonaws.com/r2021b_mps_refarch/mps-aws-refarch-existing-vpc-cf.yml
+https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mps-aws-refarch-new-vpc-cf.yml
+https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mps-aws-refarch-existing-vpc-cf.yml
\ No newline at end of file