Konfigurieren einer Linux-Anwendungsworkload
In dieser Einheit lernen Sie Folgendes:
- Konfigurieren Sie eine Linux-Anwendungsworkload, um eine Verbindung mit Azure Database for PostgreSQL mithilfe einer systemseitig zugewiesenen verwalteten Identität herzustellen.
- Stellen Sie mithilfe der Azure-Befehlszeilenschnittstelle eine Verbindung mit der Azure-VM her.
- Installieren Sie die erforderlichen Tools.
- Stellen Sie mithilfe von
psqleine Verbindung mit dem PostgreSQL-Server her. - Klonen Sie das Repositorys mit der Beispielanwendung.
- Führen Sie die Anwendung aus, und vergewissern Sie sich, dass sie mithilfe der verwalteten Identität eine Verbindung mit dem PostgreSQL-Server herstellen kann.
Abrufen des aktuell angemeldeten Benutzers und der VM-ID
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)
Zuweisen der Rolle „Anmeldeinformationen des VM-Administrators“ zu dem Benutzer für die VM
Weitere Informationen zu Rollen mit erhöhten Rechten für Azure-VMs finden Sie unter Integrierte Azure-Rollen für „Privilegiert“.
az role assignment create \
--assignee $USER_ID \
--scope $VM_ID \
--role "Virtual Machine Administrator Login"
Herstellen einer Verbindung mit der Azure-VM mithilfe der Azure-Befehlszeilenschnittstelle
az ssh vm --resource-group 240900-linux-postgres --name vm-1
Installieren von psql und Go auf der VM
Aktualisieren Sie die Paketliste:
sudo apt-get update
Installieren Sie den PostgreSQL-Client und Go (Golang) auf der VM:
sudo apt-get install -y postgresql-client golang-go
Bestätigen der Version von psql
psql --version
Installieren der Azure-Befehlszeilenschnittstelle auf der VM
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Anmelden bei der Azure-Befehlszeilenschnittstelle mit der systemseitig zugewiesenen verwalteten Identität
az login --identity
Die folgende Ausgabe wird angezeigt:
$ 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"
}
}
]
Herstellen einer Verbindung mit dem PostgreSQL-Server mithilfe von Bash und psql
Führen Sie die folgenden Befehle auf dem Remotecomputer aus:
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
Nach dem Herstellen der Verbindung wird die folgende Ausgabe angezeigt. Geben Sie den Befehl \q ein, um den Vorgang zu beenden.
$ 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
$
Klonen der Beispielanwendung
Klonen Sie die Beispielanwendung Tailwind Traders (Go). Führen Sie die folgenden Befehle auf dem Remotecomputer aus:
git clone https://github.com/Azure-Samples/tailwind-traders-go.git
Wechseln Sie zum Anwendungsverzeichnis:
cd tailwind-traders-go/app/
Führen Sie die Anwendung aus:
go run main.go
Die Ausgabe sollte in etwa wie folgt aussehen:
$ 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`
Herstellen einer Verbindung mit dem PostgreSQL-Server mit dem Ziel „app:token“ von Tailwind Trader (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
Beenden von psql und Trennen der Verbindung vom Remotecomputer
Beenden Sie psql:
\q
Trennen Sie die Verbindung mit dem Remotecomputer:
exit
Ressourcen
- Anmelden bei einer Linux-VM in Azure mithilfe von Microsoft Entra ID und OpenSSH
- Herstellen einer Verbindung mit einem Azure Database for PostgreSQL-Server mithilfe einer verwalteten Identität
- Erstellen einer Linux-VM mithilfe der Azure-Befehlszeilenschnittstelle in Azure
- Integrierte Azure-Rollen für „Privilegiert“