Configuración de una carga de trabajo de aplicación Linux
En esta unidad, aprenderá a:
- Configure una carga de trabajo de aplicación Linux para conectarse a Azure Database for PostgreSQL mediante una identidad administrada asignada por el sistema.
- Conéctese a la máquina virtual de Azure mediante la CLI de Azure.
- Instale las herramientas necesarias.
- Conéctese al servidor de PostgreSQL mediante
psql
. - Clone el repositorio que contiene la aplicación de ejemplo.
- Ejecute la aplicación y confirme que puede conectarse al servidor PostgreSQL mediante la identidad administrada.
Obtención del usuario que ha iniciado sesión actualmente y el identificador de máquina virtual
USER_ID=$(az ad signed-in-user show --query id --output tsv)
VM_ID=$(az vm show --resource-group 240900-linux-postgres --name vm-1 --query id --output tsv)
Asignación del rol de inicio de sesión de administrador de máquinas virtuales al usuario para la máquina virtual
Puede obtener más información sobre los roles con privilegios para máquinas virtuales de Azure en roles integrados de Azure para Privileged.
az role assignment create \
--assignee $USER_ID \
--scope $VM_ID \
--role "Virtual Machine Administrator Login"
Conexión a la máquina virtual de Azure mediante la CLI de Azure
az ssh vm --resource-group 240900-linux-postgres --name vm-1
Instalación de psql y Go en la máquina virtual
Actualice la lista de paquetes:
sudo apt-get update
Instale el cliente PostgreSQL y Go (Golang) en la máquina virtual:
sudo apt-get install -y postgresql-client golang-go
Confirmación de la versión de psql
psql --version
Instalación de la CLI de Azure en la máquina virtual
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Inicie sesión en la CLI de Azure mediante la identidad administrada asignada por el sistema
az login --identity
Se mostrará la siguiente salida:
$ az login --identity
[
{
"environmentName": "AzureCloud",
"homeTenantId": "b4c72be8-cae1-4584-be77-62b1e94ad0dc",
"id": "57039e18-c12e-4c87-a3e8-bf497991699d",
"isDefault": true,
"managedByTenants": [],
"name": "CloudNative",
"state": "Enabled",
"tenantId": "b4c72be8-cae1-4584-be77-62b1e94ad0dc",
"user": {
"assignedIdentityInfo": "MSI",
"name": "systemAssignedIdentity",
"type": "servicePrincipal"
}
}
]
Conexión al servidor PostgreSQL mediante Bash y psql
Ejecute los siguientes comandos en la máquina remota:
MANAGED_IDENTITY_NAME=240900-linux-postgres-identity
export AZURE_CLIENT_ID=$(az identity show --resource-group 240900-linux-postgres --name $MANAGED_IDENTITY_NAME --query "clientId" -o tsv)
PG_NAME=$(az postgres flexible-server list --resource-group 240900-linux-postgres --query "[0].name" -o tsv)
# Set psql environment variables
export PGHOST="${PG_NAME}.privatelink.postgres.database.azure.com"
export PGPASSWORD=$(curl -s "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fossrdbms-aad.database.windows.net&client_id=${AZURE_CLIENT_ID}" -H Metadata:true | jq -r .access_token)
export PGUSER=$MANAGED_IDENTITY_NAME
export PGDATABASE=postgres
# Log in by using psql
psql
Después de conectarse, aparece la salida siguiente. Escriba el comando \q
para salir.
$ psql
psql (16.4 (Ubuntu 16.4-0ubuntu0.24.04.2))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=> \q
$
Clonación de la aplicación de ejemplo
Clone la aplicación de ejemplo, Tailwind Traders (Go). Ejecute los siguientes comandos en la máquina remota:
git clone https://github.com/Azure-Samples/tailwind-traders-go.git
Cambie al directorio de la aplicación:
cd tailwind-traders-go/app/
Ejecute la aplicación:
go run main.go
La salida debe ser similar a:
$ go run main.go
go: downloading github.com/magefile/mage v1.15.0
go: downloading github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0
go: downloading github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0
go: downloading github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0
go: downloading github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2
go: downloading golang.org/x/crypto v0.26.0
go: downloading golang.org/x/net v0.28.0
go: downloading github.com/google/uuid v1.6.0
go: downloading github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
go: downloading github.com/kylelemons/godebug v1.1.0
go: downloading github.com/golang-jwt/jwt/v5 v5.2.1
go: downloading golang.org/x/text v0.17.0
Targets:
app:connectionString outputs a connection string for the database from env vars
app:ping pings the database
app:serve runs a web server for our application
app:tables lists the tables in the database
app:token gets a token using `azidentity.NewDefaultAzureCredential`
Conexión al servidor PostgreSQL mediante el destino de app:token de Tailwind Traders (Go)
MANAGED_IDENTITY_NAME=240900-linux-postgres-identity
export AZURE_CLIENT_ID=$(az identity show --resource-group 240900-linux-postgres --name $MANAGED_IDENTITY_NAME --query "clientId" -o tsv)
PG_NAME=$(az postgres flexible-server list --resource-group 240900-linux-postgres --query "[0].name" -o tsv)
# psql
export PGHOST="${PG_NAME}.privatelink.postgres.database.azure.com"
export PGPASSWORD=$(go run main.go app:token)
export PGUSER=$MANAGED_IDENTITY_NAME
export PGDATABASE=postgres
# Log in by using psql
psql
Salida de psql y desconexión de la máquina remota
Salir de psql
:
\q
Desconecte de la máquina remota:
exit
Recursos
- Inicio de sesión en una máquina virtual Linux en Azure mediante el identificador de Entra de Microsoft y OpenSSH
- Conexión a un servidor de Azure Database for PostgreSQL mediante una identidad administrada
- Creación de una máquina virtual Linux con la CLI de Azure en Azure
- Roles integrados de Azure para Privileged