Skip to content

Quick start (Terraform)

This path always follows the same lifecycle: configure → preflight → plan → review → apply saved plan → verify. Prefer Microsoft’s native IaC? See Quick start (Bicep).

No-install option — every command below also works in Azure Cloud Shell (Bash). Cloud Shell is pre-authenticated and ships with az, terraform, and git. See Prerequisites → Option A: Cloud Shell for the full walkthrough and Terraform-version pinning tip.

Terminal window
git clone https://github.com/travishankins/azure-launchpad.git
cd azure-launchpad
az login
export ARM_SUBSCRIPTION_ID=<subscription-id>

Use the configuration generator and save its Terraform output as infra/terraform/foundation/scenarios/wizard.auto.tfvars.

Terminal window
./scripts/bootstrap-state.sh

This creates the storage backend, grants the signed-in identity Storage Blob Data Contributor, and writes the ignored .launchpad/backend.hcl. See Prerequisites → Azure access for the one-time role-assignment requirement.

Terminal window
./scripts/deploy.sh plan --iac terraform --mode single \
--subscription "$ARM_SUBSCRIPTION_ID" \
--scenario baseline \
--config infra/terraform/foundation/scenarios/wizard.auto.tfvars

The command checks tools, authentication, subscription access, configuration, and backend setup before creating .launchpad/plans/foundation.baseline.single.tfplan.

Terminal window
./scripts/deploy.sh apply --iac terraform --mode single \
--subscription "$ARM_SUBSCRIPTION_ID" \
--scenario baseline \
--config infra/terraform/foundation/scenarios/wizard.auto.tfvars \
--plan-file .launchpad/plans/foundation.baseline.single.tfplan

apply refuses to run without a saved plan.

Terminal window
./scripts/verify.sh --mode single \
--subscription "$ARM_SUBSCRIPTION_ID" \
--scenario baseline --name-prefix contoso --region-short wcus

To switch scenarios, regenerate the configuration and repeat plan/apply with the matching scenario. Each scenario and deployment mode gets a separate workspace, state key, and plan filename.