用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/skills-registry --skill setup-guide命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | setup-guide |
| description | > Use when this capability is needed. |
This skill guides you through setting up the STAF environment on a management server.
For full details, see docs/SETUP.MD.
| Use Case | Recommended Setup | Why |
|---|---|---|
| Run test playbooks from CLI | Local (./scripts/setup.sh) | Direct Ansible execution, no server needed |
| One-off HA or config tests | Local | Simpler, no Docker dependency |
| Scheduled/recurring tests | Container (./scripts/setup.sh container start) | REST API + cron scheduling + job management |
The container builds its own isolated environment — local setup is not required when using Docker.
Both setups read the same workspace configs from WORKSPACES/SYSTEM/.
⚠️ This skill is guidance only. Do NOT modify any source code, scripts, or framework files. Only help the user by providing instructions, running commands, and answering questions.
| Trigger | Action |
|---|---|
setup environment / install staf | Full local setup |
container start / docker deployment | Docker compose deployment |
configure vars.yaml | Framework configuration |
setup help / troubleshoot setup | Diagnose setup issues |
The framework needs a managed identity to access Azure resources. Choose one option:
Option 1: User-Assigned Managed Identity
user_assigned_identity_client_id in sap-parameters.yaml to the Client IDOption 2: System-Assigned Managed Identity
user_assigned_identity_client_id blank or "" in sap-parameters.yamlSee docs/TELEMETRY_SETUP.md for Azure Log Analytics and Azure Data Explorer integration.
Ensure you are logged into the management server connected to the SAP system's virtual network.
# Debian/Ubuntu # RHEL/CentOS # SUSE
sudo su - sudo su - sudo su -
apt-get install git yum install git zypper install git
# First: fork https://github.com/Azure/sap-automation-qa in your browser
# Then clone YOUR fork (not the Azure repo directly):
sudo su -
git clone https://github.com/GITHUB-USERNAME/sap-automation-qa.git
cd sap-automation-qa
./scripts/setup.sh
Options:
| Flag | Short | Description |
|---|---|---|
--python python3.12 | -p python3.12 | Use specific Python interpreter |
--upgrade | -u | Recreate venv from scratch |
Python 3.6 warning: Some management servers ship with Python 3.6 as default (not supported). Check available versions and point setup to a supported one:
ls /usr/bin/python3* ./scripts/setup.sh --python /usr/bin/python3.11
What it does:
.venv/)python3-pip, sshpass, python3-venv)source .venv/bin/activate
| Command | Description |
|---|---|
./scripts/setup.sh container start | Build and start full Docker stack |
./scripts/setup.sh container update | Rebuild and restart |
./scripts/setup.sh container stop | Stop the service |
./scripts/setup.sh container remove | Remove container, network, and volumes |
./scripts/setup.sh container start --image <acr>.azurecr.io/sap-automation-qa:latest
Using --image requires ACR access. The script attempts az acr login first; if that fails, set ACR_USERNAME and ACR_PASSWORD environment variables.
http://localhost:8000 — REST API (docs at /docs)http://localhost:3000 — Web UI (in development)deploy/docker-compose.yml, non-root user (appuser:1000)curl http://localhost:8000/healthz
# Expected: {"status": "ok"}
Create vars.yaml at the project root:
# --- Required fields ---
TEST_TYPE: SAPFunctionalTests # or ConfigurationChecks
SAP_FUNCTIONAL_TEST_TYPE: DatabaseHighAvailability
# Options: DatabaseHighAvailability, CentralServicesHighAvailability, AzureBackupDatabase
SYSTEM_CONFIG_NAME: DEV-WEEU-SAP01-X00 # dir under WORKSPACES/SYSTEM/
AUTHENTICATION_TYPE: SSHKEY # or VMPASSWORD
# --- Telemetry fields (all optional) ---
telemetry_data_destination: null # azureloganalytics or azuredataexplorer
telemetry_table_name: null
service_log_table_name: null # default: <telemetry_table_name>_ServiceLogs
# Azure Log Analytics
laws_shared_key: null # if omitted, auto-fetched via params below
laws_workspace_id: null
laws_subscription_id: null
laws_resource_group: null
laws_workspace_name: null
# Azure Data Explorer
adx_database_name: null
adx_cluster_fqdn: null
adx_client_id: null
# Managed Identity (optional)
user_assigned_identity_client_id:
Place in WORKSPACES/SYSTEM/<SYSTEM_CONFIG_NAME>/sap-parameters.yaml:
sap_sid: "X00"
db_sid: "X00"
scs_high_availability: true
database_high_availability: true
database_scale_out: false
# Cluster type: AFA (Azure Fencing Agent), ISCSI, or ASD (Azure Shared Disks)
scs_cluster_type: "AFA"
database_cluster_type: "AFA"
scs_instance_number: "00"
ers_instance_number: "01"
db_instance_number: "00"
platform: "HANA"
NFS_provider: "AFS" # or "ANF" (Azure NetApp Files)
user_assigned_identity_client_id: "" # blank for system-assigned MSI
# Key Vault credentials (remove if using local credential files)
key_vault_id: /subscriptions/.../Microsoft.KeyVault/vaults/<name>
secret_id: https://<vault>.vault.azure.net/secrets/<secret>/<id>
# ANF-specific (when NFS_provider = ANF)
ANF_account_rg: "ANF-RESOURCE-GROUP"
ANF_account_name: "ANF-ACCOUNT-NAME"
SSH Key: Place private key as ssh_key.ppk in workspace directory:
WORKSPACES/SYSTEM/<DIR>/ssh_key.ppk
Password: Create a password file (username comes from hosts.yaml):
echo "password" > WORKSPACES/SYSTEM/<DIR>/password
chmod 600 WORKSPACES/SYSTEM/<DIR>/password
When using local credential files, remove
key_vault_idandsecret_idfromsap-parameters.yaml.
Store SSH key or password as a Key Vault secret. Configure key_vault_id and secret_id in sap-parameters.yaml. Requirements:
WORKSPACES/
└── SYSTEM/
└── DEV-WEEU-SAP01-X00/ # SYSTEM_CONFIG_NAME
├── sap-parameters.yaml # SAP system parameters
├── hosts.yaml # Ansible inventory (or {SID}_hosts.yaml)
├── ssh_key.ppk / password # Credential file (if not using Key Vault)
├── logs/ # Auto-created by framework
│ ├── {invocation_id}.log # JSON lines - test case results
│ └── execution_{timestamp}.log # Raw Ansible output
└── quality_assurance/ # Auto-created by render_html_report
└── {test_group}_{invocation_id}.html
| Log | Location | Format |
|---|---|---|
| API server logs | stdout/stderr (console) | Structured JSON (production) or color-coded (dev) |
| Persistent API logs | logs/api.log | Rotating file (10 MB, 5 backups) |
| Job execution logs | WORKSPACES/SYSTEM/{name}/logs/execution_{timestamp}.log | Plain text (Ansible output) |
| Test result logs | WORKSPACES/SYSTEM/{name}/logs/{invocation_id}.log | JSON lines (one entry per test case) |
| HTML reports | WORKSPACES/SYSTEM/{name}/quality_assurance/{group}_{invocation}.html | HTML |
| Log | Location | Format |
|---|---|---|
| Ansible output | stdout (console) | Plain text |
| Test result logs | WORKSPACES/SYSTEM/{name}/logs/{invocation_id}.log | JSON lines |
| Execution log | WORKSPACES/SYSTEM/{name}/logs/execution_{timestamp}.log | Plain text |
| HTML reports | WORKSPACES/SYSTEM/{name}/quality_assurance/{group}_{invocation}.html | HTML |
| Log | Location | Access |
|---|---|---|
| Container logs | Docker stdout | docker logs sap-automation-qa |
| Persistent logs | /app/logs/ (inside container) | Volume mount or docker cp |
| SQLite database | /app/data/staf.db (inside container) | Persistent volume |
# API mode — view recent job log
./scripts/sap_automation_qa.sh job log --id <JOB_ID> --tail 50
# Docker — follow container logs
docker logs -f sap-automation-qa
# Direct mode — capture output to file
./scripts/sap_automation_qa.sh --test_groups=HA_DB_HANA 2>&1 | tee run.log
- Mode: Local / Docker
- Python: ✅ 3.12.x / ❌ Not found
- Virtual env: ✅ Active / ❌ Missing
- Azure CLI: ✅ Installed / ⚠️ Not found
- Docker: ✅ Running / ❌ Not available
- API Health: ✅ Responding / ❌ Not reachable
- Next step: [specific action]
| Error | Cause | Fix |
|---|---|---|
python3: command not found | Python not installed | Install Python 3.10+ for your distro |
venv creation failed | Missing venv module | apt install python3.x-venv or use -p flag |
docker: command not found | Docker not installed | Install Docker |
Cannot connect to Docker daemon | Daemon not running | sudo systemctl start docker |
Port 8000 already in use | Port conflict | Stop conflicting process or change port |
pip install failed | Network or pip issue | Check internet, pip install --upgrade pip |
Before reporting setup complete, verify:
.venv/bin/activate works and ansible --version succeedscurl http://localhost:8000/healthz returns {"status": "ok"}vars.yaml exists at project root with valid TEST_TYPE and AUTHENTICATION_TYPEWORKSPACES/SYSTEM/ with sap-parameters.yaml and hosts.yaml| Skill | What It Does |
|---|---|
/setup-guide | Guides through environment setup (local, Docker) |
/workspace-validator | Validates workspace sap-parameters.yaml and hosts.yaml |
/workspace-creator | Creates new workspace configurations from templates |
/test-runner | Executes tests via sap_automation_qa.sh (direct and API modes) |
/test-result-analyzer | Analyzes test results, matches known failure patterns |
| After setup completes... | Use skill |
|---|---|
| Create a workspace for your SAP system | workspace-creator |
| Validate an existing workspace | workspace-validator |
| Run your first test | test-runner |
Source: devanshjainms/sap-automation-qa — distributed by TomeVault.
基于 SOC 职业分类