container-superposition 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
# Azure CLI Overlay
|
|
2
|
+
|
|
3
|
+
Azure Command Line Interface for managing Microsoft Azure resources from your development container.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Azure CLI** - Latest Azure command-line interface (az)
|
|
8
|
+
- **Multi-service support** - Manage VMs, Storage, App Service, AKS, and 100+ Azure services
|
|
9
|
+
- **Interactive mode** - `az interactive` for easier command discovery
|
|
10
|
+
- **Cloud Shell parity** - Same experience as Azure Cloud Shell
|
|
11
|
+
- **JSON/YAML/Table output** - Flexible output formats
|
|
12
|
+
|
|
13
|
+
## Authentication
|
|
14
|
+
|
|
15
|
+
### Interactive Login
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Login with browser-based authentication
|
|
19
|
+
az login
|
|
20
|
+
|
|
21
|
+
# Login with device code (for remote/SSH scenarios)
|
|
22
|
+
az login --use-device-code
|
|
23
|
+
|
|
24
|
+
# Verify authentication
|
|
25
|
+
az account show
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Service Principal (CI/CD)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Create service principal
|
|
32
|
+
az ad sp create-for-rbac --name myapp --role Contributor
|
|
33
|
+
|
|
34
|
+
# Login with service principal
|
|
35
|
+
az login --service-principal \
|
|
36
|
+
--username <app-id> \
|
|
37
|
+
--password <password-or-cert> \
|
|
38
|
+
--tenant <tenant-id>
|
|
39
|
+
|
|
40
|
+
# Or use environment variables
|
|
41
|
+
export ARM_CLIENT_ID=<app-id>
|
|
42
|
+
export ARM_CLIENT_SECRET=<password>
|
|
43
|
+
export ARM_SUBSCRIPTION_ID=<subscription-id>
|
|
44
|
+
export ARM_TENANT_ID=<tenant-id>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Managed Identity
|
|
48
|
+
|
|
49
|
+
When running in Azure (VM, App Service, Functions):
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Login with system-assigned managed identity
|
|
53
|
+
az login --identity
|
|
54
|
+
|
|
55
|
+
# Login with user-assigned managed identity
|
|
56
|
+
az login --identity --username <client-id>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Common Commands
|
|
60
|
+
|
|
61
|
+
### Account and Subscription Management
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# List subscriptions
|
|
65
|
+
az account list --output table
|
|
66
|
+
|
|
67
|
+
# Show current subscription
|
|
68
|
+
az account show
|
|
69
|
+
|
|
70
|
+
# Set active subscription
|
|
71
|
+
az account set --subscription "My Subscription"
|
|
72
|
+
|
|
73
|
+
# Get access token (useful for API calls)
|
|
74
|
+
az account get-access-token
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Resource Groups
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# List resource groups
|
|
81
|
+
az group list --output table
|
|
82
|
+
|
|
83
|
+
# Create resource group
|
|
84
|
+
az group create \
|
|
85
|
+
--name myResourceGroup \
|
|
86
|
+
--location eastus
|
|
87
|
+
|
|
88
|
+
# Delete resource group (deletes all resources)
|
|
89
|
+
az group delete --name myResourceGroup --yes --no-wait
|
|
90
|
+
|
|
91
|
+
# Export resource group template
|
|
92
|
+
az group export --name myResourceGroup
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Virtual Machines
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# List VMs
|
|
99
|
+
az vm list --output table
|
|
100
|
+
|
|
101
|
+
# Create VM
|
|
102
|
+
az vm create \
|
|
103
|
+
--resource-group myResourceGroup \
|
|
104
|
+
--name myVM \
|
|
105
|
+
--image Ubuntu2204 \
|
|
106
|
+
--size Standard_B2s \
|
|
107
|
+
--admin-username azureuser \
|
|
108
|
+
--generate-ssh-keys
|
|
109
|
+
|
|
110
|
+
# Start VM
|
|
111
|
+
az vm start --resource-group myResourceGroup --name myVM
|
|
112
|
+
|
|
113
|
+
# Stop VM (deallocate to stop billing)
|
|
114
|
+
az vm deallocate --resource-group myResourceGroup --name myVM
|
|
115
|
+
|
|
116
|
+
# Get VM IP address
|
|
117
|
+
az vm show \
|
|
118
|
+
--resource-group myResourceGroup \
|
|
119
|
+
--name myVM \
|
|
120
|
+
--show-details \
|
|
121
|
+
--query publicIps \
|
|
122
|
+
--output tsv
|
|
123
|
+
|
|
124
|
+
# SSH into VM
|
|
125
|
+
ssh azureuser@<vm-ip>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Storage Accounts
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# List storage accounts
|
|
132
|
+
az storage account list --output table
|
|
133
|
+
|
|
134
|
+
# Create storage account
|
|
135
|
+
az storage account create \
|
|
136
|
+
--name mystorageaccount \
|
|
137
|
+
--resource-group myResourceGroup \
|
|
138
|
+
--location eastus \
|
|
139
|
+
--sku Standard_LRS
|
|
140
|
+
|
|
141
|
+
# Get storage account keys
|
|
142
|
+
az storage account keys list \
|
|
143
|
+
--account-name mystorageaccount \
|
|
144
|
+
--resource-group myResourceGroup
|
|
145
|
+
|
|
146
|
+
# Create blob container
|
|
147
|
+
az storage container create \
|
|
148
|
+
--name mycontainer \
|
|
149
|
+
--account-name mystorageaccount
|
|
150
|
+
|
|
151
|
+
# Upload file to blob storage
|
|
152
|
+
az storage blob upload \
|
|
153
|
+
--account-name mystorageaccount \
|
|
154
|
+
--container-name mycontainer \
|
|
155
|
+
--name myfile.txt \
|
|
156
|
+
--file ./local-file.txt
|
|
157
|
+
|
|
158
|
+
# Download blob
|
|
159
|
+
az storage blob download \
|
|
160
|
+
--account-name mystorageaccount \
|
|
161
|
+
--container-name mycontainer \
|
|
162
|
+
--name myfile.txt \
|
|
163
|
+
--file ./downloaded-file.txt
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### App Service (Web Apps)
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# List app service plans
|
|
170
|
+
az appservice plan list --output table
|
|
171
|
+
|
|
172
|
+
# Create app service plan
|
|
173
|
+
az appservice plan create \
|
|
174
|
+
--name myAppServicePlan \
|
|
175
|
+
--resource-group myResourceGroup \
|
|
176
|
+
--sku B1
|
|
177
|
+
|
|
178
|
+
# Create web app
|
|
179
|
+
az webapp create \
|
|
180
|
+
--name myWebApp \
|
|
181
|
+
--resource-group myResourceGroup \
|
|
182
|
+
--plan myAppServicePlan \
|
|
183
|
+
--runtime "NODE:20-lts"
|
|
184
|
+
|
|
185
|
+
# Deploy from GitHub
|
|
186
|
+
az webapp deployment source config \
|
|
187
|
+
--name myWebApp \
|
|
188
|
+
--resource-group myResourceGroup \
|
|
189
|
+
--repo-url https://github.com/user/repo \
|
|
190
|
+
--branch main \
|
|
191
|
+
--manual-integration
|
|
192
|
+
|
|
193
|
+
# View logs
|
|
194
|
+
az webapp log tail --name myWebApp --resource-group myResourceGroup
|
|
195
|
+
|
|
196
|
+
# Restart web app
|
|
197
|
+
az webapp restart --name myWebApp --resource-group myResourceGroup
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### AKS (Azure Kubernetes Service)
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# List AKS clusters
|
|
204
|
+
az aks list --output table
|
|
205
|
+
|
|
206
|
+
# Create AKS cluster
|
|
207
|
+
az aks create \
|
|
208
|
+
--resource-group myResourceGroup \
|
|
209
|
+
--name myAKSCluster \
|
|
210
|
+
--node-count 2 \
|
|
211
|
+
--enable-addons monitoring \
|
|
212
|
+
--generate-ssh-keys
|
|
213
|
+
|
|
214
|
+
# Get credentials for kubectl
|
|
215
|
+
az aks get-credentials \
|
|
216
|
+
--resource-group myResourceGroup \
|
|
217
|
+
--name myAKSCluster
|
|
218
|
+
|
|
219
|
+
# Verify kubectl context
|
|
220
|
+
kubectl config current-context
|
|
221
|
+
|
|
222
|
+
# Scale cluster
|
|
223
|
+
az aks scale \
|
|
224
|
+
--resource-group myResourceGroup \
|
|
225
|
+
--name myAKSCluster \
|
|
226
|
+
--node-count 3
|
|
227
|
+
|
|
228
|
+
# Upgrade cluster
|
|
229
|
+
az aks upgrade \
|
|
230
|
+
--resource-group myResourceGroup \
|
|
231
|
+
--name myAKSCluster \
|
|
232
|
+
--kubernetes-version 1.28.0
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Azure Functions
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Create function app
|
|
239
|
+
az functionapp create \
|
|
240
|
+
--resource-group myResourceGroup \
|
|
241
|
+
--consumption-plan-location eastus \
|
|
242
|
+
--runtime node \
|
|
243
|
+
--runtime-version 20 \
|
|
244
|
+
--functions-version 4 \
|
|
245
|
+
--name myFunctionApp \
|
|
246
|
+
--storage-account mystorageaccount
|
|
247
|
+
|
|
248
|
+
# Deploy function code
|
|
249
|
+
az functionapp deployment source config-zip \
|
|
250
|
+
--resource-group myResourceGroup \
|
|
251
|
+
--name myFunctionApp \
|
|
252
|
+
--src function.zip
|
|
253
|
+
|
|
254
|
+
# List functions
|
|
255
|
+
az functionapp function show \
|
|
256
|
+
--resource-group myResourceGroup \
|
|
257
|
+
--name myFunctionApp
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Azure SQL Database
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Create SQL server
|
|
264
|
+
az sql server create \
|
|
265
|
+
--name myserver \
|
|
266
|
+
--resource-group myResourceGroup \
|
|
267
|
+
--location eastus \
|
|
268
|
+
--admin-user myadmin \
|
|
269
|
+
--admin-password MyP@ssw0rd!
|
|
270
|
+
|
|
271
|
+
# Create SQL database
|
|
272
|
+
az sql db create \
|
|
273
|
+
--resource-group myResourceGroup \
|
|
274
|
+
--server myserver \
|
|
275
|
+
--name mydb \
|
|
276
|
+
--service-objective S0
|
|
277
|
+
|
|
278
|
+
# Configure firewall rule
|
|
279
|
+
az sql server firewall-rule create \
|
|
280
|
+
--resource-group myResourceGroup \
|
|
281
|
+
--server myserver \
|
|
282
|
+
--name AllowMyIP \
|
|
283
|
+
--start-ip-address 1.2.3.4 \
|
|
284
|
+
--end-ip-address 1.2.3.4
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Container Instances (ACI)
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Create container instance
|
|
291
|
+
az container create \
|
|
292
|
+
--resource-group myResourceGroup \
|
|
293
|
+
--name mycontainer \
|
|
294
|
+
--image mcr.microsoft.com/azuredocs/aci-helloworld \
|
|
295
|
+
--dns-name-label mycontainer-demo \
|
|
296
|
+
--ports 80
|
|
297
|
+
|
|
298
|
+
# Show container details
|
|
299
|
+
az container show \
|
|
300
|
+
--resource-group myResourceGroup \
|
|
301
|
+
--name mycontainer
|
|
302
|
+
|
|
303
|
+
# View logs
|
|
304
|
+
az container logs \
|
|
305
|
+
--resource-group myResourceGroup \
|
|
306
|
+
--name mycontainer
|
|
307
|
+
|
|
308
|
+
# Delete container
|
|
309
|
+
az container delete \
|
|
310
|
+
--resource-group myResourceGroup \
|
|
311
|
+
--name mycontainer \
|
|
312
|
+
--yes
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## Configuration
|
|
316
|
+
|
|
317
|
+
### Set Default Values
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# Set default resource group
|
|
321
|
+
az configure --defaults group=myResourceGroup
|
|
322
|
+
|
|
323
|
+
# Set default location
|
|
324
|
+
az configure --defaults location=eastus
|
|
325
|
+
|
|
326
|
+
# View all defaults
|
|
327
|
+
az configure --list-defaults
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### Output Formats
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
# JSON (default)
|
|
334
|
+
az vm list --output json
|
|
335
|
+
|
|
336
|
+
# Table (human-readable)
|
|
337
|
+
az vm list --output table
|
|
338
|
+
|
|
339
|
+
# TSV (tab-separated, good for scripting)
|
|
340
|
+
az vm list --output tsv
|
|
341
|
+
|
|
342
|
+
# YAML
|
|
343
|
+
az vm list --output yaml
|
|
344
|
+
|
|
345
|
+
# JSONC (JSON with comments)
|
|
346
|
+
az vm list --output jsonc
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### Query with JMESPath
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
# Filter VMs by name
|
|
353
|
+
az vm list --query "[?name=='myVM']"
|
|
354
|
+
|
|
355
|
+
# Get specific fields
|
|
356
|
+
az vm list --query "[].{Name:name, ResourceGroup:resourceGroup}" --output table
|
|
357
|
+
|
|
358
|
+
# Filter by location
|
|
359
|
+
az vm list --query "[?location=='eastus']" --output table
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## Use Cases
|
|
363
|
+
|
|
364
|
+
### Cloud Infrastructure Management
|
|
365
|
+
|
|
366
|
+
- Deploy and manage virtual machines
|
|
367
|
+
- Configure load balancers and networking
|
|
368
|
+
- Manage storage accounts and databases
|
|
369
|
+
|
|
370
|
+
### Container and Kubernetes Operations
|
|
371
|
+
|
|
372
|
+
- Deploy to Azure Container Instances
|
|
373
|
+
- Manage AKS clusters
|
|
374
|
+
- Push images to Azure Container Registry
|
|
375
|
+
|
|
376
|
+
### Application Deployment
|
|
377
|
+
|
|
378
|
+
- Deploy web apps and functions
|
|
379
|
+
- Configure CI/CD pipelines
|
|
380
|
+
- Manage application settings
|
|
381
|
+
|
|
382
|
+
### DevOps and Automation
|
|
383
|
+
|
|
384
|
+
- Infrastructure as Code with ARM templates
|
|
385
|
+
- Automated resource provisioning
|
|
386
|
+
- Integration with CI/CD pipelines
|
|
387
|
+
|
|
388
|
+
## Interactive Mode
|
|
389
|
+
|
|
390
|
+
For easier command discovery and auto-completion:
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
# Start interactive mode
|
|
394
|
+
az interactive
|
|
395
|
+
|
|
396
|
+
# Features:
|
|
397
|
+
# - Auto-completion
|
|
398
|
+
# - Command descriptions
|
|
399
|
+
# - Example snippets
|
|
400
|
+
# - Parameter help
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
## Security Best Practices
|
|
404
|
+
|
|
405
|
+
### Credential Management
|
|
406
|
+
|
|
407
|
+
⚠️ **Never commit Azure credentials to version control**
|
|
408
|
+
|
|
409
|
+
**Secure Methods:**
|
|
410
|
+
|
|
411
|
+
1. **Interactive Login** - For development
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
az login
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
2. **Service Principal** - For automation
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
# Create with limited permissions
|
|
421
|
+
az ad sp create-for-rbac \
|
|
422
|
+
--name myapp \
|
|
423
|
+
--role Reader \
|
|
424
|
+
--scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
3. **Managed Identity** - For Azure resources
|
|
428
|
+
- No credentials needed
|
|
429
|
+
- Automatically managed by Azure
|
|
430
|
+
|
|
431
|
+
4. **Azure Key Vault** - Store secrets
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
# Create key vault
|
|
435
|
+
az keyvault create --name myKeyVault --resource-group myResourceGroup
|
|
436
|
+
|
|
437
|
+
# Store secret
|
|
438
|
+
az keyvault secret set --vault-name myKeyVault --name mySecret --value "secretValue"
|
|
439
|
+
|
|
440
|
+
# Retrieve secret
|
|
441
|
+
az keyvault secret show --vault-name myKeyVault --name mySecret --query value -o tsv
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### Least Privilege
|
|
445
|
+
|
|
446
|
+
Always use role-based access control (RBAC) with minimal permissions:
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
# Assign role to service principal
|
|
450
|
+
az role assignment create \
|
|
451
|
+
--assignee <app-id> \
|
|
452
|
+
--role "Storage Blob Data Contributor" \
|
|
453
|
+
--scope /subscriptions/{subscription-id}/resourceGroups/{resource-group}
|
|
454
|
+
|
|
455
|
+
# List available roles
|
|
456
|
+
az role definition list --output table
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
## Troubleshooting
|
|
460
|
+
|
|
461
|
+
### az command not found
|
|
462
|
+
|
|
463
|
+
Rebuild container:
|
|
464
|
+
|
|
465
|
+
- **VS Code:** `Cmd+Shift+P` → "Dev Containers: Rebuild Container"
|
|
466
|
+
|
|
467
|
+
### Authentication failures
|
|
468
|
+
|
|
469
|
+
```bash
|
|
470
|
+
# Clear cached credentials
|
|
471
|
+
az account clear
|
|
472
|
+
|
|
473
|
+
# Re-login
|
|
474
|
+
az login
|
|
475
|
+
|
|
476
|
+
# Verify authentication
|
|
477
|
+
az account show
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### Wrong subscription active
|
|
481
|
+
|
|
482
|
+
```bash
|
|
483
|
+
# List all subscriptions
|
|
484
|
+
az account list --output table
|
|
485
|
+
|
|
486
|
+
# Set correct subscription
|
|
487
|
+
az account set --subscription "My Subscription"
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### Permission errors
|
|
491
|
+
|
|
492
|
+
```bash
|
|
493
|
+
# Check current identity
|
|
494
|
+
az account show
|
|
495
|
+
|
|
496
|
+
# List role assignments
|
|
497
|
+
az role assignment list --assignee <your-email> --output table
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### Resource already exists
|
|
501
|
+
|
|
502
|
+
Azure resource names often need to be globally unique (e.g., storage accounts, web apps):
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
# Check name availability
|
|
506
|
+
az storage account check-name --name mystorageaccount
|
|
507
|
+
|
|
508
|
+
# Use unique suffix
|
|
509
|
+
UNIQUE_SUFFIX=$RANDOM
|
|
510
|
+
az storage account create --name mystorageaccount$UNIQUE_SUFFIX ...
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
## Azure CLI Extensions
|
|
514
|
+
|
|
515
|
+
Install additional functionality:
|
|
516
|
+
|
|
517
|
+
```bash
|
|
518
|
+
# List available extensions
|
|
519
|
+
az extension list-available --output table
|
|
520
|
+
|
|
521
|
+
# Install extension
|
|
522
|
+
az extension add --name azure-devops
|
|
523
|
+
|
|
524
|
+
# Update extension
|
|
525
|
+
az extension update --name azure-devops
|
|
526
|
+
|
|
527
|
+
# List installed extensions
|
|
528
|
+
az extension list
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
Popular extensions:
|
|
532
|
+
|
|
533
|
+
- **azure-devops** - Azure DevOps integration
|
|
534
|
+
- **aks-preview** - AKS preview features
|
|
535
|
+
- **application-insights** - Application Insights management
|
|
536
|
+
|
|
537
|
+
## Related Overlays
|
|
538
|
+
|
|
539
|
+
- **terraform** - Infrastructure as Code for Azure resources
|
|
540
|
+
- **pulumi** - Modern IaC using TypeScript/Python/Go
|
|
541
|
+
- **kubectl-helm** - For AKS cluster management
|
|
542
|
+
- **nodejs/python/dotnet** - For Azure Functions development
|
|
543
|
+
- **docker-sock/docker-in-docker** - For container development
|
|
544
|
+
|
|
545
|
+
## Additional Resources
|
|
546
|
+
|
|
547
|
+
- [Azure CLI Documentation](https://docs.microsoft.com/en-us/cli/azure/)
|
|
548
|
+
- [Azure CLI Command Reference](https://docs.microsoft.com/en-us/cli/azure/reference-index)
|
|
549
|
+
- [Azure CLI Interactive Mode](https://docs.microsoft.com/en-us/cli/azure/interactive-azure-cli)
|
|
550
|
+
- [Azure RBAC Documentation](https://docs.microsoft.com/en-us/azure/role-based-access-control/)
|
|
551
|
+
- [JMESPath Tutorial](https://jmespath.org/tutorial.html) - For query filtering
|