Skip to content

Commit d635e43

Browse files
committed
add a new cobalt learning path to link to from the .NET path, and add LD path info to the .NET path
1 parent 31aaddf commit d635e43

11 files changed

Lines changed: 163 additions & 6 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: Create the Cobalt 100 virtual machine
3+
weight: 2
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Use the Azure Portal to deploy a Cobalt 100 VM
10+
11+
Azure Cobalt 100 VMs are a part of the ['D' family of Azure VMs](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/d-family). To deploy one, follow these steps:
12+
13+
1. Sign in to the [Azure Portal](https://portal.azure.com/).
14+
2. Select **Create a resource → Compute → Virtual machine**.
15+
3. Complete the *Basics* tab:
16+
![Azure Portal – Basics tab for the VM wizard#center](images/create-cobalt-vm.png)
17+
The Dpsv6-series are powered by Cobalt 100. Selecting Standard_D4ps_v6 will give you a Cobalt VM with 4 physical cores. you can change the 4 to another value if you want a different number of cores.
18+
4. Upload your public SSH key or generate a new one in the wizard.
19+
5. Disallow public inbound ports for now.
20+
5. Accept the defaults on the *Disks* tab.
21+
6. On the *Networking* tab ensure that a **Public IP** is selected. You will need it to connect later. Leave the NSG settings as *Basic* for now.
22+
23+
Click **Review + create** followed by **Create**. Azure now deploys the VM and the automatically-generated Network Security Group (NSG). Provisioning takes ~2 minutes.
24+
25+
Navigate to the **Deployment in progress** pane or open the **Notifications** panel to track progress. When the deployment succeeds proceed to the next step to expose an inbound port.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: Open an inbound port in the Network Security Group
3+
weight: 3
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Allow external traffic to TCP ports 22 (SSH) and 8080
10+
11+
Every new virtual machine created through the Azure wizard is associated with a **Network Security Group (NSG)**. An NSG acts like a stateful firewall – if no rule explicitly allows traffic, Azure blocks it.
12+
13+
In this step you will open port 22 for SSH, as well as port 8080 so that a web application running on the VM is reachable from your IP for testing. Substitute a different port if required by your workload, or a different IP range if you'd like broader accessibility.
14+
15+
1. In the Azure Portal open the newly created VM resource and click **Networking → Network settings** in the left nav.
16+
2. Select the **Network security group**.
17+
3. In the left nav click **Settings → Inbound security rules**
18+
4. Click **Add** at the top of the screen.
19+
5. Fill in the form, specifying **My IP address** as the source and 22 as the destination port:
20+
![Add inbound security rule with source of my IP and destination port 22#center](images/create-nsg-rule.png)
21+
22+
To open port 8080, follow steps 4 and 5 again, but instead choose port 8080 for the destination port.
23+
24+
You have now opened ports 22 and 8080 to your IP. In the next step you will verify connectivity.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
title: Verify connectivity to the Cobalt 100 VM
3+
weight: 4
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Connect over SSH and test the open port
10+
11+
1. On the **Overview** page for the VM copy the **Public IP address**.
12+
2. Open a terminal on your local machine and SSH to the VM (replace *azureuser* if you chose a different admin username):
13+
14+
```bash
15+
ssh -i [path to your pem file] azureuser@[public IP]
16+
```
17+
18+
Where `[public IP]` is your public IP and `[path to your pem file]` is the path to your SSH key file.
19+
20+
Accept the prompt to add the host to *known_hosts* the first time you connect.
21+
22+
### Start a simple HTTP server
23+
24+
If you do not already have an application listening on TCP 8080 you can start one temporarily:
25+
26+
```bash
27+
sudo apt update -y && sudo apt install -y python3
28+
python3 -m http.server 8080
29+
```
30+
31+
Leave this terminal open – the server runs in the foreground.
32+
33+
### Test from your local machine
34+
35+
In a second local terminal run `curl` to confirm you can reach the server through the NSG rule you created:
36+
37+
```bash
38+
curl http://[public IP]:8080
39+
```
40+
41+
Where `[public IP]` is your public IP.
42+
43+
You should see an HTML directory listing (or your application response). Receiving a response verifies that TCP 8080 is open and the VM is reachable from the public internet.
44+
45+
Terminate the Python server when you are finished testing (press `Ctrl + C`).
46+
47+
You now have an Arm-based Cobalt 100 VM with an exposed port 8080 that you can use to run any test server. To learn about optimizing .NET workloads on Cobalt, check out [Migrating a .NET application to Azure Cobalt](../../dotnet-migration/).
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: Create an Azure Cobalt 100 VM
3+
4+
minutes_to_complete: 10
5+
6+
who_is_this_for: Developers and DevOps engineers who need an Arm-based virtual machine on Azure and want to expose an application port to the internet.
7+
8+
learning_objectives:
9+
- Deploy an Arm-based Cobalt 100 virtual machine (VM) on Microsoft Azure.
10+
- Connect to the Cobalt 100 VM using SSH.
11+
- Open an inbound TCP port in the associated Network Security Group (NSG).
12+
- Verify external connectivity to the newly opened port.
13+
14+
prerequisites:
15+
- A Microsoft Azure subscription with permission to create resources
16+
- Basic familiarity with SSH
17+
18+
author: Joe Stech
19+
20+
### Tags
21+
# Tagging metadata, see the Learning Path guide for the allowed values
22+
skilllevels: Introductory
23+
subjects: Containers and Virtualization
24+
arm_ips:
25+
- Neoverse
26+
tools_software_languages:
27+
- Azure Portal
28+
- Azure CLI
29+
operatingsystems:
30+
- Linux
31+
32+
33+
further_reading:
34+
- resource:
35+
title: Azure Cobalt 100 VM documentation
36+
link: https://learn.microsoft.com/azure/virtual-machines/cobalt-100
37+
type: Documentation
38+
- resource:
39+
title: Azure Virtual Machines overview
40+
link: https://learn.microsoft.com/azure/virtual-machines/
41+
type: Documentation
42+
- resource:
43+
title: Configure Azure network security group rules
44+
link: https://learn.microsoft.com/azure/virtual-network/security-overview
45+
type: Documentation
46+
47+
48+
49+
### FIXED, DO NOT MODIFY
50+
# ================================================================================
51+
weight: 1 # _index.md always has weight of 1 to order correctly
52+
layout: "learningpathall" # All files under learning paths have this same wrapper
53+
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
54+
---
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# ================================================================================
3+
# FIXED, DO NOT MODIFY THIS FILE
4+
# ================================================================================
5+
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
6+
title: "Next Steps" # Always the same, html page title.
7+
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
8+
---
123 KB
Loading
39 KB
Loading

content/learning-paths/servers-and-cloud-computing/dotnet-migration/1-create-orchardcore-app.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ layout: learningpathall
88

99
# Create a basic OrchardCore application
1010

11-
In this section, you will learn how to create and compile a basic OrchardCore CMS application. OrchardCore is a modular and multi-tenant application framework built with ASP.NET Core, which can be used to create content-driven websites.
11+
In this section, you will learn how to create and compile a basic [OrchardCore](https://github.com/OrchardCMS/OrchardCore) CMS application, as an example of a popular Linux-based .NET workload. OrchardCore is a modular and multi-tenant application framework built with ASP.NET Core, which can be used to create content-driven websites.
1212

1313
## Step 1: Set up your development environment
1414

15-
1. Launch an Azure Cobalt instance running Ubuntu 24.04, and open port 8080 to the internet (link to instructions here)
15+
1. Launch an Azure Cobalt instance running Ubuntu 24.04, and open port 8080 to the internet. For instructions on how to do this, see the [Create an Azure Cobalt 100 VM](../../cobalt) Learning Path.
1616

1717
2. **Install .NET SDK**: Follow the instructions on the [.NET download page](https://dotnet.microsoft.com/download) to install the SDK for your operating system.
1818

@@ -23,8 +23,6 @@ In this section, you will learn how to create and compile a basic OrchardCore CM
2323
node --version
2424
```
2525

26-
27-
2826
## Step 2: Install the OrchardCore Templates
2927

3028
To start building an OrchardCore application, you need to install the OrchardCore templates. Open your terminal and run the following command:

content/learning-paths/servers-and-cloud-computing/dotnet-migration/2-add-shared-c-library.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ Now that you have a shared library, you can use it in your .NET application.
9191
3. Ensure that dotnet can find your shared library:
9292
9393
```bash
94+
export LD_LIBRARY_PATH=$(pwd):$LD_LIBRARY_PATH
9495
```
9596
9697
## Step 3: Run your application

content/learning-paths/servers-and-cloud-computing/dotnet-migration/3-any-cpu.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ By configuring your application to be architecture agnostic, you gain several be
4848
- **Efficiency**: Reduce the need for maintaining separate builds for different architectures.
4949
- **Scalability**: Easily scale your application across different hardware platforms.
5050

51-
This approach ensures that your OrchardCore application can run seamlessly on both Arm and x86 architectures, as well as 64 bit or 32 bit processors.
51+
This approach ensures that your OrchardCore application can run seamlessly on both Arm and x86 architectures.

0 commit comments

Comments
 (0)