Plan and execute Azure deployments safely and repeatably for applications and infrastructure. Use this skill when users ask to deploy, publish, release, or provision workloads in Azure. Covers Infrastructure-as-Code, idempotency, health validation, and rollback strategies.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add manu14357/zskills --skill azure-deploy --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Azure Deploy?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/manu14357-azure-deploy)More formats (shields.io, HTML) on the badges page.
---
name: azure-deploy
description: >
Plan and execute Azure deployments safely and repeatably for applications and infrastructure.
Use this skill when users ask to deploy, publish, release, or provision workloads in Azure.
Covers Infrastructure-as-Code, idempotency, health validation, and rollback strategies.
compatibility:
models: [any-llm]
cloud: azure
frameworks: [well-architected, cloud-adoption-framework]
iac: [bicep, terraform, arm-templates]
---
# Azure Deploy
Deploy workloads to Azure with a clear, low-risk process aligned with the Well-Architected Framework.
Emphasis on idempotency, repeatable IaC, comprehensive validation, and reversible rollback paths.
## Use This Skill When
- The user asks to deploy an app or service to Azure
- The user needs release automation, blue-green, or canary deployments
- The user wants Infrastructure-as-Code guidance (Bicep, Terraform)
- The user needs rollback and disaster recovery procedures
- Deployment fails and needs troubleshooting with validation steps
## Context: Deployment Maturity Model
**Stage 1: Manual** → Portal-only, error-prone, hard to audit
**Stage 2: Semi-Automated** → Scripts with some IaC, inconsistent across environments
**Stage 3: Fully Automated** → Declarative IaC, CI/CD, infrastructure versioned ← **Target**
**Stage 4: GitOps** → All changes through pull requests, fully auditable, drift detection
## Required Inputs
- **Target environment**: subscription ID, resource group, region, tenant
- **Environment stage**: dev, test, stage, prod (with distinct names)
- **Workload type**: web app, function, container app, AKS, VM, hybrid
- **Deployment method**: Azure CLI, Bicep, Terraform, ARM template, Azure Developer CLI
- **Artifact readiness**: built container image, versioned application package
- **Security context**: managed identity vs. connection string, private endpoints, secret rotation
- **Validation criteria**: health checks, endpoint tests, smoke tests, performance baselines
- **Rollback tolerance**: how many minutes can service be unavailable?
## Decision Tree
```
Is this infrastructure or application code?
├─ Infrastructure → Use Bicep or Terraform (IaC)
└─ Application → Use Azure DevOps or GitHub Actions pipeline
Is this a net-new deployment or an update?
├─ Net-new → Deploy with full validation suite
└─ Update → Blue-green or canary strategy to minimize blast radius
Do you need instant rollback capability?
├─ Yes → Blue-green deployment (dual environments, instant traffic switch)
└─ Acceptable lag → Canary (gradual rollout with monitoring)
```
## Workflow
### Phase 1: Pre-Deployment Validation (Shift-left)
1. **Verify prerequisites**:
- Subscription access confirmed (check quota, resource limits, API provider registration)
- Role assignments correct for service principals or managed identities
- Naming conventions followed (avoid reserved names, region abbreviations)
- All secrets exist in Key Vault or secure store (never hardcode)
2. **Review IaC and artifacts**:
- Bicep/Terraform syntax validated with `bicep build` or `terraform plan`
- No hardcoded values (use parameters and variables)
- Dependencies explicitly declared (`dependsOn`, references)
- Tags and metadata complete (owner, environment, cost center)
3. **Validate security posture**:
- Network isolation: private endpoints, NSGs, firewalls
- Identity: managed identity or service principal with least privilege
- Data: encryption at rest and in transit
- Secrets stored in Key Vault with access policy
### Phase 2: Artifact Preparation
1. **Build application**:
- Compile, test, and package application code
- Increment version number (semantic versioning)
- Tag artifacts with build ID or commit hash for traceability
2. **Build container (if containerized)**:
- Push to Azure Container Registry (ACR) with multi-tag (`:latest`, `:v1.2.3`, `:sha-abcd1234`)
- Scan image for vulnerabilities using Defender for container registries
- Verify image can be pulled from target deployment context
3. **Archive IaC**:
- Version Bicep or Terraform files in source control
- Pin module versions (never use `latest`)
- Generate parameter files for each environment (dev.bicepparam, prod.bicepparam)
### Phase 3: Deployment Execution
**Option A: Declarative (Recommended)**
```bash
az deployment group create \
--resource-group $RG \
--template-file main.bicep \
--parameters main.bicepparam \
--mode Incremental
```
**Option B: Terraform**
```bash
terraform init -backend-config=backend.tfvars
terraform plan -var-file=prod.tfvars -out=tfplan
terraform apply tfplan
```
4. **Monitor deployment progress**:
- Watch Azure portal Activity Log or CLI output for errors
- Check resource creation order (dependencies respected)
- Verify DNS, network routes, and storage connectivity as resources come online
### Phase 4: Post-Deployment Validation
1. **Smoke test**:
- Application endpoint responds (HTTP 200, health check passes)
- Database or data store is accessible
- Logging and monitoring are active
2. **Integration test**:
- Dependent services (API gateways, queues, caches) are reachable
- Data flows through expected paths
- Performance is within SLA targets
3. **Security validation**:
- Public exposure is blocked (no public IPs unless required)
- Managed identity credentials are working
- Key Vault access is functional
4. **Compliance check**:
- Tags and ownership metadata present
- Resource names follow naming convention
- Diagnostic logging configured
### Phase 5: Rollback & Recovery
**Immediate Rollback (Minutes)**:
- **Blue-green**: Switch traffic back to old deployment (instant)
- **Container/App Service**: Revert to previous deployment slot or image version
**Longer Rollback (Hours)**:
- Re-deploy previous IaC snapshot from version control
- Point application to previous database snapshot
- Update DNS or traffic manager to old infrastructure
**Full Disaster Recovery**:
- Restore from backup or failover to secondary region
- Validate data consistency and application state
- Perform security re-validation before resuming production traffic
## Output Contract
Return these sections in order:
1. **Deployment Plan Summary**
- Environment, resource group, region
- Estimated lead time for quota increases (if needed)
- High-level resource inventory and costs
2. **Pre-Deployment Checklist**
- Prerequisites validation commands or portal steps
- Required role assignments and permissions
- Security and networking decisions
3. **Deployment Commands or IaC**
- Exact CLI/Terraform/Bicep commands with parameter values
- Suggested order of operations
- Parallel vs. sequential resource creation notes
4. **Post-Deployment Validation Checklist**
- Smoke test steps (curl commands, portal checks)
- Integration test scenarios
- Performance baseline commands (ab, loadtest, etc.)
5. **Rollback Procedure**
- Step-by-step rollback sequence
- How long rollback takes
- Data consistency checks post-rollback
6. **Risks and Assumptions**
- Quota headroom assumptions
- Blast radius if deployment fails mid-stream
- Dependencies on external systems
## Practical Examples
### Example 1: Deploy a Container App with Traffic Split (Canary)
```
1. Deploy new revision to staging slot: 5% traffic
2. Monitor error rate and latency for 10 minutes
3. Shift to 25%, then 50%, then 100% in 10-minute intervals
4. If error spike detected, instant rollback to previous revision
```
### Example 2: Blue-Green Web App Deployment
```
1. Deploy new version to unused deployment slot (green)
2. Run smoke and integration tests against green slot
3. Swap slots: green becomes production (instant, no downtime)
4. Keep blue slot warm for quick rollback within 1 hour
```
### Example 3: Bicep Deployment with Parameter Overrides
```
az deployment group create \
--resource-group myapp-prod \
--template-file main.bicep \
--parameters main.bicepparam \
--parameters location=eastus vmCount=3 \
--mode Incremental
```
## Guardrails
- **Never hardcode secrets or connection strings** in IaC, templates, or environment variables. Use Key Vault with managed identity.
- **Always use `--mode Incremental`** for Bicep/ARM; avoid `Complete` mode unless you intend to delete unlisted resources.
- **Avoid manual post-deployment configuration** (portal UI changes). All config must be in IaC for reproducibility.
- **Call out destructive operations** (database migrations, resource deletions, scale-down) before execution.
- **Version everything**: application code, container images, IaC modules, parameter files.
- **Never use `latest` image tag in production**; pin to specific versions.
- **Test rollback procedure before going to production**; don't assume it works untested.
- **Separate credentials by environment**; dev/test/prod each have distinct service principals and Key Vault instances.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!