[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-documentdb-azure-deployment":3,"mdc--qbg2ch-key":41,"related-repo-azure-documentdb-azure-deployment":4281,"related-org-azure-documentdb-azure-deployment":4370},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":30,"repoUrl":31,"updatedAt":32,"license":33,"forks":34,"topics":35,"repo":36,"sourceUrl":39,"mdContent":40},"documentdb-azure-deployment","deploy Azure DocumentDB clusters","Deploy an Azure DocumentDB cluster (`Microsoft.DocumentDB\u002FmongoClusters`) end-to-end — Bicep (primary), Azure CLI one-shot, Terraform, or portal. Covers resource-group creation, cluster parameters (tier, storage, server version, sharding, HA), firewall rule configuration, retrieving the connection string, and teardown. Use when the user asks to provision, create, deploy, or spin up an Azure DocumentDB cluster, or wants infrastructure-as-code for one.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,15,18,21,24,27],{"name":11,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"CLI","cli",{"name":19,"slug":20,"type":14},"Database","database",{"name":22,"slug":23,"type":14},"Deployment","deployment",{"name":25,"slug":26,"type":14},"Terraform","terraform",{"name":28,"slug":29,"type":14},"Bicep","bicep",5,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fdocumentdb-agent-kit","2026-07-12T08:18:56.861159","MIT",7,[],{"repoUrl":31,"stars":30,"forks":34,"topics":37,"description":38},[],"Agent Skills pack for Azure DocumentDB (MongoDB compatibility) - vector search, full-text search, query optimization, connection tuning, local deployment, security, HA, and MCP setup.","https:\u002F\u002Fgithub.com\u002FAzure\u002Fdocumentdb-agent-kit\u002Ftree\u002FHEAD\u002Fskills\u002Fazure-deployment","---\nname: documentdb-azure-deployment\ndescription: Deploy an Azure DocumentDB cluster (`Microsoft.DocumentDB\u002FmongoClusters`) end-to-end — Bicep (primary), Azure CLI one-shot, Terraform, or portal. Covers resource-group creation, cluster parameters (tier, storage, server version, sharding, HA), firewall rule configuration, retrieving the connection string, and teardown. Use when the user asks to provision, create, deploy, or spin up an Azure DocumentDB cluster, or wants infrastructure-as-code for one.\nlicense: MIT\n---\n\n# Deploy Azure DocumentDB\n\nInteractive skill for provisioning a managed **Azure DocumentDB** cluster (resource type `Microsoft.DocumentDB\u002FmongoClusters`, API `2025-09-01`). Azure DocumentDB is the managed Azure service built on the open-source [`microsoft\u002Fdocumentdb`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb) engine.\n\nFor running DocumentDB locally instead (Docker \u002F Compose), use `documentdb-local-deployment`. For connection-string tuning after the cluster exists, use `documentdb-connection`.\n\n> **No-agent shortcut.** A ready-to-run Bicep + deploy script is checked in at [`examples\u002Fazure-deployment\u002F`](..\u002F..\u002Fexamples\u002Fazure-deployment\u002F) — customers who prefer to run the deploy themselves can clone the repo and just run `.\u002Fdeploy.sh` (no arguments). The script interactively lists subscriptions → resource groups → regions (same flow as this skill). Use it as a reference when generating project files too.\n\n## Step 0 — preflight checks (run before anything else)\n\nRun these checks at the start of every deployment session. If any fails, **fix it in place and re-run the loop** before continuing to Step 1 — don't skip ahead, and don't ask the user configuration questions you'll have to re-ask after they fix their environment.\n\n```bash\n# 1. Azure CLI installed?\naz version --query '\"azure-cli\"' -o tsv\n# → If 'az' is not found, stop and install: https:\u002F\u002Flearn.microsoft.com\u002Fcli\u002Fazure\u002Finstall-azure-cli\n\n# 2. Signed in?\naz account show --query '{name:name, id:id}' -o json\n# → On failure, run: az login\n\n# 3. Correct subscription active?\naz account show --query name -o tsv\n# → If wrong, run: az account set --subscription \"\u003Cname-or-id>\"\n\n# 4. Microsoft.DocumentDB provider registered on the subscription?\naz provider show --namespace Microsoft.DocumentDB --query registrationState -o tsv\n# → If 'NotRegistered' or 'Unregistered', run:\n#     az provider register --namespace Microsoft.DocumentDB\n#   Then poll until state is 'Registered' (~1–2 min).\n\n# 5. Caller has Contributor\u002FOwner on the target scope?\naz role assignment list --assignee \"$(az ad signed-in-user show --query id -o tsv)\" \\\n  --scope \"\u002Fsubscriptions\u002F$(az account show --query id -o tsv)\" \\\n  --query \"[].roleDefinitionName\" -o tsv\n# → Expect Contributor, Owner, or a custom role with Microsoft.DocumentDB\u002FmongoClusters\u002Fwrite.\n#   If empty or only a reader role, escalate before proceeding.\n\n# 6. Region supports mongoClusters?\naz provider show --namespace Microsoft.DocumentDB \\\n  --query \"resourceTypes[?resourceType=='mongoClusters'].locations[]\" -o tsv\n# → Confirm the user's chosen location is in the list.\n```\n\n`examples\u002Fazure-deployment\u002Fdeploy.sh` and `deploy.ps1` implement checks 1–4 automatically and will `az login` \u002F register the provider \u002F create the resource group as needed. If you're generating deployment files into a user's project, copy those scripts or use them as a template.\n\n## Step 0.5 — is this production or dev\u002Ftest?\n\nAsk the user **before** anything else in Step 1. The answer drives every default. Never assume.\n\n| If \"production\" (default) | If \"dev \u002F prototype \u002F test\" |\n|---|---|\n| Tier: **M30** (minimum that supports HA) | Tier: **M10** or M20 |\n| Storage: **128 GiB** per shard | Storage: **32 GiB** |\n| HA: **ZoneRedundantPreferred** | HA: **Disabled** |\n| Firewall: Private Endpoint; `allowAzureServices: false` | `allowAzureServices: true` + developer IP rule |\n| Password source: **Key Vault reference** | Key Vault preferred; literal OK for throwaway |\n| Parameters file: `main.parameters.sample.json` | `main.parameters.dev.json` |\n\nProduction is the safer default — the Bicep template and `main.parameters.sample.json` in `examples\u002Fazure-deployment\u002F` ship with M30 + ZoneRedundantPreferred + 128 GiB so that a customer who runs `.\u002Fdeploy.sh \u003Crg> \u003Clocation>` without overrides ends up with a cluster they can actually put workloads on. If the user answers \"dev\", either:\n\n- pass `--parameters @main.parameters.dev.json` to the deploy script, **or**\n- override on the command line:\n  ```bash\n  az deployment group create \\\n    --resource-group \"\u003Crg>\" \\\n    --template-file main.bicep \\\n    --parameters computeTier=M10 storageSizeGb=32 haTargetMode=Disabled\n  ```\n\n## Step 1 — pick the Azure subscription (always ask, never assume)\n\nThe currently active subscription from `az account show` may not be the one the user wants. Always list and confirm — never silently use the active one.\n\n```bash\n# Show all subscriptions the signed-in user can access\naz account list --query \"[].{Name:name, SubscriptionId:id, State:state, IsDefault:isDefault}\" \\\n  --output table\n```\n\nPresent the list to the user and ask them to pick one (by name or ID). Then set it active so subsequent commands are scoped to it:\n\n```bash\naz account set --subscription \"\u003Csubscription-id-or-name>\"\naz account show --query \"{name:name, id:id}\" -o table   # confirm\n```\n\nRecord the chosen subscription ID as `$SUBSCRIPTION_ID` and pass `--subscription \"$SUBSCRIPTION_ID\"` to every subsequent `az` command in this flow — this guarantees RG \u002F region lookups stay scoped to the user's choice even if the active context drifts.\n\nIf the user has only one subscription, still confirm out loud (\"I'll deploy into `\u003Cname>` — OK?\") rather than silently proceeding.\n\n## Step 2 — pick the resource group in that subscription (existing or new)\n\nList the resource groups **scoped to the chosen subscription** (do not omit `--subscription` — it prevents showing RGs from a different context):\n\n```bash\naz group list \\\n  --subscription \"$SUBSCRIPTION_ID\" \\\n  --query \"[].{Name:name, Location:location}\" \\\n  --output table\n```\n\nPresent the list to the user and ask them to pick **one of**:\n\n**(a) Reuse an existing RG** — take its `location` from the table above and use that as the cluster's region by default. **Skip Step 3** (the region is already fixed by the RG). Record it as `$LOCATION`.\n\n**(b) Create a new RG** — ask the user for the new RG name, then continue to Step 3 to pick a region before creating it.\n\nDo not proceed to Step 3 or Step 4 until the user has explicitly picked (a) or (b).\n\n## Step 3 — pick the Azure region (only when creating a new RG)\n\nReached only when the user chose 2(b). List the regions that support `Microsoft.DocumentDB\u002FmongoClusters` so the user can pick one that is both regionally appropriate and supported:\n\n```bash\naz provider show \\\n  --subscription \"$SUBSCRIPTION_ID\" \\\n  --namespace Microsoft.DocumentDB \\\n  --query \"resourceTypes[?resourceType=='mongoClusters'].locations[]\" \\\n  --output tsv\n```\n\nPresent the list and ask the user to pick one. Record it as `$LOCATION`. Then create the RG in the chosen subscription + region:\n\n```bash\naz group create \\\n  --subscription \"$SUBSCRIPTION_ID\" \\\n  --name \"\u003Cnew-rg-name>\" \\\n  --location \"$LOCATION\"\n```\n\nConfirm creation succeeded before moving on:\n\n```bash\naz group show --subscription \"$SUBSCRIPTION_ID\" --name \"\u003Cnew-rg-name>\" --query \"{name:name, location:location, state:properties.provisioningState}\" -o table\n```\n\n## Step 4 — gather the remaining cluster inputs\n\nNow that subscription, RG, and location are fixed, ask for cluster-specific values:\n\n| Input | Example | Notes |\n|---|---|---|\n| Cluster name | `docdb-prod-001` | 8–40 chars, lowercase letters\u002Fdigits\u002Fhyphens; globally unique in Azure |\n| Admin username | `clusteradmin` | Avoid reserved names like `admin`, `root` |\n| Admin password | — | 8–128 chars; store in Key Vault — **never commit** |\n| Compute tier | **M30** (prod default) \u002F `M10`–`M20` (dev) | Full list: `M10`, `M20`, `M30`, `M40`, `M50`, `M60`, `M80`, `M200` |\n| Storage per shard (GiB) | **128** (prod default) \u002F `32` (dev) | |\n| Shard count | `1` (sufficient up to TB scale) | |\n| High availability | **ZoneRedundantPreferred** (prod default) \u002F `SameZone` \u002F `Disabled` (dev) | Non-Disabled values require M30+ |\n| MongoDB server version | `8.0` | |\n| Public network access | Default `Enabled` with firewall rules | Or disable and attach Private Endpoint (see `documentdb-security`) |\n\nIf the user didn't answer Step 0.5, ask again — without that answer you can't pick the right tier\u002FHA defaults.\n\n## Step 5 — choose a deployment path\n\n| Path | Use when | Section |\n|---|---|---|\n| **Bicep** (recommended) | Repeatable infra-as-code, PR-reviewed, committed to repo | [Step 6a](#step-6a--deploy-with-bicep) |\n| **Azure CLI one-shot** | Prototype, local dev, quick validation | [Step 6b](#step-6b--deploy-with-azure-cli-one-shot) |\n| **Terraform** | Existing Terraform estate | [Step 6c](#step-6c--deploy-with-terraform) |\n| **Portal** | First-time users who want to see the UI | [Azure portal quickstart](https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdocumentdb\u002Fquickstart-portal) |\n\nFor Bicep, load `references\u002Fbicep-cluster-template.md` — it contains the canonical parameterized template and an optional private-endpoint variant.\n\n## Step 6a — deploy with Bicep\n\nGenerate `main.bicep` using the template in `references\u002Fbicep-cluster-template.md`, then:\n\n```bash\n# 1. Sign in + select subscription\naz login\naz account set --subscription \"\u003Csubscription-name-or-id>\"\n\n# 2. Create the resource group\naz group create \\\n  --name \"\u003Cresource-group-name>\" \\\n  --location \"\u003Clocation>\"\n\n# 3. Deploy — you'll be prompted for adminUsername \u002F adminPassword\naz deployment group create \\\n  --resource-group \"\u003Cresource-group-name>\" \\\n  --template-file main.bicep\n\n# Non-interactive: use a parameters file (do NOT commit passwords)\naz deployment group create \\\n  --resource-group \"\u003Cresource-group-name>\" \\\n  --template-file main.bicep \\\n  --parameters @main.parameters.json\n```\n\n**Secret handling.** Never hardcode `adminPassword` in `main.parameters.json` or a repo. Options:\n\n- Reference Key Vault from the parameters file:\n  ```json\n  {\n    \"adminPassword\": {\n      \"reference\": {\n        \"keyVault\": { \"id\": \"\u002Fsubscriptions\u002F...\u002Fvaults\u002Fkv-documentdb\" },\n        \"secretName\": \"docdb-admin-password\"\n      }\n    }\n  }\n  ```\n- Or pass inline from the shell's own secret source: `--parameters adminPassword=\"$(az keyvault secret show ... --query value -o tsv)\"`.\n\n## Step 6b — deploy with Azure CLI one-shot\n\nFor quick iteration without a Bicep file:\n\n```bash\naz login\naz account set --subscription \"\u003Csubscription-name-or-id>\"\naz group create --name rg-docdb-dev --location eastus2\n\n# Deploy the cluster via az resource create against the 2025-09-01 API\naz resource create \\\n  --resource-group rg-docdb-dev \\\n  --name docdb-dev-001 \\\n  --resource-type \"Microsoft.DocumentDB\u002FmongoClusters\" \\\n  --api-version 2025-09-01 \\\n  --location eastus2 \\\n  --properties '{\n    \"administrator\": { \"userName\": \"clusteradmin\", \"password\": \"REPLACE_WITH_STRONG_PASSWORD\" },\n    \"serverVersion\": \"8.0\",\n    \"sharding\":       { \"shardCount\": 1 },\n    \"storage\":        { \"sizeGb\": 32 },\n    \"highAvailability\": { \"targetMode\": \"Disabled\" },\n    \"compute\":        { \"tier\": \"M10\" }\n  }'\n\n# Add a firewall rule — \"Allow Azure services\" shortcut uses 0.0.0.0 for both start and end\naz resource create \\\n  --resource-group rg-docdb-dev \\\n  --name \"docdb-dev-001\u002FAllowAllAzureServices\" \\\n  --resource-type \"Microsoft.DocumentDB\u002FmongoClusters\u002FfirewallRules\" \\\n  --api-version 2025-09-01 \\\n  --properties '{ \"startIpAddress\": \"0.0.0.0\", \"endIpAddress\": \"0.0.0.0\" }'\n```\n\nNever paste a real password on the command line in shared terminals — read it from an env var or Key Vault.\n\n## Step 6c — deploy with Terraform\n\nPrefer this when the user already uses Terraform. The AzureRM provider 4.x exposes `azurerm_mongo_cluster`, which targets `Microsoft.DocumentDB\u002FmongoClusters` API `2025-09-01`.\n\nLoad `references\u002Fterraform-cluster-template.md` for the canonical `main.tf` (with variables, validation, sample `terraform.tfvars`, and the firewall-rule pattern via the AzAPI provider). Then:\n\n```bash\nexport ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv)\nexport TF_VAR_admin_password=$(az keyvault secret show \\\n  --vault-name \u003Ckv-name> --name docdb-admin-password --query value -o tsv)\n\nterraform init -upgrade\nterraform plan  -out main.tfplan\nterraform apply main.tfplan\n```\n\nThe provider's `high_availability_mode` accepts only `Disabled` and `ZoneRedundantPreferred` (the API also accepts `SameZone`, but that mode is not exposed through `azurerm_mongo_cluster` 4.x — use the Bicep template if you need it). Full Microsoft quickstart: https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdocumentdb\u002Fquickstart-terraform.\n\n## Step 7 — verify the deployment\n\n```bash\naz resource list \\\n  --resource-group \"\u003Cresource-group-name>\" \\\n  --namespace Microsoft.DocumentDB \\\n  --resource-type mongoClusters \\\n  --query \"[].name\" \\\n  --output json\n```\n\nExpect one entry matching your cluster name.\n\n## Step 8 — retrieve the connection string\n\nFrom the portal: **cluster → Connection strings**. The returned string has a `\u003Cpassword>` placeholder you must substitute.\n\nForm of the connection string:\n\n```\nmongodb+srv:\u002F\u002F\u003Cuser>:\u003Cpassword>@\u003Ccluster>.global.mongocluster.cosmos.azure.com\u002F?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\n```\n\nNote `retrywrites=false` — Azure DocumentDB does not support retryable writes; leaving it at the driver default will cause connection errors (see `documentdb-connection` for driver-specific tuning).\n\n## Step 9 — configure access\n\nPick one posture and help the user apply it:\n\n- **Public + firewall** (dev only). Add the developer's IP:\n  ```bash\n  MY_IP=$(curl -s https:\u002F\u002Fapi.ipify.org)\n  az resource create \\\n    --resource-group rg-docdb-dev \\\n    --name \"docdb-dev-001\u002Fdev-$(whoami)\" \\\n    --resource-type \"Microsoft.DocumentDB\u002FmongoClusters\u002FfirewallRules\" \\\n    --api-version 2025-09-01 \\\n    --properties \"{ \\\"startIpAddress\\\": \\\"$MY_IP\\\", \\\"endIpAddress\\\": \\\"$MY_IP\\\" }\"\n  ```\n  The `0.0.0.0`–`0.0.0.0` rule is the documented shortcut for \"Allow Azure services and resources within Azure\" — use for serverless workloads. Never leave `0.0.0.0–255.255.255.255` in place outside a short connection test.\n\n- **Private Endpoint** (prod). See `documentdb-security` — public access should be disabled and a Private DNS zone added.\n\n- **Entra RBAC \u002F CMK \u002F diagnostic settings**. See `documentdb-security` and `documentdb-monitoring`.\n\n## Step 10 — teardown\n\n```bash\naz group delete --name \"\u003Cresource-group-name>\" --yes --no-wait\n```\n\nConfirm with the user before running — this removes everything in the resource group, not just the cluster.\n\n## References\n\n- [Quickstart: Deploy an Azure DocumentDB cluster using Bicep](https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdocumentdb\u002Fquickstart-bicep)\n- [Quickstart: Create an Azure DocumentDB cluster by using the Azure portal](https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdocumentdb\u002Fquickstart-portal)\n- [`Microsoft.DocumentDB\u002FmongoClusters` resource reference](https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Ftemplates\u002Fmicrosoft.documentdb\u002Fmongoclusters)\n- Loaded as needed: `references\u002Fbicep-cluster-template.md`, `references\u002Fterraform-cluster-template.md`\n- Ready-to-run copy (no agent required): [`examples\u002Fazure-deployment\u002F`](..\u002F..\u002Fexamples\u002Fazure-deployment\u002F)\n\n## Related skills\n\n- `documentdb-local-deployment` — Docker \u002F Compose for running DocumentDB locally\n- `documentdb-connection` — connection-string tuning after the cluster exists\n- `documentdb-security` — Private Endpoint, Entra RBAC, CMK\n- `documentdb-high-availability` — HA, cross-region replica, SLA tiers\n- `documentdb-monitoring` — diagnostic settings, slow-query logs\n",{"data":42,"body":43},{"name":4,"description":6,"license":33},{"type":44,"children":45},"root",[46,55,101,122,156,163,175,714,741,747,759,925,952,1084,1090,1103,1167,1172,1259,1287,1300,1306,1326,1411,1423,1455,1465,1470,1476,1488,1587,1599,1693,1698,1778,1784,1789,2122,2127,2133,2261,2274,2280,2300,2598,2623,2830,2836,2841,3256,3261,3267,3293,3322,3540,3587,3593,3708,3713,3719,3739,3744,3754,3774,3780,3785,4083,4089,4138,4143,4149,4215,4221,4275],{"type":47,"tag":48,"props":49,"children":51},"element","h1",{"id":50},"deploy-azure-documentdb",[52],{"type":53,"value":54},"text","Deploy Azure DocumentDB",{"type":47,"tag":56,"props":57,"children":58},"p",{},[59,61,67,69,76,78,84,86,99],{"type":53,"value":60},"Interactive skill for provisioning a managed ",{"type":47,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":53,"value":66},"Azure DocumentDB",{"type":53,"value":68}," cluster (resource type ",{"type":47,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":53,"value":75},"Microsoft.DocumentDB\u002FmongoClusters",{"type":53,"value":77},", API ",{"type":47,"tag":70,"props":79,"children":81},{"className":80},[],[82],{"type":53,"value":83},"2025-09-01",{"type":53,"value":85},"). Azure DocumentDB is the managed Azure service built on the open-source ",{"type":47,"tag":87,"props":88,"children":92},"a",{"href":89,"rel":90},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdocumentdb",[91],"nofollow",[93],{"type":47,"tag":70,"props":94,"children":96},{"className":95},[],[97],{"type":53,"value":98},"microsoft\u002Fdocumentdb",{"type":53,"value":100}," engine.",{"type":47,"tag":56,"props":102,"children":103},{},[104,106,112,114,120],{"type":53,"value":105},"For running DocumentDB locally instead (Docker \u002F Compose), use ",{"type":47,"tag":70,"props":107,"children":109},{"className":108},[],[110],{"type":53,"value":111},"documentdb-local-deployment",{"type":53,"value":113},". For connection-string tuning after the cluster exists, use ",{"type":47,"tag":70,"props":115,"children":117},{"className":116},[],[118],{"type":53,"value":119},"documentdb-connection",{"type":53,"value":121},".",{"type":47,"tag":123,"props":124,"children":125},"blockquote",{},[126],{"type":47,"tag":56,"props":127,"children":128},{},[129,134,136,146,148,154],{"type":47,"tag":62,"props":130,"children":131},{},[132],{"type":53,"value":133},"No-agent shortcut.",{"type":53,"value":135}," A ready-to-run Bicep + deploy script is checked in at ",{"type":47,"tag":87,"props":137,"children":139},{"href":138},"..\u002F..\u002Fexamples\u002Fazure-deployment\u002F",[140],{"type":47,"tag":70,"props":141,"children":143},{"className":142},[],[144],{"type":53,"value":145},"examples\u002Fazure-deployment\u002F",{"type":53,"value":147}," — customers who prefer to run the deploy themselves can clone the repo and just run ",{"type":47,"tag":70,"props":149,"children":151},{"className":150},[],[152],{"type":53,"value":153},".\u002Fdeploy.sh",{"type":53,"value":155}," (no arguments). The script interactively lists subscriptions → resource groups → regions (same flow as this skill). Use it as a reference when generating project files too.",{"type":47,"tag":157,"props":158,"children":160},"h2",{"id":159},"step-0-preflight-checks-run-before-anything-else",[161],{"type":53,"value":162},"Step 0 — preflight checks (run before anything else)",{"type":47,"tag":56,"props":164,"children":165},{},[166,168,173],{"type":53,"value":167},"Run these checks at the start of every deployment session. If any fails, ",{"type":47,"tag":62,"props":169,"children":170},{},[171],{"type":53,"value":172},"fix it in place and re-run the loop",{"type":53,"value":174}," before continuing to Step 1 — don't skip ahead, and don't ask the user configuration questions you'll have to re-ask after they fix their environment.",{"type":47,"tag":176,"props":177,"children":182},"pre",{"className":178,"code":179,"language":180,"meta":181,"style":181},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 1. Azure CLI installed?\naz version --query '\"azure-cli\"' -o tsv\n# → If 'az' is not found, stop and install: https:\u002F\u002Flearn.microsoft.com\u002Fcli\u002Fazure\u002Finstall-azure-cli\n\n# 2. Signed in?\naz account show --query '{name:name, id:id}' -o json\n# → On failure, run: az login\n\n# 3. Correct subscription active?\naz account show --query name -o tsv\n# → If wrong, run: az account set --subscription \"\u003Cname-or-id>\"\n\n# 4. Microsoft.DocumentDB provider registered on the subscription?\naz provider show --namespace Microsoft.DocumentDB --query registrationState -o tsv\n# → If 'NotRegistered' or 'Unregistered', run:\n#     az provider register --namespace Microsoft.DocumentDB\n#   Then poll until state is 'Registered' (~1–2 min).\n\n# 5. Caller has Contributor\u002FOwner on the target scope?\naz role assignment list --assignee \"$(az ad signed-in-user show --query id -o tsv)\" \\\n  --scope \"\u002Fsubscriptions\u002F$(az account show --query id -o tsv)\" \\\n  --query \"[].roleDefinitionName\" -o tsv\n# → Expect Contributor, Owner, or a custom role with Microsoft.DocumentDB\u002FmongoClusters\u002Fwrite.\n#   If empty or only a reader role, escalate before proceeding.\n\n# 6. Region supports mongoClusters?\naz provider show --namespace Microsoft.DocumentDB \\\n  --query \"resourceTypes[?resourceType=='mongoClusters'].locations[]\" -o tsv\n# → Confirm the user's chosen location is in the list.\n","bash","",[183],{"type":47,"tag":70,"props":184,"children":185},{"__ignoreMap":181},[186,198,245,254,264,272,316,324,332,341,374,383,391,400,444,453,462,471,479,488,541,582,613,622,631,639,648,676,705],{"type":47,"tag":187,"props":188,"children":191},"span",{"class":189,"line":190},"line",1,[192],{"type":47,"tag":187,"props":193,"children":195},{"style":194},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[196],{"type":53,"value":197},"# 1. Azure CLI installed?\n",{"type":47,"tag":187,"props":199,"children":201},{"class":189,"line":200},2,[202,208,214,219,225,230,235,240],{"type":47,"tag":187,"props":203,"children":205},{"style":204},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[206],{"type":53,"value":207},"az",{"type":47,"tag":187,"props":209,"children":211},{"style":210},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[212],{"type":53,"value":213}," version",{"type":47,"tag":187,"props":215,"children":216},{"style":210},[217],{"type":53,"value":218}," --query",{"type":47,"tag":187,"props":220,"children":222},{"style":221},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[223],{"type":53,"value":224}," '",{"type":47,"tag":187,"props":226,"children":227},{"style":210},[228],{"type":53,"value":229},"\"azure-cli\"",{"type":47,"tag":187,"props":231,"children":232},{"style":221},[233],{"type":53,"value":234},"'",{"type":47,"tag":187,"props":236,"children":237},{"style":210},[238],{"type":53,"value":239}," -o",{"type":47,"tag":187,"props":241,"children":242},{"style":210},[243],{"type":53,"value":244}," tsv\n",{"type":47,"tag":187,"props":246,"children":248},{"class":189,"line":247},3,[249],{"type":47,"tag":187,"props":250,"children":251},{"style":194},[252],{"type":53,"value":253},"# → If 'az' is not found, stop and install: https:\u002F\u002Flearn.microsoft.com\u002Fcli\u002Fazure\u002Finstall-azure-cli\n",{"type":47,"tag":187,"props":255,"children":257},{"class":189,"line":256},4,[258],{"type":47,"tag":187,"props":259,"children":261},{"emptyLinePlaceholder":260},true,[262],{"type":53,"value":263},"\n",{"type":47,"tag":187,"props":265,"children":266},{"class":189,"line":30},[267],{"type":47,"tag":187,"props":268,"children":269},{"style":194},[270],{"type":53,"value":271},"# 2. Signed in?\n",{"type":47,"tag":187,"props":273,"children":275},{"class":189,"line":274},6,[276,280,285,290,294,298,303,307,311],{"type":47,"tag":187,"props":277,"children":278},{"style":204},[279],{"type":53,"value":207},{"type":47,"tag":187,"props":281,"children":282},{"style":210},[283],{"type":53,"value":284}," account",{"type":47,"tag":187,"props":286,"children":287},{"style":210},[288],{"type":53,"value":289}," show",{"type":47,"tag":187,"props":291,"children":292},{"style":210},[293],{"type":53,"value":218},{"type":47,"tag":187,"props":295,"children":296},{"style":221},[297],{"type":53,"value":224},{"type":47,"tag":187,"props":299,"children":300},{"style":210},[301],{"type":53,"value":302},"{name:name, id:id}",{"type":47,"tag":187,"props":304,"children":305},{"style":221},[306],{"type":53,"value":234},{"type":47,"tag":187,"props":308,"children":309},{"style":210},[310],{"type":53,"value":239},{"type":47,"tag":187,"props":312,"children":313},{"style":210},[314],{"type":53,"value":315}," json\n",{"type":47,"tag":187,"props":317,"children":318},{"class":189,"line":34},[319],{"type":47,"tag":187,"props":320,"children":321},{"style":194},[322],{"type":53,"value":323},"# → On failure, run: az login\n",{"type":47,"tag":187,"props":325,"children":327},{"class":189,"line":326},8,[328],{"type":47,"tag":187,"props":329,"children":330},{"emptyLinePlaceholder":260},[331],{"type":53,"value":263},{"type":47,"tag":187,"props":333,"children":335},{"class":189,"line":334},9,[336],{"type":47,"tag":187,"props":337,"children":338},{"style":194},[339],{"type":53,"value":340},"# 3. Correct subscription active?\n",{"type":47,"tag":187,"props":342,"children":344},{"class":189,"line":343},10,[345,349,353,357,361,366,370],{"type":47,"tag":187,"props":346,"children":347},{"style":204},[348],{"type":53,"value":207},{"type":47,"tag":187,"props":350,"children":351},{"style":210},[352],{"type":53,"value":284},{"type":47,"tag":187,"props":354,"children":355},{"style":210},[356],{"type":53,"value":289},{"type":47,"tag":187,"props":358,"children":359},{"style":210},[360],{"type":53,"value":218},{"type":47,"tag":187,"props":362,"children":363},{"style":210},[364],{"type":53,"value":365}," name",{"type":47,"tag":187,"props":367,"children":368},{"style":210},[369],{"type":53,"value":239},{"type":47,"tag":187,"props":371,"children":372},{"style":210},[373],{"type":53,"value":244},{"type":47,"tag":187,"props":375,"children":377},{"class":189,"line":376},11,[378],{"type":47,"tag":187,"props":379,"children":380},{"style":194},[381],{"type":53,"value":382},"# → If wrong, run: az account set --subscription \"\u003Cname-or-id>\"\n",{"type":47,"tag":187,"props":384,"children":386},{"class":189,"line":385},12,[387],{"type":47,"tag":187,"props":388,"children":389},{"emptyLinePlaceholder":260},[390],{"type":53,"value":263},{"type":47,"tag":187,"props":392,"children":394},{"class":189,"line":393},13,[395],{"type":47,"tag":187,"props":396,"children":397},{"style":194},[398],{"type":53,"value":399},"# 4. Microsoft.DocumentDB provider registered on the subscription?\n",{"type":47,"tag":187,"props":401,"children":403},{"class":189,"line":402},14,[404,408,413,417,422,427,431,436,440],{"type":47,"tag":187,"props":405,"children":406},{"style":204},[407],{"type":53,"value":207},{"type":47,"tag":187,"props":409,"children":410},{"style":210},[411],{"type":53,"value":412}," provider",{"type":47,"tag":187,"props":414,"children":415},{"style":210},[416],{"type":53,"value":289},{"type":47,"tag":187,"props":418,"children":419},{"style":210},[420],{"type":53,"value":421}," --namespace",{"type":47,"tag":187,"props":423,"children":424},{"style":210},[425],{"type":53,"value":426}," Microsoft.DocumentDB",{"type":47,"tag":187,"props":428,"children":429},{"style":210},[430],{"type":53,"value":218},{"type":47,"tag":187,"props":432,"children":433},{"style":210},[434],{"type":53,"value":435}," registrationState",{"type":47,"tag":187,"props":437,"children":438},{"style":210},[439],{"type":53,"value":239},{"type":47,"tag":187,"props":441,"children":442},{"style":210},[443],{"type":53,"value":244},{"type":47,"tag":187,"props":445,"children":447},{"class":189,"line":446},15,[448],{"type":47,"tag":187,"props":449,"children":450},{"style":194},[451],{"type":53,"value":452},"# → If 'NotRegistered' or 'Unregistered', run:\n",{"type":47,"tag":187,"props":454,"children":456},{"class":189,"line":455},16,[457],{"type":47,"tag":187,"props":458,"children":459},{"style":194},[460],{"type":53,"value":461},"#     az provider register --namespace Microsoft.DocumentDB\n",{"type":47,"tag":187,"props":463,"children":465},{"class":189,"line":464},17,[466],{"type":47,"tag":187,"props":467,"children":468},{"style":194},[469],{"type":53,"value":470},"#   Then poll until state is 'Registered' (~1–2 min).\n",{"type":47,"tag":187,"props":472,"children":474},{"class":189,"line":473},18,[475],{"type":47,"tag":187,"props":476,"children":477},{"emptyLinePlaceholder":260},[478],{"type":53,"value":263},{"type":47,"tag":187,"props":480,"children":482},{"class":189,"line":481},19,[483],{"type":47,"tag":187,"props":484,"children":485},{"style":194},[486],{"type":53,"value":487},"# 5. Caller has Contributor\u002FOwner on the target scope?\n",{"type":47,"tag":187,"props":489,"children":491},{"class":189,"line":490},20,[492,496,501,506,511,516,521,525,530,535],{"type":47,"tag":187,"props":493,"children":494},{"style":204},[495],{"type":53,"value":207},{"type":47,"tag":187,"props":497,"children":498},{"style":210},[499],{"type":53,"value":500}," role",{"type":47,"tag":187,"props":502,"children":503},{"style":210},[504],{"type":53,"value":505}," assignment",{"type":47,"tag":187,"props":507,"children":508},{"style":210},[509],{"type":53,"value":510}," list",{"type":47,"tag":187,"props":512,"children":513},{"style":210},[514],{"type":53,"value":515}," --assignee",{"type":47,"tag":187,"props":517,"children":518},{"style":221},[519],{"type":53,"value":520}," \"$(",{"type":47,"tag":187,"props":522,"children":523},{"style":204},[524],{"type":53,"value":207},{"type":47,"tag":187,"props":526,"children":527},{"style":210},[528],{"type":53,"value":529}," ad signed-in-user show --query id -o tsv",{"type":47,"tag":187,"props":531,"children":532},{"style":221},[533],{"type":53,"value":534},")\"",{"type":47,"tag":187,"props":536,"children":538},{"style":537},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[539],{"type":53,"value":540}," \\\n",{"type":47,"tag":187,"props":542,"children":544},{"class":189,"line":543},21,[545,550,555,560,565,569,574,578],{"type":47,"tag":187,"props":546,"children":547},{"style":210},[548],{"type":53,"value":549},"  --scope",{"type":47,"tag":187,"props":551,"children":552},{"style":221},[553],{"type":53,"value":554}," \"",{"type":47,"tag":187,"props":556,"children":557},{"style":210},[558],{"type":53,"value":559},"\u002Fsubscriptions\u002F",{"type":47,"tag":187,"props":561,"children":562},{"style":221},[563],{"type":53,"value":564},"$(",{"type":47,"tag":187,"props":566,"children":567},{"style":204},[568],{"type":53,"value":207},{"type":47,"tag":187,"props":570,"children":571},{"style":210},[572],{"type":53,"value":573}," account show --query id -o tsv",{"type":47,"tag":187,"props":575,"children":576},{"style":221},[577],{"type":53,"value":534},{"type":47,"tag":187,"props":579,"children":580},{"style":537},[581],{"type":53,"value":540},{"type":47,"tag":187,"props":583,"children":585},{"class":189,"line":584},22,[586,591,595,600,605,609],{"type":47,"tag":187,"props":587,"children":588},{"style":210},[589],{"type":53,"value":590},"  --query",{"type":47,"tag":187,"props":592,"children":593},{"style":221},[594],{"type":53,"value":554},{"type":47,"tag":187,"props":596,"children":597},{"style":210},[598],{"type":53,"value":599},"[].roleDefinitionName",{"type":47,"tag":187,"props":601,"children":602},{"style":221},[603],{"type":53,"value":604},"\"",{"type":47,"tag":187,"props":606,"children":607},{"style":210},[608],{"type":53,"value":239},{"type":47,"tag":187,"props":610,"children":611},{"style":210},[612],{"type":53,"value":244},{"type":47,"tag":187,"props":614,"children":616},{"class":189,"line":615},23,[617],{"type":47,"tag":187,"props":618,"children":619},{"style":194},[620],{"type":53,"value":621},"# → Expect Contributor, Owner, or a custom role with Microsoft.DocumentDB\u002FmongoClusters\u002Fwrite.\n",{"type":47,"tag":187,"props":623,"children":625},{"class":189,"line":624},24,[626],{"type":47,"tag":187,"props":627,"children":628},{"style":194},[629],{"type":53,"value":630},"#   If empty or only a reader role, escalate before proceeding.\n",{"type":47,"tag":187,"props":632,"children":634},{"class":189,"line":633},25,[635],{"type":47,"tag":187,"props":636,"children":637},{"emptyLinePlaceholder":260},[638],{"type":53,"value":263},{"type":47,"tag":187,"props":640,"children":642},{"class":189,"line":641},26,[643],{"type":47,"tag":187,"props":644,"children":645},{"style":194},[646],{"type":53,"value":647},"# 6. Region supports mongoClusters?\n",{"type":47,"tag":187,"props":649,"children":651},{"class":189,"line":650},27,[652,656,660,664,668,672],{"type":47,"tag":187,"props":653,"children":654},{"style":204},[655],{"type":53,"value":207},{"type":47,"tag":187,"props":657,"children":658},{"style":210},[659],{"type":53,"value":412},{"type":47,"tag":187,"props":661,"children":662},{"style":210},[663],{"type":53,"value":289},{"type":47,"tag":187,"props":665,"children":666},{"style":210},[667],{"type":53,"value":421},{"type":47,"tag":187,"props":669,"children":670},{"style":210},[671],{"type":53,"value":426},{"type":47,"tag":187,"props":673,"children":674},{"style":537},[675],{"type":53,"value":540},{"type":47,"tag":187,"props":677,"children":679},{"class":189,"line":678},28,[680,684,688,693,697,701],{"type":47,"tag":187,"props":681,"children":682},{"style":210},[683],{"type":53,"value":590},{"type":47,"tag":187,"props":685,"children":686},{"style":221},[687],{"type":53,"value":554},{"type":47,"tag":187,"props":689,"children":690},{"style":210},[691],{"type":53,"value":692},"resourceTypes[?resourceType=='mongoClusters'].locations[]",{"type":47,"tag":187,"props":694,"children":695},{"style":221},[696],{"type":53,"value":604},{"type":47,"tag":187,"props":698,"children":699},{"style":210},[700],{"type":53,"value":239},{"type":47,"tag":187,"props":702,"children":703},{"style":210},[704],{"type":53,"value":244},{"type":47,"tag":187,"props":706,"children":708},{"class":189,"line":707},29,[709],{"type":47,"tag":187,"props":710,"children":711},{"style":194},[712],{"type":53,"value":713},"# → Confirm the user's chosen location is in the list.\n",{"type":47,"tag":56,"props":715,"children":716},{},[717,723,725,731,733,739],{"type":47,"tag":70,"props":718,"children":720},{"className":719},[],[721],{"type":53,"value":722},"examples\u002Fazure-deployment\u002Fdeploy.sh",{"type":53,"value":724}," and ",{"type":47,"tag":70,"props":726,"children":728},{"className":727},[],[729],{"type":53,"value":730},"deploy.ps1",{"type":53,"value":732}," implement checks 1–4 automatically and will ",{"type":47,"tag":70,"props":734,"children":736},{"className":735},[],[737],{"type":53,"value":738},"az login",{"type":53,"value":740}," \u002F register the provider \u002F create the resource group as needed. If you're generating deployment files into a user's project, copy those scripts or use them as a template.",{"type":47,"tag":157,"props":742,"children":744},{"id":743},"step-05-is-this-production-or-devtest",[745],{"type":53,"value":746},"Step 0.5 — is this production or dev\u002Ftest?",{"type":47,"tag":56,"props":748,"children":749},{},[750,752,757],{"type":53,"value":751},"Ask the user ",{"type":47,"tag":62,"props":753,"children":754},{},[755],{"type":53,"value":756},"before",{"type":53,"value":758}," anything else in Step 1. The answer drives every default. Never assume.",{"type":47,"tag":760,"props":761,"children":762},"table",{},[763,782],{"type":47,"tag":764,"props":765,"children":766},"thead",{},[767],{"type":47,"tag":768,"props":769,"children":770},"tr",{},[771,777],{"type":47,"tag":772,"props":773,"children":774},"th",{},[775],{"type":53,"value":776},"If \"production\" (default)",{"type":47,"tag":772,"props":778,"children":779},{},[780],{"type":53,"value":781},"If \"dev \u002F prototype \u002F test\"",{"type":47,"tag":783,"props":784,"children":785},"tbody",{},[786,813,837,859,884,902],{"type":47,"tag":768,"props":787,"children":788},{},[789,802],{"type":47,"tag":790,"props":791,"children":792},"td",{},[793,795,800],{"type":53,"value":794},"Tier: ",{"type":47,"tag":62,"props":796,"children":797},{},[798],{"type":53,"value":799},"M30",{"type":53,"value":801}," (minimum that supports HA)",{"type":47,"tag":790,"props":803,"children":804},{},[805,806,811],{"type":53,"value":794},{"type":47,"tag":62,"props":807,"children":808},{},[809],{"type":53,"value":810},"M10",{"type":53,"value":812}," or M20",{"type":47,"tag":768,"props":814,"children":815},{},[816,828],{"type":47,"tag":790,"props":817,"children":818},{},[819,821,826],{"type":53,"value":820},"Storage: ",{"type":47,"tag":62,"props":822,"children":823},{},[824],{"type":53,"value":825},"128 GiB",{"type":53,"value":827}," per shard",{"type":47,"tag":790,"props":829,"children":830},{},[831,832],{"type":53,"value":820},{"type":47,"tag":62,"props":833,"children":834},{},[835],{"type":53,"value":836},"32 GiB",{"type":47,"tag":768,"props":838,"children":839},{},[840,850],{"type":47,"tag":790,"props":841,"children":842},{},[843,845],{"type":53,"value":844},"HA: ",{"type":47,"tag":62,"props":846,"children":847},{},[848],{"type":53,"value":849},"ZoneRedundantPreferred",{"type":47,"tag":790,"props":851,"children":852},{},[853,854],{"type":53,"value":844},{"type":47,"tag":62,"props":855,"children":856},{},[857],{"type":53,"value":858},"Disabled",{"type":47,"tag":768,"props":860,"children":861},{},[862,873],{"type":47,"tag":790,"props":863,"children":864},{},[865,867],{"type":53,"value":866},"Firewall: Private Endpoint; ",{"type":47,"tag":70,"props":868,"children":870},{"className":869},[],[871],{"type":53,"value":872},"allowAzureServices: false",{"type":47,"tag":790,"props":874,"children":875},{},[876,882],{"type":47,"tag":70,"props":877,"children":879},{"className":878},[],[880],{"type":53,"value":881},"allowAzureServices: true",{"type":53,"value":883}," + developer IP rule",{"type":47,"tag":768,"props":885,"children":886},{},[887,897],{"type":47,"tag":790,"props":888,"children":889},{},[890,892],{"type":53,"value":891},"Password source: ",{"type":47,"tag":62,"props":893,"children":894},{},[895],{"type":53,"value":896},"Key Vault reference",{"type":47,"tag":790,"props":898,"children":899},{},[900],{"type":53,"value":901},"Key Vault preferred; literal OK for throwaway",{"type":47,"tag":768,"props":903,"children":904},{},[905,916],{"type":47,"tag":790,"props":906,"children":907},{},[908,910],{"type":53,"value":909},"Parameters file: ",{"type":47,"tag":70,"props":911,"children":913},{"className":912},[],[914],{"type":53,"value":915},"main.parameters.sample.json",{"type":47,"tag":790,"props":917,"children":918},{},[919],{"type":47,"tag":70,"props":920,"children":922},{"className":921},[],[923],{"type":53,"value":924},"main.parameters.dev.json",{"type":47,"tag":56,"props":926,"children":927},{},[928,930,935,937,942,944,950],{"type":53,"value":929},"Production is the safer default — the Bicep template and ",{"type":47,"tag":70,"props":931,"children":933},{"className":932},[],[934],{"type":53,"value":915},{"type":53,"value":936}," in ",{"type":47,"tag":70,"props":938,"children":940},{"className":939},[],[941],{"type":53,"value":145},{"type":53,"value":943}," ship with M30 + ZoneRedundantPreferred + 128 GiB so that a customer who runs ",{"type":47,"tag":70,"props":945,"children":947},{"className":946},[],[948],{"type":53,"value":949},".\u002Fdeploy.sh \u003Crg> \u003Clocation>",{"type":53,"value":951}," without overrides ends up with a cluster they can actually put workloads on. If the user answers \"dev\", either:",{"type":47,"tag":953,"props":954,"children":955},"ul",{},[956,975],{"type":47,"tag":957,"props":958,"children":959},"li",{},[960,962,968,970],{"type":53,"value":961},"pass ",{"type":47,"tag":70,"props":963,"children":965},{"className":964},[],[966],{"type":53,"value":967},"--parameters @main.parameters.dev.json",{"type":53,"value":969}," to the deploy script, ",{"type":47,"tag":62,"props":971,"children":972},{},[973],{"type":53,"value":974},"or",{"type":47,"tag":957,"props":976,"children":977},{},[978,980],{"type":53,"value":979},"override on the command line:\n",{"type":47,"tag":176,"props":981,"children":983},{"className":178,"code":982,"language":180,"meta":181,"style":181},"az deployment group create \\\n  --resource-group \"\u003Crg>\" \\\n  --template-file main.bicep \\\n  --parameters computeTier=M10 storageSizeGb=32 haTargetMode=Disabled\n",[984],{"type":47,"tag":70,"props":985,"children":986},{"__ignoreMap":181},[987,1013,1038,1055],{"type":47,"tag":187,"props":988,"children":989},{"class":189,"line":190},[990,994,999,1004,1009],{"type":47,"tag":187,"props":991,"children":992},{"style":204},[993],{"type":53,"value":207},{"type":47,"tag":187,"props":995,"children":996},{"style":210},[997],{"type":53,"value":998}," deployment",{"type":47,"tag":187,"props":1000,"children":1001},{"style":210},[1002],{"type":53,"value":1003}," group",{"type":47,"tag":187,"props":1005,"children":1006},{"style":210},[1007],{"type":53,"value":1008}," create",{"type":47,"tag":187,"props":1010,"children":1011},{"style":537},[1012],{"type":53,"value":540},{"type":47,"tag":187,"props":1014,"children":1015},{"class":189,"line":200},[1016,1021,1025,1030,1034],{"type":47,"tag":187,"props":1017,"children":1018},{"style":210},[1019],{"type":53,"value":1020},"  --resource-group",{"type":47,"tag":187,"props":1022,"children":1023},{"style":221},[1024],{"type":53,"value":554},{"type":47,"tag":187,"props":1026,"children":1027},{"style":210},[1028],{"type":53,"value":1029},"\u003Crg>",{"type":47,"tag":187,"props":1031,"children":1032},{"style":221},[1033],{"type":53,"value":604},{"type":47,"tag":187,"props":1035,"children":1036},{"style":537},[1037],{"type":53,"value":540},{"type":47,"tag":187,"props":1039,"children":1040},{"class":189,"line":247},[1041,1046,1051],{"type":47,"tag":187,"props":1042,"children":1043},{"style":210},[1044],{"type":53,"value":1045},"  --template-file",{"type":47,"tag":187,"props":1047,"children":1048},{"style":210},[1049],{"type":53,"value":1050}," main.bicep",{"type":47,"tag":187,"props":1052,"children":1053},{"style":537},[1054],{"type":53,"value":540},{"type":47,"tag":187,"props":1056,"children":1057},{"class":189,"line":256},[1058,1063,1068,1073,1079],{"type":47,"tag":187,"props":1059,"children":1060},{"style":210},[1061],{"type":53,"value":1062},"  --parameters",{"type":47,"tag":187,"props":1064,"children":1065},{"style":210},[1066],{"type":53,"value":1067}," computeTier=M10",{"type":47,"tag":187,"props":1069,"children":1070},{"style":210},[1071],{"type":53,"value":1072}," storageSizeGb=",{"type":47,"tag":187,"props":1074,"children":1076},{"style":1075},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1077],{"type":53,"value":1078},"32",{"type":47,"tag":187,"props":1080,"children":1081},{"style":210},[1082],{"type":53,"value":1083}," haTargetMode=Disabled\n",{"type":47,"tag":157,"props":1085,"children":1087},{"id":1086},"step-1-pick-the-azure-subscription-always-ask-never-assume",[1088],{"type":53,"value":1089},"Step 1 — pick the Azure subscription (always ask, never assume)",{"type":47,"tag":56,"props":1091,"children":1092},{},[1093,1095,1101],{"type":53,"value":1094},"The currently active subscription from ",{"type":47,"tag":70,"props":1096,"children":1098},{"className":1097},[],[1099],{"type":53,"value":1100},"az account show",{"type":53,"value":1102}," may not be the one the user wants. Always list and confirm — never silently use the active one.",{"type":47,"tag":176,"props":1104,"children":1106},{"className":178,"code":1105,"language":180,"meta":181,"style":181},"# Show all subscriptions the signed-in user can access\naz account list --query \"[].{Name:name, SubscriptionId:id, State:state, IsDefault:isDefault}\" \\\n  --output table\n",[1107],{"type":47,"tag":70,"props":1108,"children":1109},{"__ignoreMap":181},[1110,1118,1154],{"type":47,"tag":187,"props":1111,"children":1112},{"class":189,"line":190},[1113],{"type":47,"tag":187,"props":1114,"children":1115},{"style":194},[1116],{"type":53,"value":1117},"# Show all subscriptions the signed-in user can access\n",{"type":47,"tag":187,"props":1119,"children":1120},{"class":189,"line":200},[1121,1125,1129,1133,1137,1141,1146,1150],{"type":47,"tag":187,"props":1122,"children":1123},{"style":204},[1124],{"type":53,"value":207},{"type":47,"tag":187,"props":1126,"children":1127},{"style":210},[1128],{"type":53,"value":284},{"type":47,"tag":187,"props":1130,"children":1131},{"style":210},[1132],{"type":53,"value":510},{"type":47,"tag":187,"props":1134,"children":1135},{"style":210},[1136],{"type":53,"value":218},{"type":47,"tag":187,"props":1138,"children":1139},{"style":221},[1140],{"type":53,"value":554},{"type":47,"tag":187,"props":1142,"children":1143},{"style":210},[1144],{"type":53,"value":1145},"[].{Name:name, SubscriptionId:id, State:state, IsDefault:isDefault}",{"type":47,"tag":187,"props":1147,"children":1148},{"style":221},[1149],{"type":53,"value":604},{"type":47,"tag":187,"props":1151,"children":1152},{"style":537},[1153],{"type":53,"value":540},{"type":47,"tag":187,"props":1155,"children":1156},{"class":189,"line":247},[1157,1162],{"type":47,"tag":187,"props":1158,"children":1159},{"style":210},[1160],{"type":53,"value":1161},"  --output",{"type":47,"tag":187,"props":1163,"children":1164},{"style":210},[1165],{"type":53,"value":1166}," table\n",{"type":47,"tag":56,"props":1168,"children":1169},{},[1170],{"type":53,"value":1171},"Present the list to the user and ask them to pick one (by name or ID). Then set it active so subsequent commands are scoped to it:",{"type":47,"tag":176,"props":1173,"children":1175},{"className":178,"code":1174,"language":180,"meta":181,"style":181},"az account set --subscription \"\u003Csubscription-id-or-name>\"\naz account show --query \"{name:name, id:id}\" -o table   # confirm\n",[1176],{"type":47,"tag":70,"props":1177,"children":1178},{"__ignoreMap":181},[1179,1214],{"type":47,"tag":187,"props":1180,"children":1181},{"class":189,"line":190},[1182,1186,1190,1195,1200,1204,1209],{"type":47,"tag":187,"props":1183,"children":1184},{"style":204},[1185],{"type":53,"value":207},{"type":47,"tag":187,"props":1187,"children":1188},{"style":210},[1189],{"type":53,"value":284},{"type":47,"tag":187,"props":1191,"children":1192},{"style":210},[1193],{"type":53,"value":1194}," set",{"type":47,"tag":187,"props":1196,"children":1197},{"style":210},[1198],{"type":53,"value":1199}," --subscription",{"type":47,"tag":187,"props":1201,"children":1202},{"style":221},[1203],{"type":53,"value":554},{"type":47,"tag":187,"props":1205,"children":1206},{"style":210},[1207],{"type":53,"value":1208},"\u003Csubscription-id-or-name>",{"type":47,"tag":187,"props":1210,"children":1211},{"style":221},[1212],{"type":53,"value":1213},"\"\n",{"type":47,"tag":187,"props":1215,"children":1216},{"class":189,"line":200},[1217,1221,1225,1229,1233,1237,1241,1245,1249,1254],{"type":47,"tag":187,"props":1218,"children":1219},{"style":204},[1220],{"type":53,"value":207},{"type":47,"tag":187,"props":1222,"children":1223},{"style":210},[1224],{"type":53,"value":284},{"type":47,"tag":187,"props":1226,"children":1227},{"style":210},[1228],{"type":53,"value":289},{"type":47,"tag":187,"props":1230,"children":1231},{"style":210},[1232],{"type":53,"value":218},{"type":47,"tag":187,"props":1234,"children":1235},{"style":221},[1236],{"type":53,"value":554},{"type":47,"tag":187,"props":1238,"children":1239},{"style":210},[1240],{"type":53,"value":302},{"type":47,"tag":187,"props":1242,"children":1243},{"style":221},[1244],{"type":53,"value":604},{"type":47,"tag":187,"props":1246,"children":1247},{"style":210},[1248],{"type":53,"value":239},{"type":47,"tag":187,"props":1250,"children":1251},{"style":210},[1252],{"type":53,"value":1253}," table",{"type":47,"tag":187,"props":1255,"children":1256},{"style":194},[1257],{"type":53,"value":1258},"   # confirm\n",{"type":47,"tag":56,"props":1260,"children":1261},{},[1262,1264,1270,1272,1278,1280,1285],{"type":53,"value":1263},"Record the chosen subscription ID as ",{"type":47,"tag":70,"props":1265,"children":1267},{"className":1266},[],[1268],{"type":53,"value":1269},"$SUBSCRIPTION_ID",{"type":53,"value":1271}," and pass ",{"type":47,"tag":70,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":53,"value":1277},"--subscription \"$SUBSCRIPTION_ID\"",{"type":53,"value":1279}," to every subsequent ",{"type":47,"tag":70,"props":1281,"children":1283},{"className":1282},[],[1284],{"type":53,"value":207},{"type":53,"value":1286}," command in this flow — this guarantees RG \u002F region lookups stay scoped to the user's choice even if the active context drifts.",{"type":47,"tag":56,"props":1288,"children":1289},{},[1290,1292,1298],{"type":53,"value":1291},"If the user has only one subscription, still confirm out loud (\"I'll deploy into ",{"type":47,"tag":70,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":53,"value":1297},"\u003Cname>",{"type":53,"value":1299}," — OK?\") rather than silently proceeding.",{"type":47,"tag":157,"props":1301,"children":1303},{"id":1302},"step-2-pick-the-resource-group-in-that-subscription-existing-or-new",[1304],{"type":53,"value":1305},"Step 2 — pick the resource group in that subscription (existing or new)",{"type":47,"tag":56,"props":1307,"children":1308},{},[1309,1311,1316,1318,1324],{"type":53,"value":1310},"List the resource groups ",{"type":47,"tag":62,"props":1312,"children":1313},{},[1314],{"type":53,"value":1315},"scoped to the chosen subscription",{"type":53,"value":1317}," (do not omit ",{"type":47,"tag":70,"props":1319,"children":1321},{"className":1320},[],[1322],{"type":53,"value":1323},"--subscription",{"type":53,"value":1325}," — it prevents showing RGs from a different context):",{"type":47,"tag":176,"props":1327,"children":1329},{"className":178,"code":1328,"language":180,"meta":181,"style":181},"az group list \\\n  --subscription \"$SUBSCRIPTION_ID\" \\\n  --query \"[].{Name:name, Location:location}\" \\\n  --output table\n",[1330],{"type":47,"tag":70,"props":1331,"children":1332},{"__ignoreMap":181},[1333,1352,1376,1400],{"type":47,"tag":187,"props":1334,"children":1335},{"class":189,"line":190},[1336,1340,1344,1348],{"type":47,"tag":187,"props":1337,"children":1338},{"style":204},[1339],{"type":53,"value":207},{"type":47,"tag":187,"props":1341,"children":1342},{"style":210},[1343],{"type":53,"value":1003},{"type":47,"tag":187,"props":1345,"children":1346},{"style":210},[1347],{"type":53,"value":510},{"type":47,"tag":187,"props":1349,"children":1350},{"style":537},[1351],{"type":53,"value":540},{"type":47,"tag":187,"props":1353,"children":1354},{"class":189,"line":200},[1355,1360,1364,1368,1372],{"type":47,"tag":187,"props":1356,"children":1357},{"style":210},[1358],{"type":53,"value":1359},"  --subscription",{"type":47,"tag":187,"props":1361,"children":1362},{"style":221},[1363],{"type":53,"value":554},{"type":47,"tag":187,"props":1365,"children":1366},{"style":537},[1367],{"type":53,"value":1269},{"type":47,"tag":187,"props":1369,"children":1370},{"style":221},[1371],{"type":53,"value":604},{"type":47,"tag":187,"props":1373,"children":1374},{"style":537},[1375],{"type":53,"value":540},{"type":47,"tag":187,"props":1377,"children":1378},{"class":189,"line":247},[1379,1383,1387,1392,1396],{"type":47,"tag":187,"props":1380,"children":1381},{"style":210},[1382],{"type":53,"value":590},{"type":47,"tag":187,"props":1384,"children":1385},{"style":221},[1386],{"type":53,"value":554},{"type":47,"tag":187,"props":1388,"children":1389},{"style":210},[1390],{"type":53,"value":1391},"[].{Name:name, Location:location}",{"type":47,"tag":187,"props":1393,"children":1394},{"style":221},[1395],{"type":53,"value":604},{"type":47,"tag":187,"props":1397,"children":1398},{"style":537},[1399],{"type":53,"value":540},{"type":47,"tag":187,"props":1401,"children":1402},{"class":189,"line":256},[1403,1407],{"type":47,"tag":187,"props":1404,"children":1405},{"style":210},[1406],{"type":53,"value":1161},{"type":47,"tag":187,"props":1408,"children":1409},{"style":210},[1410],{"type":53,"value":1166},{"type":47,"tag":56,"props":1412,"children":1413},{},[1414,1416,1421],{"type":53,"value":1415},"Present the list to the user and ask them to pick ",{"type":47,"tag":62,"props":1417,"children":1418},{},[1419],{"type":53,"value":1420},"one of",{"type":53,"value":1422},":",{"type":47,"tag":56,"props":1424,"children":1425},{},[1426,1431,1433,1439,1441,1446,1448,1454],{"type":47,"tag":62,"props":1427,"children":1428},{},[1429],{"type":53,"value":1430},"(a) Reuse an existing RG",{"type":53,"value":1432}," — take its ",{"type":47,"tag":70,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":53,"value":1438},"location",{"type":53,"value":1440}," from the table above and use that as the cluster's region by default. ",{"type":47,"tag":62,"props":1442,"children":1443},{},[1444],{"type":53,"value":1445},"Skip Step 3",{"type":53,"value":1447}," (the region is already fixed by the RG). Record it as ",{"type":47,"tag":70,"props":1449,"children":1451},{"className":1450},[],[1452],{"type":53,"value":1453},"$LOCATION",{"type":53,"value":121},{"type":47,"tag":56,"props":1456,"children":1457},{},[1458,1463],{"type":47,"tag":62,"props":1459,"children":1460},{},[1461],{"type":53,"value":1462},"(b) Create a new RG",{"type":53,"value":1464}," — ask the user for the new RG name, then continue to Step 3 to pick a region before creating it.",{"type":47,"tag":56,"props":1466,"children":1467},{},[1468],{"type":53,"value":1469},"Do not proceed to Step 3 or Step 4 until the user has explicitly picked (a) or (b).",{"type":47,"tag":157,"props":1471,"children":1473},{"id":1472},"step-3-pick-the-azure-region-only-when-creating-a-new-rg",[1474],{"type":53,"value":1475},"Step 3 — pick the Azure region (only when creating a new RG)",{"type":47,"tag":56,"props":1477,"children":1478},{},[1479,1481,1486],{"type":53,"value":1480},"Reached only when the user chose 2(b). List the regions that support ",{"type":47,"tag":70,"props":1482,"children":1484},{"className":1483},[],[1485],{"type":53,"value":75},{"type":53,"value":1487}," so the user can pick one that is both regionally appropriate and supported:",{"type":47,"tag":176,"props":1489,"children":1491},{"className":178,"code":1490,"language":180,"meta":181,"style":181},"az provider show \\\n  --subscription \"$SUBSCRIPTION_ID\" \\\n  --namespace Microsoft.DocumentDB \\\n  --query \"resourceTypes[?resourceType=='mongoClusters'].locations[]\" \\\n  --output tsv\n",[1492],{"type":47,"tag":70,"props":1493,"children":1494},{"__ignoreMap":181},[1495,1514,1537,1553,1576],{"type":47,"tag":187,"props":1496,"children":1497},{"class":189,"line":190},[1498,1502,1506,1510],{"type":47,"tag":187,"props":1499,"children":1500},{"style":204},[1501],{"type":53,"value":207},{"type":47,"tag":187,"props":1503,"children":1504},{"style":210},[1505],{"type":53,"value":412},{"type":47,"tag":187,"props":1507,"children":1508},{"style":210},[1509],{"type":53,"value":289},{"type":47,"tag":187,"props":1511,"children":1512},{"style":537},[1513],{"type":53,"value":540},{"type":47,"tag":187,"props":1515,"children":1516},{"class":189,"line":200},[1517,1521,1525,1529,1533],{"type":47,"tag":187,"props":1518,"children":1519},{"style":210},[1520],{"type":53,"value":1359},{"type":47,"tag":187,"props":1522,"children":1523},{"style":221},[1524],{"type":53,"value":554},{"type":47,"tag":187,"props":1526,"children":1527},{"style":537},[1528],{"type":53,"value":1269},{"type":47,"tag":187,"props":1530,"children":1531},{"style":221},[1532],{"type":53,"value":604},{"type":47,"tag":187,"props":1534,"children":1535},{"style":537},[1536],{"type":53,"value":540},{"type":47,"tag":187,"props":1538,"children":1539},{"class":189,"line":247},[1540,1545,1549],{"type":47,"tag":187,"props":1541,"children":1542},{"style":210},[1543],{"type":53,"value":1544},"  --namespace",{"type":47,"tag":187,"props":1546,"children":1547},{"style":210},[1548],{"type":53,"value":426},{"type":47,"tag":187,"props":1550,"children":1551},{"style":537},[1552],{"type":53,"value":540},{"type":47,"tag":187,"props":1554,"children":1555},{"class":189,"line":256},[1556,1560,1564,1568,1572],{"type":47,"tag":187,"props":1557,"children":1558},{"style":210},[1559],{"type":53,"value":590},{"type":47,"tag":187,"props":1561,"children":1562},{"style":221},[1563],{"type":53,"value":554},{"type":47,"tag":187,"props":1565,"children":1566},{"style":210},[1567],{"type":53,"value":692},{"type":47,"tag":187,"props":1569,"children":1570},{"style":221},[1571],{"type":53,"value":604},{"type":47,"tag":187,"props":1573,"children":1574},{"style":537},[1575],{"type":53,"value":540},{"type":47,"tag":187,"props":1577,"children":1578},{"class":189,"line":30},[1579,1583],{"type":47,"tag":187,"props":1580,"children":1581},{"style":210},[1582],{"type":53,"value":1161},{"type":47,"tag":187,"props":1584,"children":1585},{"style":210},[1586],{"type":53,"value":244},{"type":47,"tag":56,"props":1588,"children":1589},{},[1590,1592,1597],{"type":53,"value":1591},"Present the list and ask the user to pick one. Record it as ",{"type":47,"tag":70,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":53,"value":1453},{"type":53,"value":1598},". Then create the RG in the chosen subscription + region:",{"type":47,"tag":176,"props":1600,"children":1602},{"className":178,"code":1601,"language":180,"meta":181,"style":181},"az group create \\\n  --subscription \"$SUBSCRIPTION_ID\" \\\n  --name \"\u003Cnew-rg-name>\" \\\n  --location \"$LOCATION\"\n",[1603],{"type":47,"tag":70,"props":1604,"children":1605},{"__ignoreMap":181},[1606,1625,1648,1673],{"type":47,"tag":187,"props":1607,"children":1608},{"class":189,"line":190},[1609,1613,1617,1621],{"type":47,"tag":187,"props":1610,"children":1611},{"style":204},[1612],{"type":53,"value":207},{"type":47,"tag":187,"props":1614,"children":1615},{"style":210},[1616],{"type":53,"value":1003},{"type":47,"tag":187,"props":1618,"children":1619},{"style":210},[1620],{"type":53,"value":1008},{"type":47,"tag":187,"props":1622,"children":1623},{"style":537},[1624],{"type":53,"value":540},{"type":47,"tag":187,"props":1626,"children":1627},{"class":189,"line":200},[1628,1632,1636,1640,1644],{"type":47,"tag":187,"props":1629,"children":1630},{"style":210},[1631],{"type":53,"value":1359},{"type":47,"tag":187,"props":1633,"children":1634},{"style":221},[1635],{"type":53,"value":554},{"type":47,"tag":187,"props":1637,"children":1638},{"style":537},[1639],{"type":53,"value":1269},{"type":47,"tag":187,"props":1641,"children":1642},{"style":221},[1643],{"type":53,"value":604},{"type":47,"tag":187,"props":1645,"children":1646},{"style":537},[1647],{"type":53,"value":540},{"type":47,"tag":187,"props":1649,"children":1650},{"class":189,"line":247},[1651,1656,1660,1665,1669],{"type":47,"tag":187,"props":1652,"children":1653},{"style":210},[1654],{"type":53,"value":1655},"  --name",{"type":47,"tag":187,"props":1657,"children":1658},{"style":221},[1659],{"type":53,"value":554},{"type":47,"tag":187,"props":1661,"children":1662},{"style":210},[1663],{"type":53,"value":1664},"\u003Cnew-rg-name>",{"type":47,"tag":187,"props":1666,"children":1667},{"style":221},[1668],{"type":53,"value":604},{"type":47,"tag":187,"props":1670,"children":1671},{"style":537},[1672],{"type":53,"value":540},{"type":47,"tag":187,"props":1674,"children":1675},{"class":189,"line":256},[1676,1681,1685,1689],{"type":47,"tag":187,"props":1677,"children":1678},{"style":210},[1679],{"type":53,"value":1680},"  --location",{"type":47,"tag":187,"props":1682,"children":1683},{"style":221},[1684],{"type":53,"value":554},{"type":47,"tag":187,"props":1686,"children":1687},{"style":537},[1688],{"type":53,"value":1453},{"type":47,"tag":187,"props":1690,"children":1691},{"style":221},[1692],{"type":53,"value":1213},{"type":47,"tag":56,"props":1694,"children":1695},{},[1696],{"type":53,"value":1697},"Confirm creation succeeded before moving on:",{"type":47,"tag":176,"props":1699,"children":1701},{"className":178,"code":1700,"language":180,"meta":181,"style":181},"az group show --subscription \"$SUBSCRIPTION_ID\" --name \"\u003Cnew-rg-name>\" --query \"{name:name, location:location, state:properties.provisioningState}\" -o table\n",[1702],{"type":47,"tag":70,"props":1703,"children":1704},{"__ignoreMap":181},[1705],{"type":47,"tag":187,"props":1706,"children":1707},{"class":189,"line":190},[1708,1712,1716,1720,1724,1728,1732,1736,1741,1745,1749,1753,1757,1761,1766,1770,1774],{"type":47,"tag":187,"props":1709,"children":1710},{"style":204},[1711],{"type":53,"value":207},{"type":47,"tag":187,"props":1713,"children":1714},{"style":210},[1715],{"type":53,"value":1003},{"type":47,"tag":187,"props":1717,"children":1718},{"style":210},[1719],{"type":53,"value":289},{"type":47,"tag":187,"props":1721,"children":1722},{"style":210},[1723],{"type":53,"value":1199},{"type":47,"tag":187,"props":1725,"children":1726},{"style":221},[1727],{"type":53,"value":554},{"type":47,"tag":187,"props":1729,"children":1730},{"style":537},[1731],{"type":53,"value":1269},{"type":47,"tag":187,"props":1733,"children":1734},{"style":221},[1735],{"type":53,"value":604},{"type":47,"tag":187,"props":1737,"children":1738},{"style":210},[1739],{"type":53,"value":1740}," --name",{"type":47,"tag":187,"props":1742,"children":1743},{"style":221},[1744],{"type":53,"value":554},{"type":47,"tag":187,"props":1746,"children":1747},{"style":210},[1748],{"type":53,"value":1664},{"type":47,"tag":187,"props":1750,"children":1751},{"style":221},[1752],{"type":53,"value":604},{"type":47,"tag":187,"props":1754,"children":1755},{"style":210},[1756],{"type":53,"value":218},{"type":47,"tag":187,"props":1758,"children":1759},{"style":221},[1760],{"type":53,"value":554},{"type":47,"tag":187,"props":1762,"children":1763},{"style":210},[1764],{"type":53,"value":1765},"{name:name, location:location, state:properties.provisioningState}",{"type":47,"tag":187,"props":1767,"children":1768},{"style":221},[1769],{"type":53,"value":604},{"type":47,"tag":187,"props":1771,"children":1772},{"style":210},[1773],{"type":53,"value":239},{"type":47,"tag":187,"props":1775,"children":1776},{"style":210},[1777],{"type":53,"value":1166},{"type":47,"tag":157,"props":1779,"children":1781},{"id":1780},"step-4-gather-the-remaining-cluster-inputs",[1782],{"type":53,"value":1783},"Step 4 — gather the remaining cluster inputs",{"type":47,"tag":56,"props":1785,"children":1786},{},[1787],{"type":53,"value":1788},"Now that subscription, RG, and location are fixed, ask for cluster-specific values:",{"type":47,"tag":760,"props":1790,"children":1791},{},[1792,1813],{"type":47,"tag":764,"props":1793,"children":1794},{},[1795],{"type":47,"tag":768,"props":1796,"children":1797},{},[1798,1803,1808],{"type":47,"tag":772,"props":1799,"children":1800},{},[1801],{"type":53,"value":1802},"Input",{"type":47,"tag":772,"props":1804,"children":1805},{},[1806],{"type":53,"value":1807},"Example",{"type":47,"tag":772,"props":1809,"children":1810},{},[1811],{"type":53,"value":1812},"Notes",{"type":47,"tag":783,"props":1814,"children":1815},{},[1816,1838,1873,1896,1985,2011,2033,2068,2088],{"type":47,"tag":768,"props":1817,"children":1818},{},[1819,1824,1833],{"type":47,"tag":790,"props":1820,"children":1821},{},[1822],{"type":53,"value":1823},"Cluster name",{"type":47,"tag":790,"props":1825,"children":1826},{},[1827],{"type":47,"tag":70,"props":1828,"children":1830},{"className":1829},[],[1831],{"type":53,"value":1832},"docdb-prod-001",{"type":47,"tag":790,"props":1834,"children":1835},{},[1836],{"type":53,"value":1837},"8–40 chars, lowercase letters\u002Fdigits\u002Fhyphens; globally unique in Azure",{"type":47,"tag":768,"props":1839,"children":1840},{},[1841,1846,1855],{"type":47,"tag":790,"props":1842,"children":1843},{},[1844],{"type":53,"value":1845},"Admin username",{"type":47,"tag":790,"props":1847,"children":1848},{},[1849],{"type":47,"tag":70,"props":1850,"children":1852},{"className":1851},[],[1853],{"type":53,"value":1854},"clusteradmin",{"type":47,"tag":790,"props":1856,"children":1857},{},[1858,1860,1866,1868],{"type":53,"value":1859},"Avoid reserved names like ",{"type":47,"tag":70,"props":1861,"children":1863},{"className":1862},[],[1864],{"type":53,"value":1865},"admin",{"type":53,"value":1867},", ",{"type":47,"tag":70,"props":1869,"children":1871},{"className":1870},[],[1872],{"type":53,"value":44},{"type":47,"tag":768,"props":1874,"children":1875},{},[1876,1881,1886],{"type":47,"tag":790,"props":1877,"children":1878},{},[1879],{"type":53,"value":1880},"Admin password",{"type":47,"tag":790,"props":1882,"children":1883},{},[1884],{"type":53,"value":1885},"—",{"type":47,"tag":790,"props":1887,"children":1888},{},[1889,1891],{"type":53,"value":1890},"8–128 chars; store in Key Vault — ",{"type":47,"tag":62,"props":1892,"children":1893},{},[1894],{"type":53,"value":1895},"never commit",{"type":47,"tag":768,"props":1897,"children":1898},{},[1899,1904,1928],{"type":47,"tag":790,"props":1900,"children":1901},{},[1902],{"type":53,"value":1903},"Compute tier",{"type":47,"tag":790,"props":1905,"children":1906},{},[1907,1911,1913,1918,1920,1926],{"type":47,"tag":62,"props":1908,"children":1909},{},[1910],{"type":53,"value":799},{"type":53,"value":1912}," (prod default) \u002F ",{"type":47,"tag":70,"props":1914,"children":1916},{"className":1915},[],[1917],{"type":53,"value":810},{"type":53,"value":1919},"–",{"type":47,"tag":70,"props":1921,"children":1923},{"className":1922},[],[1924],{"type":53,"value":1925},"M20",{"type":53,"value":1927}," (dev)",{"type":47,"tag":790,"props":1929,"children":1930},{},[1931,1933,1938,1939,1944,1945,1950,1951,1957,1958,1964,1965,1971,1972,1978,1979],{"type":53,"value":1932},"Full list: ",{"type":47,"tag":70,"props":1934,"children":1936},{"className":1935},[],[1937],{"type":53,"value":810},{"type":53,"value":1867},{"type":47,"tag":70,"props":1940,"children":1942},{"className":1941},[],[1943],{"type":53,"value":1925},{"type":53,"value":1867},{"type":47,"tag":70,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":53,"value":799},{"type":53,"value":1867},{"type":47,"tag":70,"props":1952,"children":1954},{"className":1953},[],[1955],{"type":53,"value":1956},"M40",{"type":53,"value":1867},{"type":47,"tag":70,"props":1959,"children":1961},{"className":1960},[],[1962],{"type":53,"value":1963},"M50",{"type":53,"value":1867},{"type":47,"tag":70,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":53,"value":1970},"M60",{"type":53,"value":1867},{"type":47,"tag":70,"props":1973,"children":1975},{"className":1974},[],[1976],{"type":53,"value":1977},"M80",{"type":53,"value":1867},{"type":47,"tag":70,"props":1980,"children":1982},{"className":1981},[],[1983],{"type":53,"value":1984},"M200",{"type":47,"tag":768,"props":1986,"children":1987},{},[1988,1993,2008],{"type":47,"tag":790,"props":1989,"children":1990},{},[1991],{"type":53,"value":1992},"Storage per shard (GiB)",{"type":47,"tag":790,"props":1994,"children":1995},{},[1996,2001,2002,2007],{"type":47,"tag":62,"props":1997,"children":1998},{},[1999],{"type":53,"value":2000},"128",{"type":53,"value":1912},{"type":47,"tag":70,"props":2003,"children":2005},{"className":2004},[],[2006],{"type":53,"value":1078},{"type":53,"value":1927},{"type":47,"tag":790,"props":2009,"children":2010},{},[],{"type":47,"tag":768,"props":2012,"children":2013},{},[2014,2019,2030],{"type":47,"tag":790,"props":2015,"children":2016},{},[2017],{"type":53,"value":2018},"Shard count",{"type":47,"tag":790,"props":2020,"children":2021},{},[2022,2028],{"type":47,"tag":70,"props":2023,"children":2025},{"className":2024},[],[2026],{"type":53,"value":2027},"1",{"type":53,"value":2029}," (sufficient up to TB scale)",{"type":47,"tag":790,"props":2031,"children":2032},{},[],{"type":47,"tag":768,"props":2034,"children":2035},{},[2036,2041,2063],{"type":47,"tag":790,"props":2037,"children":2038},{},[2039],{"type":53,"value":2040},"High availability",{"type":47,"tag":790,"props":2042,"children":2043},{},[2044,2048,2049,2055,2057,2062],{"type":47,"tag":62,"props":2045,"children":2046},{},[2047],{"type":53,"value":849},{"type":53,"value":1912},{"type":47,"tag":70,"props":2050,"children":2052},{"className":2051},[],[2053],{"type":53,"value":2054},"SameZone",{"type":53,"value":2056}," \u002F ",{"type":47,"tag":70,"props":2058,"children":2060},{"className":2059},[],[2061],{"type":53,"value":858},{"type":53,"value":1927},{"type":47,"tag":790,"props":2064,"children":2065},{},[2066],{"type":53,"value":2067},"Non-Disabled values require M30+",{"type":47,"tag":768,"props":2069,"children":2070},{},[2071,2076,2085],{"type":47,"tag":790,"props":2072,"children":2073},{},[2074],{"type":53,"value":2075},"MongoDB server version",{"type":47,"tag":790,"props":2077,"children":2078},{},[2079],{"type":47,"tag":70,"props":2080,"children":2082},{"className":2081},[],[2083],{"type":53,"value":2084},"8.0",{"type":47,"tag":790,"props":2086,"children":2087},{},[],{"type":47,"tag":768,"props":2089,"children":2090},{},[2091,2096,2109],{"type":47,"tag":790,"props":2092,"children":2093},{},[2094],{"type":53,"value":2095},"Public network access",{"type":47,"tag":790,"props":2097,"children":2098},{},[2099,2101,2107],{"type":53,"value":2100},"Default ",{"type":47,"tag":70,"props":2102,"children":2104},{"className":2103},[],[2105],{"type":53,"value":2106},"Enabled",{"type":53,"value":2108}," with firewall rules",{"type":47,"tag":790,"props":2110,"children":2111},{},[2112,2114,2120],{"type":53,"value":2113},"Or disable and attach Private Endpoint (see ",{"type":47,"tag":70,"props":2115,"children":2117},{"className":2116},[],[2118],{"type":53,"value":2119},"documentdb-security",{"type":53,"value":2121},")",{"type":47,"tag":56,"props":2123,"children":2124},{},[2125],{"type":53,"value":2126},"If the user didn't answer Step 0.5, ask again — without that answer you can't pick the right tier\u002FHA defaults.",{"type":47,"tag":157,"props":2128,"children":2130},{"id":2129},"step-5-choose-a-deployment-path",[2131],{"type":53,"value":2132},"Step 5 — choose a deployment path",{"type":47,"tag":760,"props":2134,"children":2135},{},[2136,2157],{"type":47,"tag":764,"props":2137,"children":2138},{},[2139],{"type":47,"tag":768,"props":2140,"children":2141},{},[2142,2147,2152],{"type":47,"tag":772,"props":2143,"children":2144},{},[2145],{"type":53,"value":2146},"Path",{"type":47,"tag":772,"props":2148,"children":2149},{},[2150],{"type":53,"value":2151},"Use when",{"type":47,"tag":772,"props":2153,"children":2154},{},[2155],{"type":53,"value":2156},"Section",{"type":47,"tag":783,"props":2158,"children":2159},{},[2160,2186,2211,2235],{"type":47,"tag":768,"props":2161,"children":2162},{},[2163,2172,2177],{"type":47,"tag":790,"props":2164,"children":2165},{},[2166,2170],{"type":47,"tag":62,"props":2167,"children":2168},{},[2169],{"type":53,"value":28},{"type":53,"value":2171}," (recommended)",{"type":47,"tag":790,"props":2173,"children":2174},{},[2175],{"type":53,"value":2176},"Repeatable infra-as-code, PR-reviewed, committed to repo",{"type":47,"tag":790,"props":2178,"children":2179},{},[2180],{"type":47,"tag":87,"props":2181,"children":2183},{"href":2182},"#step-6a--deploy-with-bicep",[2184],{"type":53,"value":2185},"Step 6a",{"type":47,"tag":768,"props":2187,"children":2188},{},[2189,2197,2202],{"type":47,"tag":790,"props":2190,"children":2191},{},[2192],{"type":47,"tag":62,"props":2193,"children":2194},{},[2195],{"type":53,"value":2196},"Azure CLI one-shot",{"type":47,"tag":790,"props":2198,"children":2199},{},[2200],{"type":53,"value":2201},"Prototype, local dev, quick validation",{"type":47,"tag":790,"props":2203,"children":2204},{},[2205],{"type":47,"tag":87,"props":2206,"children":2208},{"href":2207},"#step-6b--deploy-with-azure-cli-one-shot",[2209],{"type":53,"value":2210},"Step 6b",{"type":47,"tag":768,"props":2212,"children":2213},{},[2214,2221,2226],{"type":47,"tag":790,"props":2215,"children":2216},{},[2217],{"type":47,"tag":62,"props":2218,"children":2219},{},[2220],{"type":53,"value":25},{"type":47,"tag":790,"props":2222,"children":2223},{},[2224],{"type":53,"value":2225},"Existing Terraform estate",{"type":47,"tag":790,"props":2227,"children":2228},{},[2229],{"type":47,"tag":87,"props":2230,"children":2232},{"href":2231},"#step-6c--deploy-with-terraform",[2233],{"type":53,"value":2234},"Step 6c",{"type":47,"tag":768,"props":2236,"children":2237},{},[2238,2246,2251],{"type":47,"tag":790,"props":2239,"children":2240},{},[2241],{"type":47,"tag":62,"props":2242,"children":2243},{},[2244],{"type":53,"value":2245},"Portal",{"type":47,"tag":790,"props":2247,"children":2248},{},[2249],{"type":53,"value":2250},"First-time users who want to see the UI",{"type":47,"tag":790,"props":2252,"children":2253},{},[2254],{"type":47,"tag":87,"props":2255,"children":2258},{"href":2256,"rel":2257},"https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdocumentdb\u002Fquickstart-portal",[91],[2259],{"type":53,"value":2260},"Azure portal quickstart",{"type":47,"tag":56,"props":2262,"children":2263},{},[2264,2266,2272],{"type":53,"value":2265},"For Bicep, load ",{"type":47,"tag":70,"props":2267,"children":2269},{"className":2268},[],[2270],{"type":53,"value":2271},"references\u002Fbicep-cluster-template.md",{"type":53,"value":2273}," — it contains the canonical parameterized template and an optional private-endpoint variant.",{"type":47,"tag":157,"props":2275,"children":2277},{"id":2276},"step-6a-deploy-with-bicep",[2278],{"type":53,"value":2279},"Step 6a — deploy with Bicep",{"type":47,"tag":56,"props":2281,"children":2282},{},[2283,2285,2291,2293,2298],{"type":53,"value":2284},"Generate ",{"type":47,"tag":70,"props":2286,"children":2288},{"className":2287},[],[2289],{"type":53,"value":2290},"main.bicep",{"type":53,"value":2292}," using the template in ",{"type":47,"tag":70,"props":2294,"children":2296},{"className":2295},[],[2297],{"type":53,"value":2271},{"type":53,"value":2299},", then:",{"type":47,"tag":176,"props":2301,"children":2303},{"className":178,"code":2302,"language":180,"meta":181,"style":181},"# 1. Sign in + select subscription\naz login\naz account set --subscription \"\u003Csubscription-name-or-id>\"\n\n# 2. Create the resource group\naz group create \\\n  --name \"\u003Cresource-group-name>\" \\\n  --location \"\u003Clocation>\"\n\n# 3. Deploy — you'll be prompted for adminUsername \u002F adminPassword\naz deployment group create \\\n  --resource-group \"\u003Cresource-group-name>\" \\\n  --template-file main.bicep\n\n# Non-interactive: use a parameters file (do NOT commit passwords)\naz deployment group create \\\n  --resource-group \"\u003Cresource-group-name>\" \\\n  --template-file main.bicep \\\n  --parameters @main.parameters.json\n",[2304],{"type":47,"tag":70,"props":2305,"children":2306},{"__ignoreMap":181},[2307,2315,2327,2359,2366,2374,2393,2417,2437,2444,2452,2475,2498,2510,2517,2525,2548,2571,2586],{"type":47,"tag":187,"props":2308,"children":2309},{"class":189,"line":190},[2310],{"type":47,"tag":187,"props":2311,"children":2312},{"style":194},[2313],{"type":53,"value":2314},"# 1. Sign in + select subscription\n",{"type":47,"tag":187,"props":2316,"children":2317},{"class":189,"line":200},[2318,2322],{"type":47,"tag":187,"props":2319,"children":2320},{"style":204},[2321],{"type":53,"value":207},{"type":47,"tag":187,"props":2323,"children":2324},{"style":210},[2325],{"type":53,"value":2326}," login\n",{"type":47,"tag":187,"props":2328,"children":2329},{"class":189,"line":247},[2330,2334,2338,2342,2346,2350,2355],{"type":47,"tag":187,"props":2331,"children":2332},{"style":204},[2333],{"type":53,"value":207},{"type":47,"tag":187,"props":2335,"children":2336},{"style":210},[2337],{"type":53,"value":284},{"type":47,"tag":187,"props":2339,"children":2340},{"style":210},[2341],{"type":53,"value":1194},{"type":47,"tag":187,"props":2343,"children":2344},{"style":210},[2345],{"type":53,"value":1199},{"type":47,"tag":187,"props":2347,"children":2348},{"style":221},[2349],{"type":53,"value":554},{"type":47,"tag":187,"props":2351,"children":2352},{"style":210},[2353],{"type":53,"value":2354},"\u003Csubscription-name-or-id>",{"type":47,"tag":187,"props":2356,"children":2357},{"style":221},[2358],{"type":53,"value":1213},{"type":47,"tag":187,"props":2360,"children":2361},{"class":189,"line":256},[2362],{"type":47,"tag":187,"props":2363,"children":2364},{"emptyLinePlaceholder":260},[2365],{"type":53,"value":263},{"type":47,"tag":187,"props":2367,"children":2368},{"class":189,"line":30},[2369],{"type":47,"tag":187,"props":2370,"children":2371},{"style":194},[2372],{"type":53,"value":2373},"# 2. Create the resource group\n",{"type":47,"tag":187,"props":2375,"children":2376},{"class":189,"line":274},[2377,2381,2385,2389],{"type":47,"tag":187,"props":2378,"children":2379},{"style":204},[2380],{"type":53,"value":207},{"type":47,"tag":187,"props":2382,"children":2383},{"style":210},[2384],{"type":53,"value":1003},{"type":47,"tag":187,"props":2386,"children":2387},{"style":210},[2388],{"type":53,"value":1008},{"type":47,"tag":187,"props":2390,"children":2391},{"style":537},[2392],{"type":53,"value":540},{"type":47,"tag":187,"props":2394,"children":2395},{"class":189,"line":34},[2396,2400,2404,2409,2413],{"type":47,"tag":187,"props":2397,"children":2398},{"style":210},[2399],{"type":53,"value":1655},{"type":47,"tag":187,"props":2401,"children":2402},{"style":221},[2403],{"type":53,"value":554},{"type":47,"tag":187,"props":2405,"children":2406},{"style":210},[2407],{"type":53,"value":2408},"\u003Cresource-group-name>",{"type":47,"tag":187,"props":2410,"children":2411},{"style":221},[2412],{"type":53,"value":604},{"type":47,"tag":187,"props":2414,"children":2415},{"style":537},[2416],{"type":53,"value":540},{"type":47,"tag":187,"props":2418,"children":2419},{"class":189,"line":326},[2420,2424,2428,2433],{"type":47,"tag":187,"props":2421,"children":2422},{"style":210},[2423],{"type":53,"value":1680},{"type":47,"tag":187,"props":2425,"children":2426},{"style":221},[2427],{"type":53,"value":554},{"type":47,"tag":187,"props":2429,"children":2430},{"style":210},[2431],{"type":53,"value":2432},"\u003Clocation>",{"type":47,"tag":187,"props":2434,"children":2435},{"style":221},[2436],{"type":53,"value":1213},{"type":47,"tag":187,"props":2438,"children":2439},{"class":189,"line":334},[2440],{"type":47,"tag":187,"props":2441,"children":2442},{"emptyLinePlaceholder":260},[2443],{"type":53,"value":263},{"type":47,"tag":187,"props":2445,"children":2446},{"class":189,"line":343},[2447],{"type":47,"tag":187,"props":2448,"children":2449},{"style":194},[2450],{"type":53,"value":2451},"# 3. Deploy — you'll be prompted for adminUsername \u002F adminPassword\n",{"type":47,"tag":187,"props":2453,"children":2454},{"class":189,"line":376},[2455,2459,2463,2467,2471],{"type":47,"tag":187,"props":2456,"children":2457},{"style":204},[2458],{"type":53,"value":207},{"type":47,"tag":187,"props":2460,"children":2461},{"style":210},[2462],{"type":53,"value":998},{"type":47,"tag":187,"props":2464,"children":2465},{"style":210},[2466],{"type":53,"value":1003},{"type":47,"tag":187,"props":2468,"children":2469},{"style":210},[2470],{"type":53,"value":1008},{"type":47,"tag":187,"props":2472,"children":2473},{"style":537},[2474],{"type":53,"value":540},{"type":47,"tag":187,"props":2476,"children":2477},{"class":189,"line":385},[2478,2482,2486,2490,2494],{"type":47,"tag":187,"props":2479,"children":2480},{"style":210},[2481],{"type":53,"value":1020},{"type":47,"tag":187,"props":2483,"children":2484},{"style":221},[2485],{"type":53,"value":554},{"type":47,"tag":187,"props":2487,"children":2488},{"style":210},[2489],{"type":53,"value":2408},{"type":47,"tag":187,"props":2491,"children":2492},{"style":221},[2493],{"type":53,"value":604},{"type":47,"tag":187,"props":2495,"children":2496},{"style":537},[2497],{"type":53,"value":540},{"type":47,"tag":187,"props":2499,"children":2500},{"class":189,"line":393},[2501,2505],{"type":47,"tag":187,"props":2502,"children":2503},{"style":210},[2504],{"type":53,"value":1045},{"type":47,"tag":187,"props":2506,"children":2507},{"style":210},[2508],{"type":53,"value":2509}," main.bicep\n",{"type":47,"tag":187,"props":2511,"children":2512},{"class":189,"line":402},[2513],{"type":47,"tag":187,"props":2514,"children":2515},{"emptyLinePlaceholder":260},[2516],{"type":53,"value":263},{"type":47,"tag":187,"props":2518,"children":2519},{"class":189,"line":446},[2520],{"type":47,"tag":187,"props":2521,"children":2522},{"style":194},[2523],{"type":53,"value":2524},"# Non-interactive: use a parameters file (do NOT commit passwords)\n",{"type":47,"tag":187,"props":2526,"children":2527},{"class":189,"line":455},[2528,2532,2536,2540,2544],{"type":47,"tag":187,"props":2529,"children":2530},{"style":204},[2531],{"type":53,"value":207},{"type":47,"tag":187,"props":2533,"children":2534},{"style":210},[2535],{"type":53,"value":998},{"type":47,"tag":187,"props":2537,"children":2538},{"style":210},[2539],{"type":53,"value":1003},{"type":47,"tag":187,"props":2541,"children":2542},{"style":210},[2543],{"type":53,"value":1008},{"type":47,"tag":187,"props":2545,"children":2546},{"style":537},[2547],{"type":53,"value":540},{"type":47,"tag":187,"props":2549,"children":2550},{"class":189,"line":464},[2551,2555,2559,2563,2567],{"type":47,"tag":187,"props":2552,"children":2553},{"style":210},[2554],{"type":53,"value":1020},{"type":47,"tag":187,"props":2556,"children":2557},{"style":221},[2558],{"type":53,"value":554},{"type":47,"tag":187,"props":2560,"children":2561},{"style":210},[2562],{"type":53,"value":2408},{"type":47,"tag":187,"props":2564,"children":2565},{"style":221},[2566],{"type":53,"value":604},{"type":47,"tag":187,"props":2568,"children":2569},{"style":537},[2570],{"type":53,"value":540},{"type":47,"tag":187,"props":2572,"children":2573},{"class":189,"line":473},[2574,2578,2582],{"type":47,"tag":187,"props":2575,"children":2576},{"style":210},[2577],{"type":53,"value":1045},{"type":47,"tag":187,"props":2579,"children":2580},{"style":210},[2581],{"type":53,"value":1050},{"type":47,"tag":187,"props":2583,"children":2584},{"style":537},[2585],{"type":53,"value":540},{"type":47,"tag":187,"props":2587,"children":2588},{"class":189,"line":481},[2589,2593],{"type":47,"tag":187,"props":2590,"children":2591},{"style":210},[2592],{"type":53,"value":1062},{"type":47,"tag":187,"props":2594,"children":2595},{"style":210},[2596],{"type":53,"value":2597}," @main.parameters.json\n",{"type":47,"tag":56,"props":2599,"children":2600},{},[2601,2606,2608,2614,2615,2621],{"type":47,"tag":62,"props":2602,"children":2603},{},[2604],{"type":53,"value":2605},"Secret handling.",{"type":53,"value":2607}," Never hardcode ",{"type":47,"tag":70,"props":2609,"children":2611},{"className":2610},[],[2612],{"type":53,"value":2613},"adminPassword",{"type":53,"value":936},{"type":47,"tag":70,"props":2616,"children":2618},{"className":2617},[],[2619],{"type":53,"value":2620},"main.parameters.json",{"type":53,"value":2622}," or a repo. Options:",{"type":47,"tag":953,"props":2624,"children":2625},{},[2626,2818],{"type":47,"tag":957,"props":2627,"children":2628},{},[2629,2631],{"type":53,"value":2630},"Reference Key Vault from the parameters file:\n",{"type":47,"tag":176,"props":2632,"children":2636},{"className":2633,"code":2634,"language":2635,"meta":181,"style":181},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"adminPassword\": {\n    \"reference\": {\n      \"keyVault\": { \"id\": \"\u002Fsubscriptions\u002F...\u002Fvaults\u002Fkv-documentdb\" },\n      \"secretName\": \"docdb-admin-password\"\n    }\n  }\n}\n","json",[2637],{"type":47,"tag":70,"props":2638,"children":2639},{"__ignoreMap":181},[2640,2648,2674,2699,2761,2794,2802,2810],{"type":47,"tag":187,"props":2641,"children":2642},{"class":189,"line":190},[2643],{"type":47,"tag":187,"props":2644,"children":2645},{"style":221},[2646],{"type":53,"value":2647},"{\n",{"type":47,"tag":187,"props":2649,"children":2650},{"class":189,"line":200},[2651,2656,2661,2665,2669],{"type":47,"tag":187,"props":2652,"children":2653},{"style":221},[2654],{"type":53,"value":2655},"  \"",{"type":47,"tag":187,"props":2657,"children":2659},{"style":2658},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[2660],{"type":53,"value":2613},{"type":47,"tag":187,"props":2662,"children":2663},{"style":221},[2664],{"type":53,"value":604},{"type":47,"tag":187,"props":2666,"children":2667},{"style":221},[2668],{"type":53,"value":1422},{"type":47,"tag":187,"props":2670,"children":2671},{"style":221},[2672],{"type":53,"value":2673}," {\n",{"type":47,"tag":187,"props":2675,"children":2676},{"class":189,"line":247},[2677,2682,2687,2691,2695],{"type":47,"tag":187,"props":2678,"children":2679},{"style":221},[2680],{"type":53,"value":2681},"    \"",{"type":47,"tag":187,"props":2683,"children":2684},{"style":204},[2685],{"type":53,"value":2686},"reference",{"type":47,"tag":187,"props":2688,"children":2689},{"style":221},[2690],{"type":53,"value":604},{"type":47,"tag":187,"props":2692,"children":2693},{"style":221},[2694],{"type":53,"value":1422},{"type":47,"tag":187,"props":2696,"children":2697},{"style":221},[2698],{"type":53,"value":2673},{"type":47,"tag":187,"props":2700,"children":2701},{"class":189,"line":256},[2702,2707,2712,2716,2720,2725,2729,2735,2739,2743,2747,2752,2756],{"type":47,"tag":187,"props":2703,"children":2704},{"style":221},[2705],{"type":53,"value":2706},"      \"",{"type":47,"tag":187,"props":2708,"children":2709},{"style":1075},[2710],{"type":53,"value":2711},"keyVault",{"type":47,"tag":187,"props":2713,"children":2714},{"style":221},[2715],{"type":53,"value":604},{"type":47,"tag":187,"props":2717,"children":2718},{"style":221},[2719],{"type":53,"value":1422},{"type":47,"tag":187,"props":2721,"children":2722},{"style":221},[2723],{"type":53,"value":2724}," {",{"type":47,"tag":187,"props":2726,"children":2727},{"style":221},[2728],{"type":53,"value":554},{"type":47,"tag":187,"props":2730,"children":2732},{"style":2731},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2733],{"type":53,"value":2734},"id",{"type":47,"tag":187,"props":2736,"children":2737},{"style":221},[2738],{"type":53,"value":604},{"type":47,"tag":187,"props":2740,"children":2741},{"style":221},[2742],{"type":53,"value":1422},{"type":47,"tag":187,"props":2744,"children":2745},{"style":221},[2746],{"type":53,"value":554},{"type":47,"tag":187,"props":2748,"children":2749},{"style":210},[2750],{"type":53,"value":2751},"\u002Fsubscriptions\u002F...\u002Fvaults\u002Fkv-documentdb",{"type":47,"tag":187,"props":2753,"children":2754},{"style":221},[2755],{"type":53,"value":604},{"type":47,"tag":187,"props":2757,"children":2758},{"style":221},[2759],{"type":53,"value":2760}," },\n",{"type":47,"tag":187,"props":2762,"children":2763},{"class":189,"line":30},[2764,2768,2773,2777,2781,2785,2790],{"type":47,"tag":187,"props":2765,"children":2766},{"style":221},[2767],{"type":53,"value":2706},{"type":47,"tag":187,"props":2769,"children":2770},{"style":1075},[2771],{"type":53,"value":2772},"secretName",{"type":47,"tag":187,"props":2774,"children":2775},{"style":221},[2776],{"type":53,"value":604},{"type":47,"tag":187,"props":2778,"children":2779},{"style":221},[2780],{"type":53,"value":1422},{"type":47,"tag":187,"props":2782,"children":2783},{"style":221},[2784],{"type":53,"value":554},{"type":47,"tag":187,"props":2786,"children":2787},{"style":210},[2788],{"type":53,"value":2789},"docdb-admin-password",{"type":47,"tag":187,"props":2791,"children":2792},{"style":221},[2793],{"type":53,"value":1213},{"type":47,"tag":187,"props":2795,"children":2796},{"class":189,"line":274},[2797],{"type":47,"tag":187,"props":2798,"children":2799},{"style":221},[2800],{"type":53,"value":2801},"    }\n",{"type":47,"tag":187,"props":2803,"children":2804},{"class":189,"line":34},[2805],{"type":47,"tag":187,"props":2806,"children":2807},{"style":221},[2808],{"type":53,"value":2809},"  }\n",{"type":47,"tag":187,"props":2811,"children":2812},{"class":189,"line":326},[2813],{"type":47,"tag":187,"props":2814,"children":2815},{"style":221},[2816],{"type":53,"value":2817},"}\n",{"type":47,"tag":957,"props":2819,"children":2820},{},[2821,2823,2829],{"type":53,"value":2822},"Or pass inline from the shell's own secret source: ",{"type":47,"tag":70,"props":2824,"children":2826},{"className":2825},[],[2827],{"type":53,"value":2828},"--parameters adminPassword=\"$(az keyvault secret show ... --query value -o tsv)\"",{"type":53,"value":121},{"type":47,"tag":157,"props":2831,"children":2833},{"id":2832},"step-6b-deploy-with-azure-cli-one-shot",[2834],{"type":53,"value":2835},"Step 6b — deploy with Azure CLI one-shot",{"type":47,"tag":56,"props":2837,"children":2838},{},[2839],{"type":53,"value":2840},"For quick iteration without a Bicep file:",{"type":47,"tag":176,"props":2842,"children":2844},{"className":178,"code":2843,"language":180,"meta":181,"style":181},"az login\naz account set --subscription \"\u003Csubscription-name-or-id>\"\naz group create --name rg-docdb-dev --location eastus2\n\n# Deploy the cluster via az resource create against the 2025-09-01 API\naz resource create \\\n  --resource-group rg-docdb-dev \\\n  --name docdb-dev-001 \\\n  --resource-type \"Microsoft.DocumentDB\u002FmongoClusters\" \\\n  --api-version 2025-09-01 \\\n  --location eastus2 \\\n  --properties '{\n    \"administrator\": { \"userName\": \"clusteradmin\", \"password\": \"REPLACE_WITH_STRONG_PASSWORD\" },\n    \"serverVersion\": \"8.0\",\n    \"sharding\":       { \"shardCount\": 1 },\n    \"storage\":        { \"sizeGb\": 32 },\n    \"highAvailability\": { \"targetMode\": \"Disabled\" },\n    \"compute\":        { \"tier\": \"M10\" }\n  }'\n\n# Add a firewall rule — \"Allow Azure services\" shortcut uses 0.0.0.0 for both start and end\naz resource create \\\n  --resource-group rg-docdb-dev \\\n  --name \"docdb-dev-001\u002FAllowAllAzureServices\" \\\n  --resource-type \"Microsoft.DocumentDB\u002FmongoClusters\u002FfirewallRules\" \\\n  --api-version 2025-09-01 \\\n  --properties '{ \"startIpAddress\": \"0.0.0.0\", \"endIpAddress\": \"0.0.0.0\" }'\n",[2845],{"type":47,"tag":70,"props":2846,"children":2847},{"__ignoreMap":181},[2848,2859,2890,2924,2931,2939,2959,2974,2990,3014,3031,3047,3063,3071,3079,3087,3095,3103,3111,3124,3131,3139,3158,3173,3197,3221,3236],{"type":47,"tag":187,"props":2849,"children":2850},{"class":189,"line":190},[2851,2855],{"type":47,"tag":187,"props":2852,"children":2853},{"style":204},[2854],{"type":53,"value":207},{"type":47,"tag":187,"props":2856,"children":2857},{"style":210},[2858],{"type":53,"value":2326},{"type":47,"tag":187,"props":2860,"children":2861},{"class":189,"line":200},[2862,2866,2870,2874,2878,2882,2886],{"type":47,"tag":187,"props":2863,"children":2864},{"style":204},[2865],{"type":53,"value":207},{"type":47,"tag":187,"props":2867,"children":2868},{"style":210},[2869],{"type":53,"value":284},{"type":47,"tag":187,"props":2871,"children":2872},{"style":210},[2873],{"type":53,"value":1194},{"type":47,"tag":187,"props":2875,"children":2876},{"style":210},[2877],{"type":53,"value":1199},{"type":47,"tag":187,"props":2879,"children":2880},{"style":221},[2881],{"type":53,"value":554},{"type":47,"tag":187,"props":2883,"children":2884},{"style":210},[2885],{"type":53,"value":2354},{"type":47,"tag":187,"props":2887,"children":2888},{"style":221},[2889],{"type":53,"value":1213},{"type":47,"tag":187,"props":2891,"children":2892},{"class":189,"line":247},[2893,2897,2901,2905,2909,2914,2919],{"type":47,"tag":187,"props":2894,"children":2895},{"style":204},[2896],{"type":53,"value":207},{"type":47,"tag":187,"props":2898,"children":2899},{"style":210},[2900],{"type":53,"value":1003},{"type":47,"tag":187,"props":2902,"children":2903},{"style":210},[2904],{"type":53,"value":1008},{"type":47,"tag":187,"props":2906,"children":2907},{"style":210},[2908],{"type":53,"value":1740},{"type":47,"tag":187,"props":2910,"children":2911},{"style":210},[2912],{"type":53,"value":2913}," rg-docdb-dev",{"type":47,"tag":187,"props":2915,"children":2916},{"style":210},[2917],{"type":53,"value":2918}," --location",{"type":47,"tag":187,"props":2920,"children":2921},{"style":210},[2922],{"type":53,"value":2923}," eastus2\n",{"type":47,"tag":187,"props":2925,"children":2926},{"class":189,"line":256},[2927],{"type":47,"tag":187,"props":2928,"children":2929},{"emptyLinePlaceholder":260},[2930],{"type":53,"value":263},{"type":47,"tag":187,"props":2932,"children":2933},{"class":189,"line":30},[2934],{"type":47,"tag":187,"props":2935,"children":2936},{"style":194},[2937],{"type":53,"value":2938},"# Deploy the cluster via az resource create against the 2025-09-01 API\n",{"type":47,"tag":187,"props":2940,"children":2941},{"class":189,"line":274},[2942,2946,2951,2955],{"type":47,"tag":187,"props":2943,"children":2944},{"style":204},[2945],{"type":53,"value":207},{"type":47,"tag":187,"props":2947,"children":2948},{"style":210},[2949],{"type":53,"value":2950}," resource",{"type":47,"tag":187,"props":2952,"children":2953},{"style":210},[2954],{"type":53,"value":1008},{"type":47,"tag":187,"props":2956,"children":2957},{"style":537},[2958],{"type":53,"value":540},{"type":47,"tag":187,"props":2960,"children":2961},{"class":189,"line":34},[2962,2966,2970],{"type":47,"tag":187,"props":2963,"children":2964},{"style":210},[2965],{"type":53,"value":1020},{"type":47,"tag":187,"props":2967,"children":2968},{"style":210},[2969],{"type":53,"value":2913},{"type":47,"tag":187,"props":2971,"children":2972},{"style":537},[2973],{"type":53,"value":540},{"type":47,"tag":187,"props":2975,"children":2976},{"class":189,"line":326},[2977,2981,2986],{"type":47,"tag":187,"props":2978,"children":2979},{"style":210},[2980],{"type":53,"value":1655},{"type":47,"tag":187,"props":2982,"children":2983},{"style":210},[2984],{"type":53,"value":2985}," docdb-dev-001",{"type":47,"tag":187,"props":2987,"children":2988},{"style":537},[2989],{"type":53,"value":540},{"type":47,"tag":187,"props":2991,"children":2992},{"class":189,"line":334},[2993,2998,3002,3006,3010],{"type":47,"tag":187,"props":2994,"children":2995},{"style":210},[2996],{"type":53,"value":2997},"  --resource-type",{"type":47,"tag":187,"props":2999,"children":3000},{"style":221},[3001],{"type":53,"value":554},{"type":47,"tag":187,"props":3003,"children":3004},{"style":210},[3005],{"type":53,"value":75},{"type":47,"tag":187,"props":3007,"children":3008},{"style":221},[3009],{"type":53,"value":604},{"type":47,"tag":187,"props":3011,"children":3012},{"style":537},[3013],{"type":53,"value":540},{"type":47,"tag":187,"props":3015,"children":3016},{"class":189,"line":343},[3017,3022,3027],{"type":47,"tag":187,"props":3018,"children":3019},{"style":210},[3020],{"type":53,"value":3021},"  --api-version",{"type":47,"tag":187,"props":3023,"children":3024},{"style":210},[3025],{"type":53,"value":3026}," 2025-09-01",{"type":47,"tag":187,"props":3028,"children":3029},{"style":537},[3030],{"type":53,"value":540},{"type":47,"tag":187,"props":3032,"children":3033},{"class":189,"line":376},[3034,3038,3043],{"type":47,"tag":187,"props":3035,"children":3036},{"style":210},[3037],{"type":53,"value":1680},{"type":47,"tag":187,"props":3039,"children":3040},{"style":210},[3041],{"type":53,"value":3042}," eastus2",{"type":47,"tag":187,"props":3044,"children":3045},{"style":537},[3046],{"type":53,"value":540},{"type":47,"tag":187,"props":3048,"children":3049},{"class":189,"line":385},[3050,3055,3059],{"type":47,"tag":187,"props":3051,"children":3052},{"style":210},[3053],{"type":53,"value":3054},"  --properties",{"type":47,"tag":187,"props":3056,"children":3057},{"style":221},[3058],{"type":53,"value":224},{"type":47,"tag":187,"props":3060,"children":3061},{"style":210},[3062],{"type":53,"value":2647},{"type":47,"tag":187,"props":3064,"children":3065},{"class":189,"line":393},[3066],{"type":47,"tag":187,"props":3067,"children":3068},{"style":210},[3069],{"type":53,"value":3070},"    \"administrator\": { \"userName\": \"clusteradmin\", \"password\": \"REPLACE_WITH_STRONG_PASSWORD\" },\n",{"type":47,"tag":187,"props":3072,"children":3073},{"class":189,"line":402},[3074],{"type":47,"tag":187,"props":3075,"children":3076},{"style":210},[3077],{"type":53,"value":3078},"    \"serverVersion\": \"8.0\",\n",{"type":47,"tag":187,"props":3080,"children":3081},{"class":189,"line":446},[3082],{"type":47,"tag":187,"props":3083,"children":3084},{"style":210},[3085],{"type":53,"value":3086},"    \"sharding\":       { \"shardCount\": 1 },\n",{"type":47,"tag":187,"props":3088,"children":3089},{"class":189,"line":455},[3090],{"type":47,"tag":187,"props":3091,"children":3092},{"style":210},[3093],{"type":53,"value":3094},"    \"storage\":        { \"sizeGb\": 32 },\n",{"type":47,"tag":187,"props":3096,"children":3097},{"class":189,"line":464},[3098],{"type":47,"tag":187,"props":3099,"children":3100},{"style":210},[3101],{"type":53,"value":3102},"    \"highAvailability\": { \"targetMode\": \"Disabled\" },\n",{"type":47,"tag":187,"props":3104,"children":3105},{"class":189,"line":473},[3106],{"type":47,"tag":187,"props":3107,"children":3108},{"style":210},[3109],{"type":53,"value":3110},"    \"compute\":        { \"tier\": \"M10\" }\n",{"type":47,"tag":187,"props":3112,"children":3113},{"class":189,"line":481},[3114,3119],{"type":47,"tag":187,"props":3115,"children":3116},{"style":210},[3117],{"type":53,"value":3118},"  }",{"type":47,"tag":187,"props":3120,"children":3121},{"style":221},[3122],{"type":53,"value":3123},"'\n",{"type":47,"tag":187,"props":3125,"children":3126},{"class":189,"line":490},[3127],{"type":47,"tag":187,"props":3128,"children":3129},{"emptyLinePlaceholder":260},[3130],{"type":53,"value":263},{"type":47,"tag":187,"props":3132,"children":3133},{"class":189,"line":543},[3134],{"type":47,"tag":187,"props":3135,"children":3136},{"style":194},[3137],{"type":53,"value":3138},"# Add a firewall rule — \"Allow Azure services\" shortcut uses 0.0.0.0 for both start and end\n",{"type":47,"tag":187,"props":3140,"children":3141},{"class":189,"line":584},[3142,3146,3150,3154],{"type":47,"tag":187,"props":3143,"children":3144},{"style":204},[3145],{"type":53,"value":207},{"type":47,"tag":187,"props":3147,"children":3148},{"style":210},[3149],{"type":53,"value":2950},{"type":47,"tag":187,"props":3151,"children":3152},{"style":210},[3153],{"type":53,"value":1008},{"type":47,"tag":187,"props":3155,"children":3156},{"style":537},[3157],{"type":53,"value":540},{"type":47,"tag":187,"props":3159,"children":3160},{"class":189,"line":615},[3161,3165,3169],{"type":47,"tag":187,"props":3162,"children":3163},{"style":210},[3164],{"type":53,"value":1020},{"type":47,"tag":187,"props":3166,"children":3167},{"style":210},[3168],{"type":53,"value":2913},{"type":47,"tag":187,"props":3170,"children":3171},{"style":537},[3172],{"type":53,"value":540},{"type":47,"tag":187,"props":3174,"children":3175},{"class":189,"line":624},[3176,3180,3184,3189,3193],{"type":47,"tag":187,"props":3177,"children":3178},{"style":210},[3179],{"type":53,"value":1655},{"type":47,"tag":187,"props":3181,"children":3182},{"style":221},[3183],{"type":53,"value":554},{"type":47,"tag":187,"props":3185,"children":3186},{"style":210},[3187],{"type":53,"value":3188},"docdb-dev-001\u002FAllowAllAzureServices",{"type":47,"tag":187,"props":3190,"children":3191},{"style":221},[3192],{"type":53,"value":604},{"type":47,"tag":187,"props":3194,"children":3195},{"style":537},[3196],{"type":53,"value":540},{"type":47,"tag":187,"props":3198,"children":3199},{"class":189,"line":633},[3200,3204,3208,3213,3217],{"type":47,"tag":187,"props":3201,"children":3202},{"style":210},[3203],{"type":53,"value":2997},{"type":47,"tag":187,"props":3205,"children":3206},{"style":221},[3207],{"type":53,"value":554},{"type":47,"tag":187,"props":3209,"children":3210},{"style":210},[3211],{"type":53,"value":3212},"Microsoft.DocumentDB\u002FmongoClusters\u002FfirewallRules",{"type":47,"tag":187,"props":3214,"children":3215},{"style":221},[3216],{"type":53,"value":604},{"type":47,"tag":187,"props":3218,"children":3219},{"style":537},[3220],{"type":53,"value":540},{"type":47,"tag":187,"props":3222,"children":3223},{"class":189,"line":641},[3224,3228,3232],{"type":47,"tag":187,"props":3225,"children":3226},{"style":210},[3227],{"type":53,"value":3021},{"type":47,"tag":187,"props":3229,"children":3230},{"style":210},[3231],{"type":53,"value":3026},{"type":47,"tag":187,"props":3233,"children":3234},{"style":537},[3235],{"type":53,"value":540},{"type":47,"tag":187,"props":3237,"children":3238},{"class":189,"line":650},[3239,3243,3247,3252],{"type":47,"tag":187,"props":3240,"children":3241},{"style":210},[3242],{"type":53,"value":3054},{"type":47,"tag":187,"props":3244,"children":3245},{"style":221},[3246],{"type":53,"value":224},{"type":47,"tag":187,"props":3248,"children":3249},{"style":210},[3250],{"type":53,"value":3251},"{ \"startIpAddress\": \"0.0.0.0\", \"endIpAddress\": \"0.0.0.0\" }",{"type":47,"tag":187,"props":3253,"children":3254},{"style":221},[3255],{"type":53,"value":3123},{"type":47,"tag":56,"props":3257,"children":3258},{},[3259],{"type":53,"value":3260},"Never paste a real password on the command line in shared terminals — read it from an env var or Key Vault.",{"type":47,"tag":157,"props":3262,"children":3264},{"id":3263},"step-6c-deploy-with-terraform",[3265],{"type":53,"value":3266},"Step 6c — deploy with Terraform",{"type":47,"tag":56,"props":3268,"children":3269},{},[3270,3272,3278,3280,3285,3287,3292],{"type":53,"value":3271},"Prefer this when the user already uses Terraform. The AzureRM provider 4.x exposes ",{"type":47,"tag":70,"props":3273,"children":3275},{"className":3274},[],[3276],{"type":53,"value":3277},"azurerm_mongo_cluster",{"type":53,"value":3279},", which targets ",{"type":47,"tag":70,"props":3281,"children":3283},{"className":3282},[],[3284],{"type":53,"value":75},{"type":53,"value":3286}," API ",{"type":47,"tag":70,"props":3288,"children":3290},{"className":3289},[],[3291],{"type":53,"value":83},{"type":53,"value":121},{"type":47,"tag":56,"props":3294,"children":3295},{},[3296,3298,3304,3306,3312,3314,3320],{"type":53,"value":3297},"Load ",{"type":47,"tag":70,"props":3299,"children":3301},{"className":3300},[],[3302],{"type":53,"value":3303},"references\u002Fterraform-cluster-template.md",{"type":53,"value":3305}," for the canonical ",{"type":47,"tag":70,"props":3307,"children":3309},{"className":3308},[],[3310],{"type":53,"value":3311},"main.tf",{"type":53,"value":3313}," (with variables, validation, sample ",{"type":47,"tag":70,"props":3315,"children":3317},{"className":3316},[],[3318],{"type":53,"value":3319},"terraform.tfvars",{"type":53,"value":3321},", and the firewall-rule pattern via the AzAPI provider). Then:",{"type":47,"tag":176,"props":3323,"children":3325},{"className":178,"code":3324,"language":180,"meta":181,"style":181},"export ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv)\nexport TF_VAR_admin_password=$(az keyvault secret show \\\n  --vault-name \u003Ckv-name> --name docdb-admin-password --query value -o tsv)\n\nterraform init -upgrade\nterraform plan  -out main.tfplan\nterraform apply main.tfplan\n",[3326],{"type":47,"tag":70,"props":3327,"children":3328},{"__ignoreMap":181},[3329,3382,3420,3478,3485,3502,3524],{"type":47,"tag":187,"props":3330,"children":3331},{"class":189,"line":190},[3332,3337,3342,3347,3351,3355,3359,3363,3368,3372,3377],{"type":47,"tag":187,"props":3333,"children":3334},{"style":2658},[3335],{"type":53,"value":3336},"export",{"type":47,"tag":187,"props":3338,"children":3339},{"style":537},[3340],{"type":53,"value":3341}," ARM_SUBSCRIPTION_ID",{"type":47,"tag":187,"props":3343,"children":3344},{"style":221},[3345],{"type":53,"value":3346},"=$(",{"type":47,"tag":187,"props":3348,"children":3349},{"style":204},[3350],{"type":53,"value":207},{"type":47,"tag":187,"props":3352,"children":3353},{"style":210},[3354],{"type":53,"value":284},{"type":47,"tag":187,"props":3356,"children":3357},{"style":210},[3358],{"type":53,"value":289},{"type":47,"tag":187,"props":3360,"children":3361},{"style":210},[3362],{"type":53,"value":218},{"type":47,"tag":187,"props":3364,"children":3365},{"style":210},[3366],{"type":53,"value":3367}," id",{"type":47,"tag":187,"props":3369,"children":3370},{"style":210},[3371],{"type":53,"value":239},{"type":47,"tag":187,"props":3373,"children":3374},{"style":210},[3375],{"type":53,"value":3376}," tsv",{"type":47,"tag":187,"props":3378,"children":3379},{"style":221},[3380],{"type":53,"value":3381},")\n",{"type":47,"tag":187,"props":3383,"children":3384},{"class":189,"line":200},[3385,3389,3394,3398,3402,3407,3412,3416],{"type":47,"tag":187,"props":3386,"children":3387},{"style":2658},[3388],{"type":53,"value":3336},{"type":47,"tag":187,"props":3390,"children":3391},{"style":537},[3392],{"type":53,"value":3393}," TF_VAR_admin_password",{"type":47,"tag":187,"props":3395,"children":3396},{"style":221},[3397],{"type":53,"value":3346},{"type":47,"tag":187,"props":3399,"children":3400},{"style":204},[3401],{"type":53,"value":207},{"type":47,"tag":187,"props":3403,"children":3404},{"style":210},[3405],{"type":53,"value":3406}," keyvault",{"type":47,"tag":187,"props":3408,"children":3409},{"style":210},[3410],{"type":53,"value":3411}," secret",{"type":47,"tag":187,"props":3413,"children":3414},{"style":210},[3415],{"type":53,"value":289},{"type":47,"tag":187,"props":3417,"children":3418},{"style":537},[3419],{"type":53,"value":540},{"type":47,"tag":187,"props":3421,"children":3422},{"class":189,"line":247},[3423,3428,3433,3438,3443,3448,3452,3457,3461,3466,3470,3474],{"type":47,"tag":187,"props":3424,"children":3425},{"style":210},[3426],{"type":53,"value":3427},"  --vault-name",{"type":47,"tag":187,"props":3429,"children":3430},{"style":221},[3431],{"type":53,"value":3432}," \u003C",{"type":47,"tag":187,"props":3434,"children":3435},{"style":210},[3436],{"type":53,"value":3437},"kv-nam",{"type":47,"tag":187,"props":3439,"children":3440},{"style":537},[3441],{"type":53,"value":3442},"e",{"type":47,"tag":187,"props":3444,"children":3445},{"style":221},[3446],{"type":53,"value":3447},">",{"type":47,"tag":187,"props":3449,"children":3450},{"style":210},[3451],{"type":53,"value":1740},{"type":47,"tag":187,"props":3453,"children":3454},{"style":210},[3455],{"type":53,"value":3456}," docdb-admin-password",{"type":47,"tag":187,"props":3458,"children":3459},{"style":210},[3460],{"type":53,"value":218},{"type":47,"tag":187,"props":3462,"children":3463},{"style":210},[3464],{"type":53,"value":3465}," value",{"type":47,"tag":187,"props":3467,"children":3468},{"style":210},[3469],{"type":53,"value":239},{"type":47,"tag":187,"props":3471,"children":3472},{"style":210},[3473],{"type":53,"value":3376},{"type":47,"tag":187,"props":3475,"children":3476},{"style":221},[3477],{"type":53,"value":3381},{"type":47,"tag":187,"props":3479,"children":3480},{"class":189,"line":256},[3481],{"type":47,"tag":187,"props":3482,"children":3483},{"emptyLinePlaceholder":260},[3484],{"type":53,"value":263},{"type":47,"tag":187,"props":3486,"children":3487},{"class":189,"line":30},[3488,3492,3497],{"type":47,"tag":187,"props":3489,"children":3490},{"style":204},[3491],{"type":53,"value":26},{"type":47,"tag":187,"props":3493,"children":3494},{"style":210},[3495],{"type":53,"value":3496}," init",{"type":47,"tag":187,"props":3498,"children":3499},{"style":210},[3500],{"type":53,"value":3501}," -upgrade\n",{"type":47,"tag":187,"props":3503,"children":3504},{"class":189,"line":274},[3505,3509,3514,3519],{"type":47,"tag":187,"props":3506,"children":3507},{"style":204},[3508],{"type":53,"value":26},{"type":47,"tag":187,"props":3510,"children":3511},{"style":210},[3512],{"type":53,"value":3513}," plan",{"type":47,"tag":187,"props":3515,"children":3516},{"style":210},[3517],{"type":53,"value":3518},"  -out",{"type":47,"tag":187,"props":3520,"children":3521},{"style":210},[3522],{"type":53,"value":3523}," main.tfplan\n",{"type":47,"tag":187,"props":3525,"children":3526},{"class":189,"line":34},[3527,3531,3536],{"type":47,"tag":187,"props":3528,"children":3529},{"style":204},[3530],{"type":53,"value":26},{"type":47,"tag":187,"props":3532,"children":3533},{"style":210},[3534],{"type":53,"value":3535}," apply",{"type":47,"tag":187,"props":3537,"children":3538},{"style":210},[3539],{"type":53,"value":3523},{"type":47,"tag":56,"props":3541,"children":3542},{},[3543,3545,3551,3553,3558,3559,3564,3566,3571,3573,3578,3580,3586],{"type":53,"value":3544},"The provider's ",{"type":47,"tag":70,"props":3546,"children":3548},{"className":3547},[],[3549],{"type":53,"value":3550},"high_availability_mode",{"type":53,"value":3552}," accepts only ",{"type":47,"tag":70,"props":3554,"children":3556},{"className":3555},[],[3557],{"type":53,"value":858},{"type":53,"value":724},{"type":47,"tag":70,"props":3560,"children":3562},{"className":3561},[],[3563],{"type":53,"value":849},{"type":53,"value":3565}," (the API also accepts ",{"type":47,"tag":70,"props":3567,"children":3569},{"className":3568},[],[3570],{"type":53,"value":2054},{"type":53,"value":3572},", but that mode is not exposed through ",{"type":47,"tag":70,"props":3574,"children":3576},{"className":3575},[],[3577],{"type":53,"value":3277},{"type":53,"value":3579}," 4.x — use the Bicep template if you need it). Full Microsoft quickstart: ",{"type":47,"tag":87,"props":3581,"children":3584},{"href":3582,"rel":3583},"https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdocumentdb\u002Fquickstart-terraform",[91],[3585],{"type":53,"value":3582},{"type":53,"value":121},{"type":47,"tag":157,"props":3588,"children":3590},{"id":3589},"step-7-verify-the-deployment",[3591],{"type":53,"value":3592},"Step 7 — verify the deployment",{"type":47,"tag":176,"props":3594,"children":3596},{"className":178,"code":3595,"language":180,"meta":181,"style":181},"az resource list \\\n  --resource-group \"\u003Cresource-group-name>\" \\\n  --namespace Microsoft.DocumentDB \\\n  --resource-type mongoClusters \\\n  --query \"[].name\" \\\n  --output json\n",[3597],{"type":47,"tag":70,"props":3598,"children":3599},{"__ignoreMap":181},[3600,3619,3642,3657,3673,3697],{"type":47,"tag":187,"props":3601,"children":3602},{"class":189,"line":190},[3603,3607,3611,3615],{"type":47,"tag":187,"props":3604,"children":3605},{"style":204},[3606],{"type":53,"value":207},{"type":47,"tag":187,"props":3608,"children":3609},{"style":210},[3610],{"type":53,"value":2950},{"type":47,"tag":187,"props":3612,"children":3613},{"style":210},[3614],{"type":53,"value":510},{"type":47,"tag":187,"props":3616,"children":3617},{"style":537},[3618],{"type":53,"value":540},{"type":47,"tag":187,"props":3620,"children":3621},{"class":189,"line":200},[3622,3626,3630,3634,3638],{"type":47,"tag":187,"props":3623,"children":3624},{"style":210},[3625],{"type":53,"value":1020},{"type":47,"tag":187,"props":3627,"children":3628},{"style":221},[3629],{"type":53,"value":554},{"type":47,"tag":187,"props":3631,"children":3632},{"style":210},[3633],{"type":53,"value":2408},{"type":47,"tag":187,"props":3635,"children":3636},{"style":221},[3637],{"type":53,"value":604},{"type":47,"tag":187,"props":3639,"children":3640},{"style":537},[3641],{"type":53,"value":540},{"type":47,"tag":187,"props":3643,"children":3644},{"class":189,"line":247},[3645,3649,3653],{"type":47,"tag":187,"props":3646,"children":3647},{"style":210},[3648],{"type":53,"value":1544},{"type":47,"tag":187,"props":3650,"children":3651},{"style":210},[3652],{"type":53,"value":426},{"type":47,"tag":187,"props":3654,"children":3655},{"style":537},[3656],{"type":53,"value":540},{"type":47,"tag":187,"props":3658,"children":3659},{"class":189,"line":256},[3660,3664,3669],{"type":47,"tag":187,"props":3661,"children":3662},{"style":210},[3663],{"type":53,"value":2997},{"type":47,"tag":187,"props":3665,"children":3666},{"style":210},[3667],{"type":53,"value":3668}," mongoClusters",{"type":47,"tag":187,"props":3670,"children":3671},{"style":537},[3672],{"type":53,"value":540},{"type":47,"tag":187,"props":3674,"children":3675},{"class":189,"line":30},[3676,3680,3684,3689,3693],{"type":47,"tag":187,"props":3677,"children":3678},{"style":210},[3679],{"type":53,"value":590},{"type":47,"tag":187,"props":3681,"children":3682},{"style":221},[3683],{"type":53,"value":554},{"type":47,"tag":187,"props":3685,"children":3686},{"style":210},[3687],{"type":53,"value":3688},"[].name",{"type":47,"tag":187,"props":3690,"children":3691},{"style":221},[3692],{"type":53,"value":604},{"type":47,"tag":187,"props":3694,"children":3695},{"style":537},[3696],{"type":53,"value":540},{"type":47,"tag":187,"props":3698,"children":3699},{"class":189,"line":274},[3700,3704],{"type":47,"tag":187,"props":3701,"children":3702},{"style":210},[3703],{"type":53,"value":1161},{"type":47,"tag":187,"props":3705,"children":3706},{"style":210},[3707],{"type":53,"value":315},{"type":47,"tag":56,"props":3709,"children":3710},{},[3711],{"type":53,"value":3712},"Expect one entry matching your cluster name.",{"type":47,"tag":157,"props":3714,"children":3716},{"id":3715},"step-8-retrieve-the-connection-string",[3717],{"type":53,"value":3718},"Step 8 — retrieve the connection string",{"type":47,"tag":56,"props":3720,"children":3721},{},[3722,3724,3729,3731,3737],{"type":53,"value":3723},"From the portal: ",{"type":47,"tag":62,"props":3725,"children":3726},{},[3727],{"type":53,"value":3728},"cluster → Connection strings",{"type":53,"value":3730},". The returned string has a ",{"type":47,"tag":70,"props":3732,"children":3734},{"className":3733},[],[3735],{"type":53,"value":3736},"\u003Cpassword>",{"type":53,"value":3738}," placeholder you must substitute.",{"type":47,"tag":56,"props":3740,"children":3741},{},[3742],{"type":53,"value":3743},"Form of the connection string:",{"type":47,"tag":176,"props":3745,"children":3749},{"className":3746,"code":3748,"language":53},[3747],"language-text","mongodb+srv:\u002F\u002F\u003Cuser>:\u003Cpassword>@\u003Ccluster>.global.mongocluster.cosmos.azure.com\u002F?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\n",[3750],{"type":47,"tag":70,"props":3751,"children":3752},{"__ignoreMap":181},[3753],{"type":53,"value":3748},{"type":47,"tag":56,"props":3755,"children":3756},{},[3757,3759,3765,3767,3772],{"type":53,"value":3758},"Note ",{"type":47,"tag":70,"props":3760,"children":3762},{"className":3761},[],[3763],{"type":53,"value":3764},"retrywrites=false",{"type":53,"value":3766}," — Azure DocumentDB does not support retryable writes; leaving it at the driver default will cause connection errors (see ",{"type":47,"tag":70,"props":3768,"children":3770},{"className":3769},[],[3771],{"type":53,"value":119},{"type":53,"value":3773}," for driver-specific tuning).",{"type":47,"tag":157,"props":3775,"children":3777},{"id":3776},"step-9-configure-access",[3778],{"type":53,"value":3779},"Step 9 — configure access",{"type":47,"tag":56,"props":3781,"children":3782},{},[3783],{"type":53,"value":3784},"Pick one posture and help the user apply it:",{"type":47,"tag":953,"props":3786,"children":3787},{},[3788,4043,4060],{"type":47,"tag":957,"props":3789,"children":3790},{},[3791,3796,3798,4015,4019,4021,4027,4028,4033,4035,4041],{"type":47,"tag":62,"props":3792,"children":3793},{},[3794],{"type":53,"value":3795},"Public + firewall",{"type":53,"value":3797}," (dev only). Add the developer's IP:",{"type":47,"tag":176,"props":3799,"children":3801},{"className":178,"code":3800,"language":180,"meta":181,"style":181},"MY_IP=$(curl -s https:\u002F\u002Fapi.ipify.org)\naz resource create \\\n  --resource-group rg-docdb-dev \\\n  --name \"docdb-dev-001\u002Fdev-$(whoami)\" \\\n  --resource-type \"Microsoft.DocumentDB\u002FmongoClusters\u002FfirewallRules\" \\\n  --api-version 2025-09-01 \\\n  --properties \"{ \\\"startIpAddress\\\": \\\"$MY_IP\\\", \\\"endIpAddress\\\": \\\"$MY_IP\\\" }\"\n",[3802],{"type":47,"tag":70,"props":3803,"children":3804},{"__ignoreMap":181},[3805,3836,3855,3870,3903,3926,3941],{"type":47,"tag":187,"props":3806,"children":3807},{"class":189,"line":190},[3808,3813,3817,3822,3827,3832],{"type":47,"tag":187,"props":3809,"children":3810},{"style":537},[3811],{"type":53,"value":3812},"MY_IP",{"type":47,"tag":187,"props":3814,"children":3815},{"style":221},[3816],{"type":53,"value":3346},{"type":47,"tag":187,"props":3818,"children":3819},{"style":204},[3820],{"type":53,"value":3821},"curl",{"type":47,"tag":187,"props":3823,"children":3824},{"style":210},[3825],{"type":53,"value":3826}," -s",{"type":47,"tag":187,"props":3828,"children":3829},{"style":210},[3830],{"type":53,"value":3831}," https:\u002F\u002Fapi.ipify.org",{"type":47,"tag":187,"props":3833,"children":3834},{"style":221},[3835],{"type":53,"value":3381},{"type":47,"tag":187,"props":3837,"children":3838},{"class":189,"line":200},[3839,3843,3847,3851],{"type":47,"tag":187,"props":3840,"children":3841},{"style":204},[3842],{"type":53,"value":207},{"type":47,"tag":187,"props":3844,"children":3845},{"style":210},[3846],{"type":53,"value":2950},{"type":47,"tag":187,"props":3848,"children":3849},{"style":210},[3850],{"type":53,"value":1008},{"type":47,"tag":187,"props":3852,"children":3853},{"style":537},[3854],{"type":53,"value":540},{"type":47,"tag":187,"props":3856,"children":3857},{"class":189,"line":247},[3858,3862,3866],{"type":47,"tag":187,"props":3859,"children":3860},{"style":210},[3861],{"type":53,"value":1020},{"type":47,"tag":187,"props":3863,"children":3864},{"style":210},[3865],{"type":53,"value":2913},{"type":47,"tag":187,"props":3867,"children":3868},{"style":537},[3869],{"type":53,"value":540},{"type":47,"tag":187,"props":3871,"children":3872},{"class":189,"line":256},[3873,3877,3881,3886,3890,3895,3899],{"type":47,"tag":187,"props":3874,"children":3875},{"style":210},[3876],{"type":53,"value":1655},{"type":47,"tag":187,"props":3878,"children":3879},{"style":221},[3880],{"type":53,"value":554},{"type":47,"tag":187,"props":3882,"children":3883},{"style":210},[3884],{"type":53,"value":3885},"docdb-dev-001\u002Fdev-",{"type":47,"tag":187,"props":3887,"children":3888},{"style":221},[3889],{"type":53,"value":564},{"type":47,"tag":187,"props":3891,"children":3892},{"style":204},[3893],{"type":53,"value":3894},"whoami",{"type":47,"tag":187,"props":3896,"children":3897},{"style":221},[3898],{"type":53,"value":534},{"type":47,"tag":187,"props":3900,"children":3901},{"style":537},[3902],{"type":53,"value":540},{"type":47,"tag":187,"props":3904,"children":3905},{"class":189,"line":30},[3906,3910,3914,3918,3922],{"type":47,"tag":187,"props":3907,"children":3908},{"style":210},[3909],{"type":53,"value":2997},{"type":47,"tag":187,"props":3911,"children":3912},{"style":221},[3913],{"type":53,"value":554},{"type":47,"tag":187,"props":3915,"children":3916},{"style":210},[3917],{"type":53,"value":3212},{"type":47,"tag":187,"props":3919,"children":3920},{"style":221},[3921],{"type":53,"value":604},{"type":47,"tag":187,"props":3923,"children":3924},{"style":537},[3925],{"type":53,"value":540},{"type":47,"tag":187,"props":3927,"children":3928},{"class":189,"line":274},[3929,3933,3937],{"type":47,"tag":187,"props":3930,"children":3931},{"style":210},[3932],{"type":53,"value":3021},{"type":47,"tag":187,"props":3934,"children":3935},{"style":210},[3936],{"type":53,"value":3026},{"type":47,"tag":187,"props":3938,"children":3939},{"style":537},[3940],{"type":53,"value":540},{"type":47,"tag":187,"props":3942,"children":3943},{"class":189,"line":34},[3944,3948,3952,3957,3962,3967,3971,3976,3981,3985,3989,3994,3998,4002,4006,4011],{"type":47,"tag":187,"props":3945,"children":3946},{"style":210},[3947],{"type":53,"value":3054},{"type":47,"tag":187,"props":3949,"children":3950},{"style":221},[3951],{"type":53,"value":554},{"type":47,"tag":187,"props":3953,"children":3954},{"style":210},[3955],{"type":53,"value":3956},"{ ",{"type":47,"tag":187,"props":3958,"children":3959},{"style":537},[3960],{"type":53,"value":3961},"\\\"",{"type":47,"tag":187,"props":3963,"children":3964},{"style":210},[3965],{"type":53,"value":3966},"startIpAddress",{"type":47,"tag":187,"props":3968,"children":3969},{"style":537},[3970],{"type":53,"value":3961},{"type":47,"tag":187,"props":3972,"children":3973},{"style":210},[3974],{"type":53,"value":3975},": ",{"type":47,"tag":187,"props":3977,"children":3978},{"style":537},[3979],{"type":53,"value":3980},"\\\"$MY_IP\\\"",{"type":47,"tag":187,"props":3982,"children":3983},{"style":210},[3984],{"type":53,"value":1867},{"type":47,"tag":187,"props":3986,"children":3987},{"style":537},[3988],{"type":53,"value":3961},{"type":47,"tag":187,"props":3990,"children":3991},{"style":210},[3992],{"type":53,"value":3993},"endIpAddress",{"type":47,"tag":187,"props":3995,"children":3996},{"style":537},[3997],{"type":53,"value":3961},{"type":47,"tag":187,"props":3999,"children":4000},{"style":210},[4001],{"type":53,"value":3975},{"type":47,"tag":187,"props":4003,"children":4004},{"style":537},[4005],{"type":53,"value":3980},{"type":47,"tag":187,"props":4007,"children":4008},{"style":210},[4009],{"type":53,"value":4010}," }",{"type":47,"tag":187,"props":4012,"children":4013},{"style":221},[4014],{"type":53,"value":1213},{"type":47,"tag":4016,"props":4017,"children":4018},"br",{},[],{"type":53,"value":4020},"The ",{"type":47,"tag":70,"props":4022,"children":4024},{"className":4023},[],[4025],{"type":53,"value":4026},"0.0.0.0",{"type":53,"value":1919},{"type":47,"tag":70,"props":4029,"children":4031},{"className":4030},[],[4032],{"type":53,"value":4026},{"type":53,"value":4034}," rule is the documented shortcut for \"Allow Azure services and resources within Azure\" — use for serverless workloads. Never leave ",{"type":47,"tag":70,"props":4036,"children":4038},{"className":4037},[],[4039],{"type":53,"value":4040},"0.0.0.0–255.255.255.255",{"type":53,"value":4042}," in place outside a short connection test.",{"type":47,"tag":957,"props":4044,"children":4045},{},[4046,4051,4053,4058],{"type":47,"tag":62,"props":4047,"children":4048},{},[4049],{"type":53,"value":4050},"Private Endpoint",{"type":53,"value":4052}," (prod). See ",{"type":47,"tag":70,"props":4054,"children":4056},{"className":4055},[],[4057],{"type":53,"value":2119},{"type":53,"value":4059}," — public access should be disabled and a Private DNS zone added.",{"type":47,"tag":957,"props":4061,"children":4062},{},[4063,4068,4070,4075,4076,4082],{"type":47,"tag":62,"props":4064,"children":4065},{},[4066],{"type":53,"value":4067},"Entra RBAC \u002F CMK \u002F diagnostic settings",{"type":53,"value":4069},". See ",{"type":47,"tag":70,"props":4071,"children":4073},{"className":4072},[],[4074],{"type":53,"value":2119},{"type":53,"value":724},{"type":47,"tag":70,"props":4077,"children":4079},{"className":4078},[],[4080],{"type":53,"value":4081},"documentdb-monitoring",{"type":53,"value":121},{"type":47,"tag":157,"props":4084,"children":4086},{"id":4085},"step-10-teardown",[4087],{"type":53,"value":4088},"Step 10 — teardown",{"type":47,"tag":176,"props":4090,"children":4092},{"className":178,"code":4091,"language":180,"meta":181,"style":181},"az group delete --name \"\u003Cresource-group-name>\" --yes --no-wait\n",[4093],{"type":47,"tag":70,"props":4094,"children":4095},{"__ignoreMap":181},[4096],{"type":47,"tag":187,"props":4097,"children":4098},{"class":189,"line":190},[4099,4103,4107,4112,4116,4120,4124,4128,4133],{"type":47,"tag":187,"props":4100,"children":4101},{"style":204},[4102],{"type":53,"value":207},{"type":47,"tag":187,"props":4104,"children":4105},{"style":210},[4106],{"type":53,"value":1003},{"type":47,"tag":187,"props":4108,"children":4109},{"style":210},[4110],{"type":53,"value":4111}," delete",{"type":47,"tag":187,"props":4113,"children":4114},{"style":210},[4115],{"type":53,"value":1740},{"type":47,"tag":187,"props":4117,"children":4118},{"style":221},[4119],{"type":53,"value":554},{"type":47,"tag":187,"props":4121,"children":4122},{"style":210},[4123],{"type":53,"value":2408},{"type":47,"tag":187,"props":4125,"children":4126},{"style":221},[4127],{"type":53,"value":604},{"type":47,"tag":187,"props":4129,"children":4130},{"style":210},[4131],{"type":53,"value":4132}," --yes",{"type":47,"tag":187,"props":4134,"children":4135},{"style":210},[4136],{"type":53,"value":4137}," --no-wait\n",{"type":47,"tag":56,"props":4139,"children":4140},{},[4141],{"type":53,"value":4142},"Confirm with the user before running — this removes everything in the resource group, not just the cluster.",{"type":47,"tag":157,"props":4144,"children":4146},{"id":4145},"references",[4147],{"type":53,"value":4148},"References",{"type":47,"tag":953,"props":4150,"children":4151},{},[4152,4162,4171,4186,4202],{"type":47,"tag":957,"props":4153,"children":4154},{},[4155],{"type":47,"tag":87,"props":4156,"children":4159},{"href":4157,"rel":4158},"https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fdocumentdb\u002Fquickstart-bicep",[91],[4160],{"type":53,"value":4161},"Quickstart: Deploy an Azure DocumentDB cluster using Bicep",{"type":47,"tag":957,"props":4163,"children":4164},{},[4165],{"type":47,"tag":87,"props":4166,"children":4168},{"href":2256,"rel":4167},[91],[4169],{"type":53,"value":4170},"Quickstart: Create an Azure DocumentDB cluster by using the Azure portal",{"type":47,"tag":957,"props":4172,"children":4173},{},[4174],{"type":47,"tag":87,"props":4175,"children":4178},{"href":4176,"rel":4177},"https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Ftemplates\u002Fmicrosoft.documentdb\u002Fmongoclusters",[91],[4179,4184],{"type":47,"tag":70,"props":4180,"children":4182},{"className":4181},[],[4183],{"type":53,"value":75},{"type":53,"value":4185}," resource reference",{"type":47,"tag":957,"props":4187,"children":4188},{},[4189,4191,4196,4197],{"type":53,"value":4190},"Loaded as needed: ",{"type":47,"tag":70,"props":4192,"children":4194},{"className":4193},[],[4195],{"type":53,"value":2271},{"type":53,"value":1867},{"type":47,"tag":70,"props":4198,"children":4200},{"className":4199},[],[4201],{"type":53,"value":3303},{"type":47,"tag":957,"props":4203,"children":4204},{},[4205,4207],{"type":53,"value":4206},"Ready-to-run copy (no agent required): ",{"type":47,"tag":87,"props":4208,"children":4209},{"href":138},[4210],{"type":47,"tag":70,"props":4211,"children":4213},{"className":4212},[],[4214],{"type":53,"value":145},{"type":47,"tag":157,"props":4216,"children":4218},{"id":4217},"related-skills",[4219],{"type":53,"value":4220},"Related skills",{"type":47,"tag":953,"props":4222,"children":4223},{},[4224,4234,4244,4254,4265],{"type":47,"tag":957,"props":4225,"children":4226},{},[4227,4232],{"type":47,"tag":70,"props":4228,"children":4230},{"className":4229},[],[4231],{"type":53,"value":111},{"type":53,"value":4233}," — Docker \u002F Compose for running DocumentDB locally",{"type":47,"tag":957,"props":4235,"children":4236},{},[4237,4242],{"type":47,"tag":70,"props":4238,"children":4240},{"className":4239},[],[4241],{"type":53,"value":119},{"type":53,"value":4243}," — connection-string tuning after the cluster exists",{"type":47,"tag":957,"props":4245,"children":4246},{},[4247,4252],{"type":47,"tag":70,"props":4248,"children":4250},{"className":4249},[],[4251],{"type":53,"value":2119},{"type":53,"value":4253}," — Private Endpoint, Entra RBAC, CMK",{"type":47,"tag":957,"props":4255,"children":4256},{},[4257,4263],{"type":47,"tag":70,"props":4258,"children":4260},{"className":4259},[],[4261],{"type":53,"value":4262},"documentdb-high-availability",{"type":53,"value":4264}," — HA, cross-region replica, SLA tiers",{"type":47,"tag":957,"props":4266,"children":4267},{},[4268,4273],{"type":47,"tag":70,"props":4269,"children":4271},{"className":4270},[],[4272],{"type":53,"value":4081},{"type":53,"value":4274}," — diagnostic settings, slow-query logs",{"type":47,"tag":4276,"props":4277,"children":4278},"style",{},[4279],{"type":53,"value":4280},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4282,"total":464},[4283,4292,4303,4318,4331,4343,4355],{"slug":4,"name":4,"fn":5,"description":6,"org":4284,"tags":4285,"stars":30,"repoUrl":31,"updatedAt":32},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4286,4287,4288,4289,4290,4291],{"name":11,"slug":8,"type":14},{"name":28,"slug":29,"type":14},{"name":16,"slug":17,"type":14},{"name":19,"slug":20,"type":14},{"name":22,"slug":23,"type":14},{"name":25,"slug":26,"type":14},{"slug":119,"name":119,"fn":4293,"description":4294,"org":4295,"tags":4296,"stars":30,"repoUrl":31,"updatedAt":4302},"configure MongoDB connections for DocumentDB","Optimize MongoDB client connection configuration (pools, timeouts, patterns) for Azure DocumentDB. Use this skill when working on functions that instantiate or configure a MongoDB client (e.g., calling `connect()`), configuring connection pools, troubleshooting connection errors (ECONNREFUSED, timeouts, pool exhaustion), optimizing connection-related performance issues. Includes scenarios like building serverless functions, creating API endpoints, optimizing high-traffic applications, or debugging connection failures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4297,4298,4299],{"name":11,"slug":8,"type":14},{"name":19,"slug":20,"type":14},{"name":4300,"slug":4301,"type":14},"Performance","performance","2026-07-12T08:18:49.875358",{"slug":4304,"name":4304,"fn":4305,"description":4306,"org":4307,"tags":4308,"stars":30,"repoUrl":31,"updatedAt":4317},"documentdb-data-modeling","design Azure DocumentDB data models","Data modeling patterns for Azure DocumentDB — embed vs reference, 16 MB document limit, denormalization for read-heavy workloads, schema versioning. Use when designing new schemas, reviewing existing data models, migrating from SQL, deciding between embedding and referencing, modeling one-to-one \u002F one-to-many \u002F many-to-many relationships, or troubleshooting document-size and query-performance problems that stem from the data model.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4309,4310,4313,4314],{"name":11,"slug":8,"type":14},{"name":4311,"slug":4312,"type":14},"Data Modeling","data-modeling",{"name":19,"slug":20,"type":14},{"name":4315,"slug":4316,"type":14},"MongoDB","mongodb","2026-08-01T05:42:33.42955",{"slug":4319,"name":4319,"fn":4320,"description":4321,"org":4322,"tags":4323,"stars":30,"repoUrl":31,"updatedAt":4330},"documentdb-driver","implement Azure DocumentDB driver best practices","MongoDB driver and SDK best practices for Azure DocumentDB — singleton `MongoClient`, connection reuse, connection-pool fundamentals. Use when writing code that instantiates a MongoDB client, reviewing driver initialization, or diagnosing connection-related bugs. For full connection-pool tuning (serverless vs OLTP vs OLAP, timeouts, retries), see the `documentdb-connection` skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4324,4325,4326,4327],{"name":11,"slug":8,"type":14},{"name":19,"slug":20,"type":14},{"name":4315,"slug":4316,"type":14},{"name":4328,"slug":4329,"type":14},"SDK","sdk","2026-07-12T08:18:42.136316",{"slug":4332,"name":4332,"fn":4333,"description":4334,"org":4335,"tags":4336,"stars":30,"repoUrl":31,"updatedAt":4342},"documentdb-full-text-search","implement full-text search in Azure DocumentDB","Full-text search best practices for Azure DocumentDB using the `createSearchIndexes` command and `$search` aggregation stage — BM25 keyword scoring, fuzzy search (`maxEdits`), phrase search with `slop`, custom analyzers (keyword + lowerCase + asciiFolding + edgeGram) for prefix \u002F ID matching, `pathHierarchy` tokenizer for hierarchical IDs, multi-field search indexes, and hybrid (BM25 + vector) retrieval via Reciprocal Rank Fusion. Use when building search experiences, adding typo tolerance, matching phrases or prefixes on IDs \u002F SKUs \u002F part numbers, or combining lexical and semantic retrieval on the same collection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4337,4338,4339],{"name":11,"slug":8,"type":14},{"name":19,"slug":20,"type":14},{"name":4340,"slug":4341,"type":14},"Search","search","2026-07-15T06:02:41.270913",{"slug":4262,"name":4262,"fn":4344,"description":4345,"org":4346,"tags":4347,"stars":30,"repoUrl":31,"updatedAt":4354},"configure high availability for DocumentDB","High availability, business-continuity, and disaster-recovery best practices for Azure DocumentDB — enabling in-region HA with availability zones (99.99% SLA), adding active-passive cross-region replica clusters (99.995% SLA), and understanding automatic backup retention. Use when designing production topology, planning failover, provisioning DR, picking regions, or reviewing cluster architecture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4348,4349,4350,4353],{"name":11,"slug":8,"type":14},{"name":19,"slug":20,"type":14},{"name":4351,"slug":4352,"type":14},"Operations","operations",{"name":4300,"slug":4301,"type":14},"2026-07-12T08:18:53.654505",{"slug":4356,"name":4356,"fn":4357,"description":4358,"org":4359,"tags":4360,"stars":30,"repoUrl":31,"updatedAt":4369},"documentdb-indexing","select and shape Azure DocumentDB indexes","Index-type selection and shape guidance for Azure DocumentDB — when to use single-field, compound (ESR), multikey, wildcard, hashed, 2dsphere, TTL, and vector indexes; query-pattern → index-shape cookbook; per-collection index budget; DocumentDB-specific preference for `textSearch` over community `$text`. Use when designing or reviewing indexes, choosing an index type for a query pattern, or deciding whether an additional index is worth the write cost.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4361,4362,4365,4366],{"name":11,"slug":8,"type":14},{"name":4363,"slug":4364,"type":14},"Cosmos DB","cosmos-db",{"name":19,"slug":20,"type":14},{"name":4367,"slug":4368,"type":14},"NoSQL","nosql","2026-07-12T08:18:44.753904",{"items":4371,"total":4544},[4372,4391,4408,4427,4440,4455,4468,4483,4494,4506,4519,4532],{"slug":4373,"name":4373,"fn":4374,"description":4375,"org":4376,"tags":4377,"stars":4388,"repoUrl":4389,"updatedAt":4390},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4378,4379,4382,4385],{"name":11,"slug":8,"type":14},{"name":4380,"slug":4381,"type":14},"Compliance","compliance",{"name":4383,"slug":4384,"type":14},"Governance","governance",{"name":4386,"slug":4387,"type":14},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":4392,"name":4392,"fn":4393,"description":4394,"org":4395,"tags":4396,"stars":4405,"repoUrl":4406,"updatedAt":4407},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4397,4398,4399,4402],{"name":11,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":4400,"slug":4401,"type":14},"Infrastructure as Code","infrastructure-as-code",{"name":4403,"slug":4404,"type":14},"Migration","migration",260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":4409,"name":4409,"fn":4410,"description":4411,"org":4412,"tags":4413,"stars":4424,"repoUrl":4425,"updatedAt":4426},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4414,4417,4418,4421],{"name":4415,"slug":4416,"type":14},"API Development","api-development",{"name":11,"slug":8,"type":14},{"name":4419,"slug":4420,"type":14},"Code Review","code-review",{"name":4422,"slug":4423,"type":14},"Documentation","documentation",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":4428,"name":4428,"fn":4429,"description":4430,"org":4431,"tags":4432,"stars":4424,"repoUrl":4425,"updatedAt":4439},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4433,4434,4435,4436],{"name":11,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":4328,"slug":4329,"type":14},{"name":4437,"slug":4438,"type":14},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":4441,"name":4441,"fn":4442,"description":4443,"org":4444,"tags":4445,"stars":4424,"repoUrl":4425,"updatedAt":4454},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4446,4447,4450,4453],{"name":11,"slug":8,"type":14},{"name":4448,"slug":4449,"type":14},"GitHub","github",{"name":4451,"slug":4452,"type":14},"Project Management","project-management",{"name":4328,"slug":4329,"type":14},"2026-07-12T08:17:38.345387",{"slug":4456,"name":4456,"fn":4457,"description":4458,"org":4459,"tags":4460,"stars":4424,"repoUrl":4425,"updatedAt":4467},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4461,4462,4465,4466],{"name":11,"slug":8,"type":14},{"name":4463,"slug":4464,"type":14},"CI\u002FCD","ci-cd",{"name":22,"slug":23,"type":14},{"name":4328,"slug":4329,"type":14},"2026-07-12T08:17:34.27607",{"slug":4469,"name":4469,"fn":4470,"description":4471,"org":4472,"tags":4473,"stars":4424,"repoUrl":4425,"updatedAt":4482},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4474,4475,4476,4479],{"name":4415,"slug":4416,"type":14},{"name":11,"slug":8,"type":14},{"name":4477,"slug":4478,"type":14},"OpenAPI","openapi",{"name":4480,"slug":4481,"type":14},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":4484,"name":4484,"fn":4485,"description":4486,"org":4487,"tags":4488,"stars":4424,"repoUrl":4425,"updatedAt":4493},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4489,4490,4491,4492],{"name":11,"slug":8,"type":14},{"name":4463,"slug":4464,"type":14},{"name":4328,"slug":4329,"type":14},{"name":4437,"slug":4438,"type":14},"2026-07-12T08:17:37.08523",{"slug":4495,"name":4495,"fn":4496,"description":4497,"org":4498,"tags":4499,"stars":4424,"repoUrl":4425,"updatedAt":4505},"markdown-token-optimizer","optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4500,4503,4504],{"name":4501,"slug":4502,"type":14},"LLM","llm",{"name":4300,"slug":4301,"type":14},{"name":4480,"slug":4481,"type":14},"2026-07-12T08:17:42.080413",{"slug":4507,"name":4507,"fn":4508,"description":4509,"org":4510,"tags":4511,"stars":4424,"repoUrl":4425,"updatedAt":4518},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4512,4513,4514,4517],{"name":11,"slug":8,"type":14},{"name":4463,"slug":4464,"type":14},{"name":4515,"slug":4516,"type":14},"Debugging","debugging",{"name":4328,"slug":4329,"type":14},"2026-07-12T08:17:40.821512",{"slug":4520,"name":4520,"fn":4521,"description":4522,"org":4523,"tags":4524,"stars":4424,"repoUrl":4425,"updatedAt":4531},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4525,4526,4527,4530],{"name":11,"slug":8,"type":14},{"name":4380,"slug":4381,"type":14},{"name":4528,"slug":4529,"type":14},"Process Optimization","process-optimization",{"name":4480,"slug":4481,"type":14},"2026-07-12T08:17:32.970921",{"slug":4533,"name":4533,"fn":4534,"description":4535,"org":4536,"tags":4537,"stars":4424,"repoUrl":4425,"updatedAt":4543},"skill-authoring","author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4538,4539,4542],{"name":4422,"slug":4423,"type":14},{"name":4540,"slug":4541,"type":14},"Plugin Development","plugin-development",{"name":4480,"slug":4481,"type":14},"2026-07-12T08:17:35.873862",109]