{
  "markdown": "# SAP Deployment Automation Framework with GitHub Actions\n\nThis repository is a configuration and workflow template for deploying SAP on Azure with the [SAP Deployment Automation Framework (SDAF)](https://github.com/Azure/sap-automation). SDAF uses Terraform to deploy infrastructure and Ansible to configure operating systems and install SAP software.\n\n## Repository responsibilities\n\n- [`Azure/sap-automation`](https://github.com/Azure/sap-automation) is the central SDAF\n  documentation hub. It owns the core Terraform, Ansible, deployment scripts, runner\n  implementation, and the\n  [`SDAF-GitHub-Actions` setup utility](https://github.com/Azure/sap-automation/tree/main/deploy/scripts/py_scripts/SDAF-GitHub-Actions).\n- [`Azure/sap-automation-gh-bootstrap`](https://github.com/Azure/sap-automation-gh-bootstrap)\n  (this repository) is the customer configuration template. It owns the `.cfg_template`\n  files, generated `WORKSPACES` configuration, and GitHub Actions workflows.\n- [`Azure/sap-automation-bootstrap`](https://github.com/Azure/sap-automation-bootstrap)\n  owns the Azure DevOps customer configuration and wrapper pipelines.\n- [`Azure/SAP-automation-samples`](https://github.com/Azure/SAP-automation-samples)\n  owns shared Terraform samples and SAP Bill of Materials (BoM) definitions consumed by\n  the execution models.\n\nUse the [central SDAF hub](https://github.com/Azure/sap-automation) to compare GitHub\nActions, Azure DevOps, and local or scripted execution. This repository documents only\nthe GitHub Actions-specific procedure.\n\nThe deployment consists of:\n\n1. A **control plane** containing the deployer virtual machine, SAP library, Terraform state, credentials, and self-hosted GitHub Actions runner.\n2. An **SAP application plane** containing workload zones and SAP systems managed by the control plane.\n\n> [!WARNING]\n> The sample configuration creates billable Azure resources. Review architecture, networking, sizing, quota, security, and cost before applying a Terraform plan.\n\n## AI-skills plugin\n\nThis repository ships an AI-skills plugin,\n`azure-sap-automation-github`, that gives GitHub Copilot CLI, Claude Code,\nand Gemini CLI grounded context about the GitHub Actions procedure for\nSDAF: the bootstrap flow and setup utility, public Azure authentication\ndiagnostics (with documented sovereign-cloud limitations), and the\nordered `00`–`12` workflow catalogue. The plugin is documentation and\ndiagnostics only — it does not modify workflows, `.cfg_template/`, or\n`WORKSPACES/`, and installing it is never a prerequisite for using the\nworkflows.\n\n**All SDAF AI plugins are optional and independently installable.** For\ncomplete coverage:\n\n- Local or scripted execution: install the hub plugin\n  `azure-sap-automation` from\n  [`Azure/sap-automation`](https://github.com/Azure/sap-automation).\n- Azure DevOps control plane: install the hub plus the Azure DevOps\n  plugin `azure-sap-automation-devops` from\n  [`Azure/sap-automation-bootstrap`](https://github.com/Azure/sap-automation-bootstrap).\n- GitHub Actions control plane (this repository): install the hub plus\n  `azure-sap-automation-github` shown below.\n\n**The hub plugin is recommended for complete coverage; this plugin does\nnot install it automatically.** See [`docs/PLUGINS.md`](docs/PLUGINS.md)\nfor the full operator flow (verify, prompt examples, troubleshooting).\n\n### GitHub Copilot CLI\n\n```bash\ncopilot plugin marketplace add Azure/sap-automation-gh-bootstrap\ncopilot plugin install azure-sap-automation-github@sap-automation-gh-bootstrap\n```\n\n### Claude Code\n\n```text\n/plugin marketplace add Azure/sap-automation-gh-bootstrap\n/plugin install azure-sap-automation-github@sap-automation-gh-bootstrap\n```\n\n### Gemini CLI\n\n```bash\ngemini extensions install https://github.com/Azure/sap-automation-gh-bootstrap\n```\n\nFor verification, example prompts, and troubleshooting, continue in\n[`docs/PLUGINS.md`](docs/PLUGINS.md).\n\n## Getting started\n\nFollow the guides in order:\n\n1. [Prerequisites and planning](docs/01-00-prerequisites.md)\n2. [Bootstrap GitHub and Azure](docs/02-00-bootstrap.md)\n3. [Create and deploy the control plane](docs/03-00-control-plane.md)\n4. [Create and deploy a workload zone](docs/04-00-workload-zone.md)\n5. [Create and deploy an SAP system](docs/05-00-sap-system.md)\n6. [Download software and install SAP](docs/06-00-software-installation.md)\n7. [Operations, troubleshooting, and removal](docs/07-00-operations.md)\n\nDo not start with workflow `01`. The bootstrap process and workflow `00` create the GitHub environment, secrets, variables, and Terraform configuration required by later workflows.\n\n## Workflow sequence\n\n| Order | Workflow | Outcome |\n| --- | --- | --- |\n| 00 | Create Control Plane Environment | Control-plane GitHub environment and configuration |\n| 01 | Deploy Control Plane | Deployer, SAP library, and self-hosted runner |\n| 02 | Create workload environment | Workload-zone environment and configuration |\n| 03 | Deploy SAP Workload Zone | Shared workload-zone infrastructure |\n| 04 | Create SYSTEM environment | SAP system configuration committed to `WORKSPACES`; no GitHub environment is created |\n| 05 | SAP SID Infrastructure deployment | SAP virtual machines and infrastructure |\n| 06 or 06.5 | Download SAP software | SAP installation media |\n| 07 | Operating System Configuration and Installation | Configured and installed SAP system |\n\nWait for each workflow to succeed and review its output before starting the next one.\n\nWorkflows `00`, `02`, and `04` provide GitHub-specific configuration generation. Workflow\n`00` creates the control-plane GitHub environment, and workflow `02` creates the\nworkload-zone GitHub environment. Despite its display name, workflow `04` only generates\nand commits SAP-system configuration. Workflow `05` uses the selected workload-zone\nenvironment for credentials and variables.\n\n## Configuration templates and deployment inputs\n\nFiles under `.cfg_template` are source templates. Creation workflows substitute their\n`@@...@@` placeholders and generate the Terraform deployment inputs under `WORKSPACES`:\n\n| Source template | Creation workflow | Generated configuration |\n| --- | --- | --- |\n| `deployer.tfvars` | `00 - Create Control Plane Environment` | `WORKSPACES/DEPLOYER/.../*.tfvars` |\n| `library.tfvars` | `00 - Create Control Plane Environment` | `WORKSPACES/LIBRARY/.../*.tfvars` |\n| `landscape.tfvars` | `02 - Create workload environment` | `WORKSPACES/LANDSCAPE/.../*.tfvars` |\n| `system.tfvars` | `04 - Create SYSTEM environment` | `WORKSPACES/SYSTEM/.../*.tfvars` |\n\nThe generated `WORKSPACES` files, not `.cfg_template` directly, are the deployment inputs.\nReview and customize generated files after creation, then commit approved changes before\nrunning the corresponding deployment workflow. Template changes affect future generation;\nthey do not update existing `WORKSPACES` files. Apply approved changes to both locations\nwhen a setting must remain consistent for current and future environments.\n\nIn each template, non-commented assignments are mandatory workflow values or deliberate\ngenerated configuration. Commented assignments are optional and show the current Terraform\ndefault unless explicitly labeled as an example or cloud-specific override; comments also\nidentify required values that SDAF scripts inject at deployment time.\n\nEach template contains one commented `dns_zone_names` block with Azure Government values.\nFor Public Azure, leave it commented because Terraform already supplies the Public Azure DNS\nzone names by default. Do not add a redundant Public Azure assignment or enable multiple\nblocks.\n\nSet the repository variables `ARM_ENVIRONMENT`, `AZURE_ENVIRONMENT`, and `AZURE_AUDIENCE`\nbefore creating environments. Workflow `00` copies them to the control-plane environment,\nand workflow `02` propagates them to workload environments. Public Azure defaults are\n`public`, `AzureCloud`, and `api://AzureADTokenExchange`. For Azure Government, use\n`usgovernment`, `AzureUSGovernment`, and `api://AzureADTokenExchangeUSGov`, then uncomment\nthe Government `dns_zone_names` block in each applicable generated configuration.\n\nDeployment is intentionally staged. Later workflows consume the approved `WORKSPACES`\nconfiguration and Terraform state persisted by the SAP library, so complete and validate\neach stage before starting a dependent stage.\n\n## Current implementation status\n\nThis repository is an evolving template. Review these limitations before using it for deployment:\n\n| Area | Status | Required action |\n| --- | --- | --- |\n| Workflow `01` dry run | Not operational | The `test` input is not forwarded to the deployment scripts. Do not use workflow `01` to obtain a plan-only run. |\n| Workflow `07` installation | Blocked | The workflow currently contains invalid YAML indentation and an inconsistent inventory path. Correct and validate the workflow before running it. |\n| Workflow `10` removal | Destructive, no plan mode | The workflow has no `test` input and defaults to removing the SAP system. Review every input before dispatch. |\n| Azure Government login | Not implemented | `azure/login` uses Public Azure defaults and the setup utility does not create cloud-selection variables. Add and validate cloud-specific login inputs before using the workflows with Azure Government. |\n\nThe detailed guides identify these limitations at the affected steps.\n\n## Repository layout\n\n- `.cfg_template`: Terraform variable templates used by creation workflows.\n- `.github/workflows`: GitHub Actions workflows for deployment and removal.\n- `WORKSPACES`: generated and customized deployment configuration.\n- `docs`: detailed setup, deployment, and operations guides.\n\nFor symptom-based diagnostics, see\n[Troubleshoot GitHub Actions deployments](docs/troubleshooting.md).\n\n## References\n\n- [SDAF overview](https://learn.microsoft.com/azure/sap/automation/deployment-framework)\n- [SDAF deployment planning](https://learn.microsoft.com/azure/sap/automation/plan-deployment)\n- [SDAF control-plane configuration](https://learn.microsoft.com/azure/sap/automation/configure-control-plane)\n- [Azure Government developer guidance](https://learn.microsoft.com/azure/azure-government/documentation-government-developer-guide)\n- [Private endpoint DNS zone values](https://learn.microsoft.com/azure/private-link/private-endpoint-dns)\n- [SDAF source](https://github.com/Azure/sap-automation)\n- [SDAF samples](https://github.com/Azure/sap-automation-samples)\n- [Central SDAF documentation hub](https://github.com/Azure/sap-automation)\n",
  "bytes": 10536,
  "sha": "db20b8c6425ea101e5aed39aac9251511babb1ae64b508831b6a4038d8a8a4c1",
  "repo_slug": "azure/sap-automation-gh-bootstrap",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_azure_sap_automation_gh_bootstrap_abe5c943/readme"
}