Azure CLI — Configuration
$az login
$az account list --output table
$az account set --subscription 'Mon Abonnement'
$az group create --name rg-projet --location westeurope
Compute
Machines virtuelles
$az vm create --resource-group rg-projet --name vm-web --image Ubuntu2204 --admin-username azureuser --generate-ssh-keys --size Standard_B2s
$az vm list --resource-group rg-projet --output table
$az vm start --resource-group rg-projet --name vm-web
$az vm stop --resource-group rg-projet --name vm-web
$az vm delete --resource-group rg-projet --name vm-web --yes
Azure Kubernetes Service (AKS)
$az aks create --resource-group rg-projet --name aks-cluster --node-count 3 --generate-ssh-keys --network-plugin azure
$az aks get-credentials --resource-group rg-projet --name aks-cluster
$az aks scale --resource-group rg-projet --name aks-cluster --node-count 5
App Service
$az webapp create --resource-group rg-projet --plan plan-web --name mon-app --runtime 'NODE:20-lts'
$az webapp deployment source config --resource-group rg-projet --name mon-app --repo-url https://github.com/user/repo --branch main
Stockage
Blob Storage
$az storage account create --name stockageprojet --resource-group rg-projet --location westeurope --sku Standard_LRS
$az storage container create --name conteneur --account-name stockageprojet
$az storage blob upload --account-name stockageprojet --container-name conteneur --name fichier.txt --file ./fichier.txt
$az storage blob list --account-name stockageprojet --container-name conteneur --output table
$az storage blob download --account-name stockageprojet --container-name conteneur --name fichier.txt --file ./fichier-dl.txt
Réseau
VNet & Sous-réseaux
$az network vnet create --resource-group rg-projet --name vnet-prod --address-prefix 10.0.0.0/16 --subnet-name subnet-web --subnet-prefix 10.0.1.0/24
Network Security Group
$az network nsg create --resource-group rg-projet --name nsg-web
$az network nsg rule create --resource-group rg-projet --nsg-name nsg-web --name AllowHTTP --priority 100 --destination-port-ranges 80 443 --access Allow --protocol Tcp --direction Inbound
Load Balancer
$az network lb create --resource-group rg-projet --name lb-web --sku Standard --frontend-ip-name frontend --backend-pool-name pool-web
Identité & Sécurité
Entra ID (Azure AD)
$az ad user list --output table
$az ad group create --display-name devops-team --mail-nickname devops
RBAC
$az role assignment create --assignee [email protected] --role Contributor --scope /subscriptions/{sub-id}/resourceGroups/rg-projet
$az role assignment list --resource-group rg-projet --output table
Key Vault
$az keyvault create --name kv-projet --resource-group rg-projet --location westeurope
$az keyvault secret set --vault-name kv-projet --name db-password --value 'MotDePasseSecret'
$az keyvault secret show --vault-name kv-projet --name db-password --query value --output tsv
Base de données
Azure SQL
$az sql server create --name sql-projet --resource-group rg-projet --location westeurope --admin-user sqladmin --admin-password 'P@ssw0rd'
$az sql db create --resource-group rg-projet --server sql-projet --name db-app --service-objective S1
PostgreSQL Flexible Server
$az postgres flexible-server create --resource-group rg-projet --name pg-projet --location westeurope --admin-user pgadmin --admin-password 'P@ssw0rd' --sku-name Standard_B1ms --tier Burstable
DevOps & Container Registry
Azure Container Registry (ACR)
$az acr create --resource-group rg-projet --name acrprojet --sku Basic
$az acr login --name acrprojet
$docker tag mon-app:latest acrprojet.azurecr.io/mon-app:v1
$docker push acrprojet.azurecr.io/mon-app:v1
Attacher ACR à AKS :
$az aks update --resource-group rg-projet --name aks-cluster --attach-acr acrprojet
Azure Pipelines (exemple)
trigger:
- main
pool:
vmImage: "ubuntu-latest"
steps:
- task: NodeTool@0
inputs:
versionSpec: "20.x"
- script: |
npm ci
npm run build
npm test
displayName: "Build & Test"
- task: AzureWebApp@1
inputs:
azureSubscription: "ma-connexion"
appName: "mon-app"
package: "$(System.DefaultWorkingDirectory)"Bonnes pratiques
| Pratique | Détail |
|---|---|
| Resource Groups | Un groupe par environnement (rg-dev, rg-staging, rg-prod) |
| Nommage | Convention cohérente : {type}-{projet}-{env} |
| Tags | Toujours taguer : environment, owner, cost-center |
| Coûts | Activer Azure Cost Management et les alertes budgétaires |
| Verrous | CanNotDelete sur les ressources critiques en production |
| IaC | Préférer Terraform ou Bicep aux déploiements manuels |
| Monitoring | Azure Monitor + Log Analytics sur chaque ressource |