infrastructure-md-setup
Set up or retrofit INFRASTRUCTURE.md / Infrastructure-as-Code guidance in a repository using the IaC principles, tooling, and best practices from the ddpa.ru knowledge base article. Use when the user wants a repo-level infrastructure doc, an IaC decision guide, or a practical agent workflow for infrastructure management centered on Terraform, Ansible, wp-env, and GitHub Actions.
Works with
--- name: infrastructure-md-setup description: Set up or retrofit INFRASTRUCTURE.md / Infrastructure-as-Code guidance in a repository using the IaC principles, tooling, and best practices from the ddpa.ru knowledge base article. Use when the user wants a repo-level infrastructure doc, an IaC decision guide, or a practical agent workflow for infrastructure management centered on Terraform, Ansible, wp-env, and GitHub Actions. license: MIT --- # infrastructure-md-setup Practical workflow for adopting `INFRASTRUCTURE.md` as a machine-readable infrastructure-as-code guide for AI agents. Use this skill when a user wants to: - create a new `INFRASTRUCTURE.md` file in a greenfield repository; - retrofit an existing infrastructure or DevOps guide into a structured IaC document; - standardize how agents describe, plan, and review infrastructure changes; - capture core IaC principles, tool choices, and guardrails in one place; - align local development, infrastructure code, and CI workflows around Terraform, Ansible, wp-env, and GitHub Actions; - distinguish IaC from PaaS-style deployment workflows. ## Inputs Required Before writing files or proposing repo changes, ask and confirm: 1. Target scope - Apply to the current repository or another directory? 2. Setup mode - `from-scratch` (new `INFRASTRUCTURE.md`) or `adapt-existing` (merge with current docs)? 3. Infrastructure scope - Is this document for cloud infrastructure, Kubernetes platforms, server configuration, or all of the above? 4. Preferred IaC approach - `declarative`, `imperative`, `hybrid`, or mixed by use case? 5. Tooling baseline - Which tools are canonical today: Terraform/OpenTofu, Ansible, wp-env, GitHub Actions, Pulumi, Crossplane, Helm, CloudFormation, Packer, or platform-specific tooling? 6. Change policy - Merge into existing files (recommended) or replace sections where safe? If any answer is ambiguous, stop and ask a follow-up instead of guessing. ## What To Do First 1. Detect current infrastructure context. - Check for `INFRASTRUCTURE.md`, `README.md`, `docs/`, `infra/`, `terraform/`, `modules/`, `k8s/`, `.github/workflows/`, `package.json`, and `Dockerfile`. - Check for `.wp-env.json`, `wp-env` scripts, `ansible.cfg`, `inventory/`, `playbooks/`, and workflow files under `.github/workflows/`. - Look for existing IaC docs, runbooks, platform notes, and cloud provider manifests. 2. Classify the current infrastructure model. - Determine whether the repo is mostly declarative IaC, imperative automation, hybrid code-based provisioning, or application-only deployment. 3. Decide setup flow. - No existing infrastructure doc: run `from-scratch`. - Existing docs or runbooks: run `adapt-existing` and preserve prior intent. 4. Anchor on the article’s core concepts. - Use declarativity, idempotency, reproducibility, controllability, policy-as-code, state management, modules, and Git-based change control as the primary framing. ## Preflight Detection Run a quick inventory in the target repo: ```bash pwd rg --files -g 'INFRASTRUCTURE.md' -g 'README.md' -g 'docs/**' -g 'infra/**' -g 'terraform/**' -g 'modules/**' -g 'k8s/**' -g '.github/workflows/**' -g 'Dockerfile' -g 'docker-compose*.yml' -g 'package.json' rg -n "Terraform|OpenTofu|Pulumi|Ansible|Crossplane|Helm|CloudFormation|Packer|GitOps|policy-as-code|drift" -g '*.md' -g '*.yml' -g '*.yaml' -g '*.tf' -g '*.ts' -g '*.py' ``` Interpretation: - If `INFRASTRUCTURE.md` does not exist, scaffold a canonical starter. - If `INFRASTRUCTURE.md` exists, validate and patch incrementally; do not overwrite blindly. - If multiple IaC toolchains exist, identify the one that is actually authoritative before editing. ## Flow A: From Scratch ### Step 1: Create the base `INFRASTRUCTURE.md` Create `INFRASTRUCTURE.md` with sections aligned to the article: - overview of the infrastructure model; - what IaC is and how it is used in the repo; - key principles; - supported approaches; - canonical tools and where they are used; - environment/provider matrix; - common scenarios; - best practices and guardrails; - relation to PaaS or app-only deployment; - references. Starter skeleton: ```md # Infrastructure as Code ## Overview Describe the repo’s infrastructure philosophy and operational goals. ## What IaC Means Here Explain what is managed by code, what is manual, and what is out of scope. ## Key Principles - Declarativity - Idempotency - Reproducibility - Controllability - Policy-as-Code ## Approaches - Declarative - Imperative - Hybrid ## Tooling - Terraform / OpenTofu - Ansible - wp-env - GitHub Actions ## Environments and Providers Document clouds, clusters, and environment-specific ownership. ## Scenarios - Greenfield environment bootstrap - Cloud migration - CI/CD for infrastructure - Disaster recovery - Compliance and audit ## Best Practices - Everything in Git - Modular reuse - GitOps-style review - Security checks - Drift detection - Least privilege ## IaC vs PaaS Clarify where infrastructure code ends and hosted deployment platforms begin. ## References Link the canonical docs and source material. ``` ### Step 2: Make tool choices explicit Document the selected toolchain by use case: - Terraform/OpenTofu for declarative cloud infrastructure and modules; - Ansible for imperative server orchestration; - wp-env for reproducible local WordPress development environments; - GitHub Actions for CI, validation, and deployment orchestration; - Packer for machine image creation. ### Step 3: Encode the operating rules Add rules for: - Git-based review before apply; - state management and drift detection; - policy-as-code checks such as Open Policy Agent or Checkov; - workflow gates and approvals in GitHub Actions for sensitive infrastructure changes; - minimal privileges for runners; - no manual production drift without explicit approval. ### Step 4: Validate If the repository has IaC tooling, run the most relevant checks: - `terraform fmt` / `tofu fmt` for Terraform/OpenTofu code; - `terraform validate` / `tofu validate` for module sanity; - `ansible-lint` for Ansible content; - `npx wp-env start` for local WordPress environment sanity when the repo uses `wp-env`; - `actionlint` for GitHub Actions workflow validation; - `checkov` or equivalent for policy checks. ## Flow B: Adapt Existing Project ### Step 1: Map existing docs into the canonical structure Typical mapping: - runbooks and setup notes -> Overview + What IaC Means Here; - module docs -> Tooling + Environments and Providers; - WordPress local dev notes -> Tooling + Environments and Providers, with `wp-env` commands and scripts; - CI/CD docs -> GitHub Actions workflow rules and validation; - incident or DR docs -> Scenarios; - security standards -> Best Practices + operating rules; - hosting/platform docs -> IaC vs PaaS. ### Step 2: Merge instead of replace When `INFRASTRUCTURE.md` already exists: - preserve the repo’s current source of truth; - keep existing tool names and environment names unless they are wrong; - patch only the sections needed to improve clarity or structure. ### Step 3: Resolve conflicts deliberately If the repo contains multiple approaches: - choose the approach that is actually deployed; - note secondary tools as supporting infrastructure, not the primary standard; - ask before deleting or renaming any infrastructure directories. ## Validation Checklist Before completion, confirm: - `INFRASTRUCTURE.md` exists and reflects the repo’s real infrastructure model; - the main IaC tools are named consistently, especially Terraform, Ansible, `wp-env`, and GitHub Actions; - state, drift, and policy checks are documented; - local WordPress workflow notes are aligned with `wp-env` if the repo uses WordPress; - workflow validation rules are documented for GitHub Actions if CI is part of the setup; - the IaC vs PaaS boundary is clear; - references point to the canonical source material. ## Troubleshooting 1. Multiple IaC tools appear to conflict. - Treat this as a documentation and ownership problem first, not a tooling problem. - Identify the authoritative path by deployment or ownership reality. 2. State or drift behavior is undocumented. - Add explicit rules for where state lives, who can mutate it, and how drift is checked. 3. The repo is app-only, with infrastructure handled elsewhere. - Keep the file narrow and document only the integration boundary and responsibilities. ## References - https://ddpa.ru/kb/it/devops/infrastructure-as-code/
More DevOps & Infrastructure skills
azure-ai
microsoft/azure-skills
Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.
appinsights-instrumentation
microsoft/azure-skills
Guidance for instrumenting webapps with Azure Application Insights. Provides telemetry patterns, SDK setup, and configuration references. WHEN: how to instrument app, App Insights SDK, telemetry patterns, what is App Insights, Application Insights guidance, instrumentation examples, APM best practices.
azure-storage
microsoft/azure-skills
Azure Storage Services including Blob Storage, File Shares, Queue Storage, Table Storage, and Data Lake. Answers questions about storage access tiers (hot, cool, cold, archive), when to use each tier, and tier comparison. Provides object storage, SMB file shares, async messaging, NoSQL key-value, and big data analytics. Includes lifecycle management. USE FOR: blob storage, file shares, queue storage, table storage, data lake, upload files, download blobs, storage accounts, access tiers, storage tiers, hot cool cold archive, storage tier comparison, when to use storage tiers, lifecycle management, Azure Storage concepts. DO NOT USE FOR: SQL databases, Cosmos DB (use azure-prepare), messaging with Event Hubs or Service Bus (use azure-messaging).

