opencode-skills-collection 4.0.68 → 4.0.69
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/bundled-skills/.antigravity-install-manifest.json +266 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6943 -323
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arm-templates
|
|
3
|
+
description: Deploy Azure resources with ARM templates and Bicep. Create modular deployments
|
|
4
|
+
and manage dependencies. Use when deploying Azure-native IaC.
|
|
5
|
+
category: devops
|
|
6
|
+
risk: critical
|
|
7
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-20'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the relevant OS/platform tooling and privileged access where
|
|
14
|
+
noted. Docs-only; helper scripts and templates not bundled.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# ARM Templates & Bicep
|
|
21
|
+
|
|
22
|
+
Deploy Azure infrastructure with ARM templates and Bicep. Bicep is the recommended domain-specific language that compiles to ARM JSON, offering cleaner syntax, modules, and first-class tooling support.
|
|
23
|
+
|
|
24
|
+
## Prerequisites
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Install Azure CLI
|
|
28
|
+
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
|
29
|
+
|
|
30
|
+
# Install Bicep CLI (bundled with Azure CLI 2.20+)
|
|
31
|
+
az bicep install
|
|
32
|
+
az bicep upgrade
|
|
33
|
+
|
|
34
|
+
# Verify installation
|
|
35
|
+
az bicep version
|
|
36
|
+
|
|
37
|
+
# Login and set subscription
|
|
38
|
+
az login
|
|
39
|
+
az account set --subscription "my-subscription-id"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Bicep Fundamentals
|
|
43
|
+
|
|
44
|
+
### Resource Group Deployment with Virtual Network
|
|
45
|
+
|
|
46
|
+
```bicep
|
|
47
|
+
// main.bicep
|
|
48
|
+
@description('Azure region for all resources')
|
|
49
|
+
param location string = resourceGroup().location
|
|
50
|
+
|
|
51
|
+
@description('Environment name used for resource naming')
|
|
52
|
+
@allowed(['dev', 'staging', 'prod'])
|
|
53
|
+
param environment string = 'dev'
|
|
54
|
+
|
|
55
|
+
@description('Base name for all resources')
|
|
56
|
+
param baseName string
|
|
57
|
+
|
|
58
|
+
var vnetName = '${baseName}-${environment}-vnet'
|
|
59
|
+
var nsgName = '${baseName}-${environment}-nsg'
|
|
60
|
+
|
|
61
|
+
resource nsg 'Microsoft.Network/networkSecurityGroups@2023-05-01' = {
|
|
62
|
+
name: nsgName
|
|
63
|
+
location: location
|
|
64
|
+
properties: {
|
|
65
|
+
securityRules: [
|
|
66
|
+
{
|
|
67
|
+
name: 'AllowHTTPS'
|
|
68
|
+
properties: {
|
|
69
|
+
priority: 100
|
|
70
|
+
direction: 'Inbound'
|
|
71
|
+
access: 'Allow'
|
|
72
|
+
protocol: 'Tcp'
|
|
73
|
+
sourcePortRange: '*'
|
|
74
|
+
destinationPortRange: '443'
|
|
75
|
+
sourceAddressPrefix: '*'
|
|
76
|
+
destinationAddressPrefix: '*'
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
{
|
|
80
|
+
name: 'DenyAllInbound'
|
|
81
|
+
properties: {
|
|
82
|
+
priority: 4096
|
|
83
|
+
direction: 'Inbound'
|
|
84
|
+
access: 'Deny'
|
|
85
|
+
protocol: '*'
|
|
86
|
+
sourcePortRange: '*'
|
|
87
|
+
destinationPortRange: '*'
|
|
88
|
+
sourceAddressPrefix: '*'
|
|
89
|
+
destinationAddressPrefix: '*'
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
|
|
97
|
+
name: vnetName
|
|
98
|
+
location: location
|
|
99
|
+
properties: {
|
|
100
|
+
addressSpace: {
|
|
101
|
+
addressPrefixes: [
|
|
102
|
+
'10.0.0.0/16'
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
subnets: [
|
|
106
|
+
{
|
|
107
|
+
name: 'web-subnet'
|
|
108
|
+
properties: {
|
|
109
|
+
addressPrefix: '10.0.1.0/24'
|
|
110
|
+
networkSecurityGroup: {
|
|
111
|
+
id: nsg.id
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
{
|
|
116
|
+
name: 'app-subnet'
|
|
117
|
+
properties: {
|
|
118
|
+
addressPrefix: '10.0.2.0/24'
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
{
|
|
122
|
+
name: 'data-subnet'
|
|
123
|
+
properties: {
|
|
124
|
+
addressPrefix: '10.0.3.0/24'
|
|
125
|
+
privateEndpointNetworkPolicies: 'Enabled'
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
output vnetId string = vnet.id
|
|
133
|
+
output webSubnetId string = vnet.properties.subnets[0].id
|
|
134
|
+
output appSubnetId string = vnet.properties.subnets[1].id
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### VM Deployment with Managed Identity
|
|
138
|
+
|
|
139
|
+
```bicep
|
|
140
|
+
// vm.bicep
|
|
141
|
+
param location string = resourceGroup().location
|
|
142
|
+
param vmName string
|
|
143
|
+
param subnetId string
|
|
144
|
+
param adminUsername string = 'azureuser'
|
|
145
|
+
|
|
146
|
+
@secure()
|
|
147
|
+
param adminPublicKey string
|
|
148
|
+
|
|
149
|
+
resource nic 'Microsoft.Network/networkInterfaces@2023-05-01' = {
|
|
150
|
+
name: '${vmName}-nic'
|
|
151
|
+
location: location
|
|
152
|
+
properties: {
|
|
153
|
+
ipConfigurations: [
|
|
154
|
+
{
|
|
155
|
+
name: 'ipconfig1'
|
|
156
|
+
properties: {
|
|
157
|
+
privateIPAllocationMethod: 'Dynamic'
|
|
158
|
+
subnet: {
|
|
159
|
+
id: subnetId
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
resource vm 'Microsoft.Compute/virtualMachines@2023-07-01' = {
|
|
168
|
+
name: vmName
|
|
169
|
+
location: location
|
|
170
|
+
identity: {
|
|
171
|
+
type: 'SystemAssigned'
|
|
172
|
+
}
|
|
173
|
+
properties: {
|
|
174
|
+
hardwareProfile: {
|
|
175
|
+
vmSize: 'Standard_B2s'
|
|
176
|
+
}
|
|
177
|
+
osProfile: {
|
|
178
|
+
computerName: vmName
|
|
179
|
+
adminUsername: adminUsername
|
|
180
|
+
linuxConfiguration: {
|
|
181
|
+
disablePasswordAuthentication: true
|
|
182
|
+
ssh: {
|
|
183
|
+
publicKeys: [
|
|
184
|
+
{
|
|
185
|
+
path: '/home/${adminUsername}/.ssh/authorized_keys'
|
|
186
|
+
keyData: adminPublicKey
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
storageProfile: {
|
|
193
|
+
imageReference: {
|
|
194
|
+
publisher: 'Canonical'
|
|
195
|
+
offer: '0001-com-ubuntu-server-jammy'
|
|
196
|
+
sku: '22_04-lts-gen2'
|
|
197
|
+
version: 'latest'
|
|
198
|
+
}
|
|
199
|
+
osDisk: {
|
|
200
|
+
createOption: 'FromImage'
|
|
201
|
+
managedDisk: {
|
|
202
|
+
storageAccountType: 'Premium_LRS'
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
networkProfile: {
|
|
207
|
+
networkInterfaces: [
|
|
208
|
+
{
|
|
209
|
+
id: nic.id
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
}
|
|
213
|
+
diagnosticsProfile: {
|
|
214
|
+
bootDiagnostics: {
|
|
215
|
+
enabled: true
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
output vmPrincipalId string = vm.identity.principalId
|
|
222
|
+
output vmId string = vm.id
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Bicep Modules
|
|
226
|
+
|
|
227
|
+
### Module Definition
|
|
228
|
+
|
|
229
|
+
```bicep
|
|
230
|
+
// modules/storage.bicep
|
|
231
|
+
@description('Storage account name (3-24 chars, lowercase alphanumeric)')
|
|
232
|
+
param storageAccountName string
|
|
233
|
+
|
|
234
|
+
param location string = resourceGroup().location
|
|
235
|
+
param sku string = 'Standard_LRS'
|
|
236
|
+
|
|
237
|
+
@allowed(['Hot', 'Cool', 'Archive'])
|
|
238
|
+
param accessTier string = 'Hot'
|
|
239
|
+
|
|
240
|
+
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
|
|
241
|
+
name: storageAccountName
|
|
242
|
+
location: location
|
|
243
|
+
sku: {
|
|
244
|
+
name: sku
|
|
245
|
+
}
|
|
246
|
+
kind: 'StorageV2'
|
|
247
|
+
properties: {
|
|
248
|
+
accessTier: accessTier
|
|
249
|
+
supportsHttpsTrafficOnly: true
|
|
250
|
+
minimumTlsVersion: 'TLS1_2'
|
|
251
|
+
allowBlobPublicAccess: false
|
|
252
|
+
networkAcls: {
|
|
253
|
+
defaultAction: 'Deny'
|
|
254
|
+
bypass: 'AzureServices'
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
output storageAccountId string = storageAccount.id
|
|
260
|
+
output primaryBlobEndpoint string = storageAccount.properties.primaryEndpoints.blob
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Consuming Modules
|
|
264
|
+
|
|
265
|
+
```bicep
|
|
266
|
+
// main.bicep
|
|
267
|
+
param location string = resourceGroup().location
|
|
268
|
+
param environment string = 'prod'
|
|
269
|
+
|
|
270
|
+
module storage 'modules/storage.bicep' = {
|
|
271
|
+
name: 'storage-deployment'
|
|
272
|
+
params: {
|
|
273
|
+
storageAccountName: 'myapp${environment}sa'
|
|
274
|
+
location: location
|
|
275
|
+
sku: environment == 'prod' ? 'Standard_GRS' : 'Standard_LRS'
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
module vnet 'modules/network.bicep' = {
|
|
280
|
+
name: 'vnet-deployment'
|
|
281
|
+
params: {
|
|
282
|
+
location: location
|
|
283
|
+
environment: environment
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Reference module outputs
|
|
288
|
+
output storageBlobEndpoint string = storage.outputs.primaryBlobEndpoint
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## ARM JSON Template Structure
|
|
292
|
+
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
|
296
|
+
"contentVersion": "1.0.0.0",
|
|
297
|
+
"parameters": {
|
|
298
|
+
"storageAccountName": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"metadata": {
|
|
301
|
+
"description": "Name of the storage account"
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"location": {
|
|
305
|
+
"type": "string",
|
|
306
|
+
"defaultValue": "[resourceGroup().location]"
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
"variables": {
|
|
310
|
+
"storageSku": "Standard_LRS"
|
|
311
|
+
},
|
|
312
|
+
"resources": [
|
|
313
|
+
{
|
|
314
|
+
"type": "Microsoft.Storage/storageAccounts",
|
|
315
|
+
"apiVersion": "2023-01-01",
|
|
316
|
+
"name": "[parameters('storageAccountName')]",
|
|
317
|
+
"location": "[parameters('location')]",
|
|
318
|
+
"sku": {
|
|
319
|
+
"name": "[variables('storageSku')]"
|
|
320
|
+
},
|
|
321
|
+
"kind": "StorageV2",
|
|
322
|
+
"properties": {
|
|
323
|
+
"supportsHttpsTrafficOnly": true,
|
|
324
|
+
"minimumTlsVersion": "TLS1_2"
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
],
|
|
328
|
+
"outputs": {
|
|
329
|
+
"storageId": {
|
|
330
|
+
"type": "string",
|
|
331
|
+
"value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Deployment Commands
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Validate a Bicep template before deployment
|
|
341
|
+
az deployment group validate \
|
|
342
|
+
--resource-group mygroup \
|
|
343
|
+
--template-file main.bicep \
|
|
344
|
+
--parameters environment='prod' baseName='myapp'
|
|
345
|
+
|
|
346
|
+
# Preview changes with What-If
|
|
347
|
+
az deployment group what-if \
|
|
348
|
+
--resource-group mygroup \
|
|
349
|
+
--template-file main.bicep \
|
|
350
|
+
--parameters environment='prod' baseName='myapp'
|
|
351
|
+
|
|
352
|
+
# Deploy Bicep to resource group
|
|
353
|
+
az deployment group create \
|
|
354
|
+
--resource-group mygroup \
|
|
355
|
+
--template-file main.bicep \
|
|
356
|
+
--parameters environment='prod' baseName='myapp' \
|
|
357
|
+
--name "deploy-$(date +%Y%m%d-%H%M%S)"
|
|
358
|
+
|
|
359
|
+
# Deploy ARM JSON with parameter file
|
|
360
|
+
az deployment group create \
|
|
361
|
+
--resource-group mygroup \
|
|
362
|
+
--template-file template.json \
|
|
363
|
+
--parameters @parameters.prod.json
|
|
364
|
+
|
|
365
|
+
# Subscription-level deployment (e.g., resource groups, policies)
|
|
366
|
+
az deployment sub create \
|
|
367
|
+
--location eastus \
|
|
368
|
+
--template-file subscription-level.bicep \
|
|
369
|
+
--parameters @params.json
|
|
370
|
+
|
|
371
|
+
# Management group deployment
|
|
372
|
+
az deployment mg create \
|
|
373
|
+
--management-group-id my-mg \
|
|
374
|
+
--location eastus \
|
|
375
|
+
--template-file mg-policy.bicep
|
|
376
|
+
|
|
377
|
+
# Export resource group to ARM JSON
|
|
378
|
+
az group export --name mygroup --output json > exported-template.json
|
|
379
|
+
|
|
380
|
+
# Decompile ARM JSON to Bicep
|
|
381
|
+
az bicep decompile --file exported-template.json
|
|
382
|
+
|
|
383
|
+
# Build Bicep to ARM JSON (for inspection)
|
|
384
|
+
az bicep build --file main.bicep --outfile main.json
|
|
385
|
+
|
|
386
|
+
# List deployments and their status
|
|
387
|
+
az deployment group list \
|
|
388
|
+
--resource-group mygroup \
|
|
389
|
+
--output table
|
|
390
|
+
|
|
391
|
+
# Delete a failed deployment
|
|
392
|
+
az deployment group delete \
|
|
393
|
+
--resource-group mygroup \
|
|
394
|
+
--name my-failed-deployment
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## Parameter Files
|
|
398
|
+
|
|
399
|
+
```json
|
|
400
|
+
// parameters.prod.json
|
|
401
|
+
{
|
|
402
|
+
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
|
|
403
|
+
"contentVersion": "1.0.0.0",
|
|
404
|
+
"parameters": {
|
|
405
|
+
"environment": { "value": "prod" },
|
|
406
|
+
"baseName": { "value": "myapp" },
|
|
407
|
+
"adminPublicKey": {
|
|
408
|
+
"reference": {
|
|
409
|
+
"keyVault": {
|
|
410
|
+
"id": "/subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.KeyVault/vaults/{vault}"
|
|
411
|
+
},
|
|
412
|
+
"secretName": "ssh-public-key"
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
## Contents
|
|
421
|
+
|
|
422
|
+
- [Linked and Nested Templates](references/details.md)
|
|
423
|
+
- [Troubleshooting](references/details.md)
|
|
424
|
+
- [Related Skills](references/details.md)
|
|
425
|
+
|
|
426
|
+
## When to Use
|
|
427
|
+
|
|
428
|
+
- You need Azure-native Infrastructure as Code without third-party tooling.
|
|
429
|
+
- Your organization standardizes on Azure and wants tight portal integration.
|
|
430
|
+
- You need What-If analysis before deploying changes.
|
|
431
|
+
- You are migrating existing ARM JSON templates to Bicep for maintainability.
|
|
432
|
+
- You need deployment scopes at resource group, subscription, management group, or tenant level.
|
|
433
|
+
|
|
434
|
+
## Limitations
|
|
435
|
+
|
|
436
|
+
- Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
|
|
437
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
438
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `arm-templates`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## Linked and Nested Templates
|
|
6
|
+
|
|
7
|
+
```bicep
|
|
8
|
+
// Deploy to a different resource group
|
|
9
|
+
module networkInSharedRg 'modules/network.bicep' = {
|
|
10
|
+
name: 'shared-network'
|
|
11
|
+
scope: resourceGroup('shared-networking-rg')
|
|
12
|
+
params: {
|
|
13
|
+
location: location
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Conditional deployment
|
|
18
|
+
param deployMonitoring bool = true
|
|
19
|
+
|
|
20
|
+
module monitoring 'modules/monitoring.bicep' = if (deployMonitoring) {
|
|
21
|
+
name: 'monitoring-deployment'
|
|
22
|
+
params: {
|
|
23
|
+
location: location
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Loop deployment
|
|
28
|
+
param storageAccounts array = [
|
|
29
|
+
{ name: 'logs', sku: 'Standard_LRS' }
|
|
30
|
+
{ name: 'data', sku: 'Standard_GRS' }
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
module storageLoop 'modules/storage.bicep' = [for account in storageAccounts: {
|
|
34
|
+
name: 'storage-${account.name}'
|
|
35
|
+
params: {
|
|
36
|
+
storageAccountName: '${baseName}${account.name}sa'
|
|
37
|
+
sku: account.sku
|
|
38
|
+
location: location
|
|
39
|
+
}
|
|
40
|
+
}]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Troubleshooting
|
|
45
|
+
|
|
46
|
+
| Symptom | Cause | Fix |
|
|
47
|
+
|---------|-------|-----|
|
|
48
|
+
| `InvalidTemplate` error | Syntax error in ARM JSON or Bicep | Run `az bicep build` to check for compile errors |
|
|
49
|
+
| `ResourceNotFound` during deployment | Resource dependency not declared | Add `dependsOn` or use implicit references in Bicep |
|
|
50
|
+
| `DeploymentFailed` with quota error | Subscription quota exceeded | Request quota increase or use a different region |
|
|
51
|
+
| `AuthorizationFailed` | Insufficient RBAC permissions | Assign Contributor role on the target resource group |
|
|
52
|
+
| Parameter file secrets in source control | Secrets stored as plain text | Use Key Vault references in parameter files |
|
|
53
|
+
| Deployment takes very long | Large number of resources deployed serially | Use `dependsOn` carefully to allow parallel deployment |
|
|
54
|
+
| `What-If` shows unexpected deletions | Complete mode instead of Incremental | Use `--mode Incremental` (the default) to avoid deleting unmanaged resources |
|
|
55
|
+
| Bicep module not found | Incorrect relative path | Verify path is relative to the consuming file |
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## Related Skills
|
|
59
|
+
|
|
60
|
+
- `terraform-azure` -- Multi-cloud IaC alternative with broader provider support.
|
|
61
|
+
- `azure-networking` -- VNet, NSG, and firewall configurations referenced in templates.
|
|
62
|
+
- `azure-vms` -- Virtual machine sizing and configuration details.
|
|
63
|
+
- `azure-aks` -- Kubernetes cluster definitions for Bicep/ARM.
|
|
64
|
+
|