Skip to content

Commit 68c53f1

Browse files
committed
add absolute and relative links
Signed-off-by: Aaron Wislang <aaron.wislang@microsoft.com>
1 parent 4025076 commit 68c53f1

File tree

3 files changed

+77
-36
lines changed

3 files changed

+77
-36
lines changed

modules/2-deploy-linux-postgresql-infrastructure.md

Lines changed: 55 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ You're guided through the creation of the compute resources that host your appli
66

77
There are multiple methods to deploy infrastructure in Azure, including the Azure portal, Azure CLI, and Infrastructure as Code templates including Bicep and Terraform.
88

9-
In this module, we show you how to deploy a preconfigured [Bicep](/azure/azure-resource-manager/bicep/overview?tabs=bicep) template that encapsulates the compute resources required for your application.
9+
In this module, we show you how to deploy a preconfigured [Bicep][docs-rel-1] template that encapsulates the compute resources required for your application.
1010

1111
The key resources deployed are:
1212

1313
- Virtual Machine (VM) running Linux (Ubuntu 24.04 LTS).
14-
- Azure Database for Postgres running [Postgres 16 or above](https://www.postgresql.org/download/).
15-
- A [Managed Identity](/entra/identity/managed-identities-azure-resources/overview) to enable secure access from the VM to the database.
16-
- [Role-Based Access Controls (RBAC)](/azure/role-based-access-control/overview) including roles to access the database as an administrator, and more restrictive roles for the application itself.
14+
- Azure Database for Postgres running [Postgres 16 or above][2].
15+
- A [Managed Identity][3] to enable secure access from the VM to the database.
16+
- [Role-Based Access Controls (RBAC)][docs-rel-4] including roles to access the database as an administrator, and more restrictive roles for the application itself.
1717
- A Virtual Network for both the VM and database.
1818

1919
As this is a test/dev workload, and we're looking to keep things both cost-effective and performant, we've chosen the following configuration for you:
@@ -24,11 +24,11 @@ The database SKU is a General Purpose, D2ds_v4, 2 vCores, 8-GB RAM with 3200 max
2424

2525
At the completion of the module, you delete these resources to save cost. However, you can also turn off the VM and database when not in use to save compute cost, and pay only for the storage used. This workload can also be scaled up as needed.
2626

27-
The Bicep template in this module utilizes [Azure Verified Modules (AVM)](https://azure.github.io/Azure-Verified-Modules/) which is "an initiative to consolidate and set the standards for what a good Infrastructure-as-Code module looks like". Microsoft maintains these modules and they encapsulate many best practices for deploying resources in Azure.
27+
The Bicep template in this module utilizes [Azure Verified Modules (AVM)][5] which is "an initiative to consolidate and set the standards for what a good Infrastructure-as-Code module looks like". Microsoft maintains these modules and they encapsulate many best practices for deploying resources in Azure.
2828

2929
## Azure Subscription and Azure CLI
3030

31-
If you don't have an Azure subscription, create a [free account](https://azure.microsoft.com/free/) before you begin.
31+
If you don't have an Azure subscription, create a [free account][6] before you begin.
3232

3333
This module requires Azure CLI version 2.0.30 or later.
3434

@@ -38,7 +38,7 @@ Find the version with the following command:
3838
az --version
3939
```
4040

41-
If you need to install or upgrade, see [Install Azure CLI](/cli/azure/install-azure-cli).
41+
If you need to install or upgrade, see [Install Azure CLI][docs-rel-7].
4242

4343
## Sign in to Azure using the CLI
4444

@@ -50,7 +50,7 @@ az login
5050

5151
## Create a resource group
5252

53-
A resource group is a container for related resources. All resources must be placed in a resource group. The [az group create](/cli/azure/group) command creates a resource group.
53+
A resource group is a container for related resources. All resources must be placed in a resource group. The [az group create][docs-rel-8] command creates a resource group.
5454

5555
```bash
5656
az group create \
@@ -62,8 +62,8 @@ az group create \
6262

6363
Bicep is a domain-specific language (DSL) that uses declarative syntax to deploy Azure resources. In a Bicep file, you define the infrastructure you want to deploy to Azure, and then use that file throughout the development lifecycle to repeatedly deploy your infrastructure. Your resources are deployed in a consistent manner.
6464

65-
The bicep file we're using to deploy the compute resources is located at [deploy/vm-postgres.bicep](https://github.com/Azure-Samples/linux-postgres-migration/blob/main/deploy/vm-postgres.bicep). It contains a Virtual Machine, a Virtual Network, a Managed Identity, a Network Security Group for the VM. You can read
66-
more about Bicep on [What is Bicep?](/azure/azure-resource-manager/bicep/overview?tabs=bicep).
65+
The bicep file we're using to deploy the compute resources is located at [deploy/vm-postgres.bicep][9]. It contains a Virtual Machine, a Virtual Network, a Managed Identity, a Network Security Group for the VM. You can read
66+
more about Bicep on [What is Bicep?][docs-rel-1].
6767

6868
If you run this command on your local machine, first clone the example repo to your machine.
6969

@@ -93,7 +93,7 @@ We can encode these roles and rules into our Bicep template we choose to use the
9393

9494
## Open the Resource Group in the Azure portal
9595

96-
Open the Azure portal at [https://portal.azure.com](https://portal.azure.com).
96+
Open the Azure portal at [https://portal.azure.com][10].
9797

9898
In the left-hand navigation pane, select **Resource groups**.
9999

@@ -117,13 +117,13 @@ At the top of the page, select the breadcrumb link to return to the Resource Gro
117117

118118
Note the `240900-linux-postgres-identity` User Assigned Managed Identity is listed in the Resource Group.
119119

120-
You can learn more about System Assigned and User Assigned managed identities in [What are managed identities for Azure resources?](/entra/identity/managed-identities-azure-resources/overview#managed-identity-types).
120+
You can learn more about System Assigned and User Assigned managed identities in [What are managed identities for Azure resources?][11].
121121

122122
## Add an Inbound Security Rule to the Network Security Group
123123

124124
Next you add an inbound security rule to allow SSH traffic from your current IP address to the Virtual Machine.
125125

126-
In a production scenario, you would often use [just-in-time access](/azure/defender-for-cloud/just-in-time-access-usage), [Azure Bastion](/azure/bastion/bastion-overview), or a VPN (such as Azure or a mesh VPN) to secure your Virtual Machine. These security approaches allow you to restrict access to the Virtual Machine to only when needed.
126+
In a production scenario, you would often use [just-in-time access][docs-rel-12], [Azure Bastion][docs-rel-13], or a VPN (such as Azure or a mesh VPN) to secure your Virtual Machine. These security approaches allow you to restrict access to the Virtual Machine to only when needed.
127127

128128
Now add an inbound security rule to the NSG to allow SSH traffic from your current IP address.
129129

@@ -155,7 +155,7 @@ In the upcoming section you use the identity from the Virtual Machine to adminis
155155

156156
In a production scenario, you would likely use a combination of Managed Identities, Microsoft Entra ID, and fine-grained Role-Based Access Control (RBAC) to enable your application workload to access data and manage resources in Azure securely, following the principle of least privilege.
157157

158-
Read more about these scenarios via [Microsoft Entra authentication with Azure Database for PostgreSQL - Flexible Server](/azure/postgresql/flexible-server/concepts-azure-ad-authentication) and [Use Microsoft Entra ID for authentication with Azure Database for PostgreSQL - Flexible Server](/azure/postgresql/flexible-server/how-to-configure-sign-in-azure-ad-authentication).
158+
Read more about these scenarios via [Microsoft Entra authentication with Azure Database for PostgreSQL - Flexible Server][docs-rel-14] and [Use Microsoft Entra ID for authentication with Azure Database for PostgreSQL - Flexible Server][docs-rel-15].
159159

160160
## Review the Azure Database for PostgreSQL Flexible Server Firewall Rules
161161

@@ -173,7 +173,7 @@ In production, we would likely further isolate this server from the public inter
173173

174174
Unlike the Virtual Machine, we haven't associated our Azure Database for PostgreSQL with any Virtual Network. This means we retain the option of accessing it over the public internet which is useful for test/dev scenarios.
175175

176-
To provide both security and flexibility, we enable access from the Virtual Machine via its Virtual Network using a private endpoint. The private endpoint allows the Virtual Machine to access the database without exposing it to the public internet. Read more about private endpoints in [Azure Database for PostgreSQL - Flexible Server networking with Private Link](/azure/postgresql/flexible-server/concepts-private-link).
176+
To provide both security and flexibility, we enable access from the Virtual Machine via its Virtual Network using a private endpoint. The private endpoint allows the Virtual Machine to access the database without exposing it to the public internet. Read more about private endpoints in [Azure Database for PostgreSQL - Flexible Server networking with Private Link][docs-rel-16].
177177

178178
We use the Azure portal instead of Bicep to create the private endpoint for demonstration purposes.
179179

@@ -222,16 +222,43 @@ At a later stage we will assign an additional role to the VM's managed identity
222222
Next you will explore and configure the deployed infrastructure.
223223

224224
## Resources
225-
- [Azure Verified Modules (AVM)](https://azure.github.io/Azure-Verified-Modules/)
226-
- [Install Azure CLI](/cli/azure/install-azure-cli)
227-
- [Bicep Documentation](/azure/azure-resource-manager/bicep/overview?tabs=bicep)
228-
- [Create a resource group using Azure CLI](/cli/azure/group)
229-
- [Azure Role-Based Access Controls (RBAC)](/azure/role-based-access-control/overview)
230-
- [Azure Managed Identity](/entra/identity/managed-identities-azure-resources/overview)
231-
- [What is Bicep?](/azure/azure-resource-manager/bicep/overview?tabs=bicep)
232-
- [What are managed identities for Azure resources?](/entra/identity/managed-identities-azure-resources/overview#managed-identity-types)
233-
- [Enable just-in-time access on VMs](/azure/defender-for-cloud/just-in-time-access-usage)
234-
- [What is Azure Bastion?](/azure/bastion/bastion-overview)
235-
- [Microsoft Entra authentication with Azure Database for PostgreSQL - Flexible Server](/azure/postgresql/flexible-server/concepts-azure-ad-authentication)
236-
- [Use Microsoft Entra ID for authentication with Azure Database for PostgreSQL - Flexible Server](/azure/postgresql/flexible-server/how-to-configure-sign-in-azure-ad-authentication)
237-
- [Azure Database for PostgreSQL - Flexible Server networking with Private Link](/azure/postgresql/flexible-server/concepts-private-link)
225+
- [Azure Verified Modules (AVM)][5]
226+
- [Install Azure CLI][docs-rel-7]
227+
- [Bicep Documentation][docs-rel-1]
228+
- [Create a resource group using Azure CLI][docs-rel-8]
229+
- [Azure Role-Based Access Controls (RBAC)][docs-rel-4]
230+
- [Azure Managed Identity][3]
231+
- [What is Bicep?][docs-rel-1]
232+
- [What are managed identities for Azure resources?][11]
233+
- [Enable just-in-time access on VMs][docs-rel-12]
234+
- [What is Azure Bastion?][docs-rel-13]
235+
- [Microsoft Entra authentication with Azure Database for PostgreSQL - Flexible Server][docs-rel-14]
236+
- [Use Microsoft Entra ID for authentication with Azure Database for PostgreSQL - Flexible Server][docs-rel-15]
237+
- [Azure Database for PostgreSQL - Flexible Server networking with Private Link][docs-rel-16]
238+
239+
240+
[docs-rel-1]: /azure/azure-resource-manager/bicep/overview?tabs=bicep
241+
[docs-abs-1]: https://learn.microsoft.com/azure/azure-resource-manager/bicep/overview?tabs=bicep
242+
[2]: https://www.postgresql.org/download/
243+
[3]: /entra/identity/managed-identities-azure-resources/overview
244+
[docs-rel-4]: /azure/role-based-access-control/overview
245+
[docs-abs-4]: https://learn.microsoft.com/azure/role-based-access-control/overview
246+
[5]: https://azure.github.io/Azure-Verified-Modules/
247+
[6]: https://azure.microsoft.com/free/
248+
[docs-rel-7]: /cli/azure/install-azure-cli
249+
[docs-abs-7]: https://learn.microsoft.com/cli/azure/install-azure-cli
250+
[docs-rel-8]: /cli/azure/group
251+
[docs-abs-8]: https://learn.microsoft.com/cli/azure/group
252+
[9]: https://github.com/Azure-Samples/linux-postgres-migration/blob/main/deploy/vm-postgres.bicep
253+
[10]: https://portal.azure.com
254+
[11]: /entra/identity/managed-identities-azure-resources/overview#managed-identity-types
255+
[docs-rel-12]: /azure/defender-for-cloud/just-in-time-access-usage
256+
[docs-abs-12]: https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-usage
257+
[docs-rel-13]: /azure/bastion/bastion-overview
258+
[docs-abs-13]: https://learn.microsoft.com/azure/bastion/bastion-overview
259+
[docs-rel-14]: /azure/postgresql/flexible-server/concepts-azure-ad-authentication
260+
[docs-abs-14]: https://learn.microsoft.com/azure/postgresql/flexible-server/concepts-azure-ad-authentication
261+
[docs-rel-15]: /azure/postgresql/flexible-server/how-to-configure-sign-in-azure-ad-authentication
262+
[docs-abs-15]: https://learn.microsoft.com/azure/postgresql/flexible-server/how-to-configure-sign-in-azure-ad-authentication
263+
[docs-rel-16]: /azure/postgresql/flexible-server/concepts-private-link
264+
[docs-abs-16]: https://learn.microsoft.com/azure/postgresql/flexible-server/concepts-private-link

modules/3-configure-linux-application-workload.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
In this module, you will:
66

77
- Configure a Linux application workload to connect to an Azure Database for PostgreSQL using a system-assigned managed identity.
8-
- Connect to the [Azure Virtual Machine using the Azure CLI](/azure/virtual-machines/linux/quick-create-cli).
8+
- Connect to the [Azure Virtual Machine using the Azure CLI][docs-rel-1].
99
- Install the necessary tools.
1010
- Connect to the PostgreSQL server using `psql`.
1111
- Clone the repository containing the sample application.
@@ -20,7 +20,7 @@ VM_ID=$(az vm show --resource-group 240900-linux-postgres --name vm-1 --query id
2020

2121
## Assign the 'Virtual Machine Administrator Login' role to the user for the VM
2222

23-
You can read more about the Privileged role in Azure VMs on the [Azure built-in roles for Privileged](/azure/role-based-access-control/built-in-roles/privileged#role-based-access-control-administrator).
23+
You can read more about the Privileged role in Azure VMs on the [Azure built-in roles for Privileged][docs-rel-2].
2424

2525
```bash
2626
az role assignment create \
@@ -197,7 +197,15 @@ exit
197197
```
198198

199199
## Resources
200-
- [Sign in to a Linux virtual machine in Azure using Azure AD](/entra/identity/devices/howto-vm-sign-in-azure-ad-linux)
201-
- [Connect to an Azure Database for PostgreSQL server using a managed identity](/azure/postgresql/single-server/how-to-connect-with-managed-identity)
202-
- [Create a Linux virtual machine with the Azure CLI on Azure](/azure/virtual-machines/linux/quick-create-cli).
203-
- [Azure built-in roles for Privileged](/azure/role-based-access-control/built-in-roles/privileged#role-based-access-control-administrator).
200+
- [Sign in to a Linux virtual machine in Azure using Azure AD][3]
201+
- [Connect to an Azure Database for PostgreSQL server using a managed identity][docs-rel-4]
202+
- [Create a Linux virtual machine with the Azure CLI on Azure][docs-rel-1].
203+
- [Azure built-in roles for Privileged][docs-rel-2].
204+
205+
[docs-rel-1]: /azure/virtual-machines/linux/quick-create-cli
206+
[docs-abs-1]: https://learn.microsoft.com/azure/virtual-machines/linux/quick-create-cli
207+
[docs-rel-2]: /azure/role-based-access-control/built-in-roles/privileged#role-based-access-control-administrator
208+
[docs-abs-2]: https://learn.microsoft.com/azure/role-based-access-control/built-in-roles/privileged#role-based-access-control-administrator
209+
[3]: /entra/identity/devices/howto-vm-sign-in-azure-ad-linux
210+
[docs-rel-4]: /azure/postgresql/single-server/how-to-connect-with-managed-identity
211+
[docs-abs-4]: https://learn.microsoft.com/azure/postgresql/single-server/how-to-connect-with-managed-identity

modules/4-explore-run-linux-postgresql-workloads.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,5 +394,11 @@ az deployment group create \
394394
```
395395

396396
## Resources
397-
- [Azure Blob Storage Documentation](/azure/storage/blobs/)
398-
- [Azure Role-Based Access Control (RBAC) Documentation](/azure/role-based-access-control/overview)
397+
- [Azure Blob Storage Documentation][docs-rel-1]
398+
- [Azure Role-Based Access Control (RBAC) Documentation][docs-rel-2]
399+
400+
401+
[docs-rel-1]: /azure/storage/blobs/
402+
[docs-abs-1]: https://learn.microsoft.com/azure/storage/blobs/
403+
[docs-rel-2]: /azure/role-based-access-control/overview
404+
[docs-abs-2]: https://learn.microsoft.com/azure/role-based-access-control/overview

0 commit comments

Comments
 (0)