Configurare un carico di lavoro dell'applicazione Linux
In questa unità si apprenderà come:
- Configurare un carico di lavoro dell'applicazione Linux per connettersi a un Database di Azure per PostgreSQL usando un'identità gestita assegnata dal sistema.
- Connettersi alla macchina virtuale di Azure usando l'interfaccia della riga di comando di Azure.
- Installare gli strumenti necessari.
- Connettersi al server PostgreSQL usando
psql. - Clonare il repository che contiene l'applicazione di esempio.
- Eseguire l'applicazione e verificare che sia in grado di connettersi al server PostgreSQL usando l'identità gestita.
Ottenere l'utente attualmente connesso e l'ID della macchina virtuale
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)
Assegnare il ruolo Accesso amministratore macchina virtuale all'utente per la macchina virtuale
Per altre informazioni sui ruoli con privilegi nelle macchine virtuali di Azure, vedere Ruoli predefiniti di Azure per gli utenti con privilegi.
az role assignment create \
--assignee $USER_ID \
--scope $VM_ID \
--role "Virtual Machine Administrator Login"
Connettersi alla macchina virtuale di Azure usando l'interfaccia della riga di comando di Azure
az ssh vm --resource-group 240900-linux-postgres --name vm-1
Installare psql e Go nella macchina virtuale
Aggiornare l'elenco dei pacchetti:
sudo apt-get update
Installare il client PostgreSQL e Go (Golang) nella macchina virtuale:
sudo apt-get install -y postgresql-client golang-go
Confermare la versione di psql
psql --version
Installare l'interfaccia della riga di comando di Azure nella macchina virtuale
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Accedere all'interfaccia della riga di comando di Azure usando l'identità gestita assegnata dal sistema
az login --identity
Viene visualizzato l'output seguente:
$ 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"
}
}
]
Connettersi al server PostgreSQL usando Bash e psql
Eseguire i comandi seguenti nel computer remoto:
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
Dopo la connessione, viene visualizzato l'output seguente. Digitare il comando \q per uscire.
$ 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
$
Clonare l'applicazione di esempio
Clonare l'applicazione di esempio Tailwind Traders (Go). Eseguire i comandi seguenti nel computer remoto:
git clone https://github.com/Azure-Samples/tailwind-traders-go.git
Passare alla directory dell'applicazione:
cd tailwind-traders-go/app/
Eseguire l'applicazione:
go run main.go
L'output sarà simile al seguente:
$ 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`
Connettersi al server PostgreSQL usando l'app Tailwind Traders (Go):destinazione del token
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
Chiudere psql e disconnettersi dal computer remoto
Uscire da psql:
\q
Disconnettersi dal computer remoto:
exit
Risorse
- Accedere a una macchina virtuale Linux in Azure usando Microsoft Entra ID e OpenSSH
- Connettersi a un server di Database di Azure per PostgreSQL usando un'identità gestita
- Creare una macchina virtuale Linux con l'interfaccia della riga di comando di Azure in Azure
- Ruoli predefiniti di Azure per gli utenti con privilegi