Admin
Grafana LabsOfficialPublished by Grafana Labs
- Skill
- Tool integration
- Cloud and DevOps
- Apache-2.0
- Low risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides administrative procedures for managing Grafana Cloud environments. It covers the lifecycle of stacks, user and team onboarding, authentication configuration (SSO/SAML/OAuth), and programmatic access via service accounts. It includes guidance on using the Cloud API and Terraform for infrastructure provisioning, as well as troubleshooting patterns for common authentication and access control issues.
What it does
- Provision and delete Grafana Cloud stacks using the Cloud API
- Configure SSO, SAML, and OAuth providers for user authentication
- Manage user invites, team memberships, and RBAC role assignments
- Create and manage service accounts for CI/CD and automation
- Provision resources like folders and dashboards via Terraform
- Audit administrative actions and troubleshoot authentication flows
When to use it
- Setting up new Grafana Cloud stacks or organizations
- Configuring external identity providers like Okta or GitHub
- Onboarding teams and assigning specific access roles
- Automating infrastructure provisioning with Terraform
- Generating service account tokens for CI/CD pipelines
- Investigating authentication or role-mapping failures
Advantages
- Centralized management of stack lifecycle and user access
- Declarative configuration support via Terraform
- Standardized patterns for SSO and identity provider integration
- Clear verification steps for authentication and role mapping
- Programmatic control over organization and stack resources
Usage examples
- “Create a new Grafana Cloud stack named production-metrics.”
- The agent uses the Cloud API to POST a new instance request and provides the steps to verify the stack's health.
- “How do I set up GitHub OAuth for my Grafana stack?”
- The agent provides the required configuration block for grafana.ini and the 5-step verification process to ensure the integration works.
- “Create a service account for my Terraform CI/CD pipeline.”
- The agent provides the API commands to create the service account, mint a token, and verify its permissions.
- “How can I assign a custom role to a team?”
- The agent provides the YAML structure for defining roles and assignments, along with the API command to verify the applied role.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/grafana/admin-tape/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip admin.zip -d .agents/skills
Documentation by Grafana Labs
Grafana Cloud Admin
Docs: https://grafana.com/docs/grafana-cloud/account-management.md
Common Workflows
Setting up a new stack
# 1. Create the stack via Cloud API
curl -X POST https://grafana.com/api/instances \
-H "Authorization: Bearer <grafana-com-api-key>" \
-H "Content-Type: application/json" \
-d '{"name": "my-new-stack", "slug": "my-new-stack", "region": "us-east-0", "plan": "grafana-cloud-free"}'
# 2. Verify the stack is reachable (poll until 200)
until curl -fs https://my-new-stack.grafana.net/api/health > /dev/null; do sleep 2; done
# 3. Mint an admin service-account token (see § Service Accounts below)
# 4. Test the token
curl https://my-new-stack.grafana.net/api/org -H "Authorization: Bearer <token>"
# Returns 200 + org JSON → token worksOnboarding a team
Invite users via
POST /api/org/invites(one curl per user — see references/api-reference.md § Stack API)Create the team via
POST /api/teamsAdd each user via
POST /api/teams/{teamId}/membersAssign an RBAC role to the team (see § RBAC below)
Verify:
GET /api/teams/{teamId}/membersreturns the expected user list
Configuring SSO (Okta / SAML / GitHub)
Pick the provider config from references/sso.md and drop into
grafana.iniRestart Grafana
Always validate in an incognito window before announcing: see references/sso.md § Verifying SSO for the 5-step verification + role-mapping debug pattern
Deleting a stack (destructive)
# 1. Delete via Cloud API
curl -X DELETE https://grafana.com/api/instances/{id} \
-H "Authorization: Bearer <grafana-com-api-key>"
# 2. Verify the stack is gone (must return 404)
curl https://grafana.com/api/instances/{id} \
-H "Authorization: Bearer <grafana-com-api-key>"If the GET still returns 200 after a few seconds, the delete didn't apply — re-check the stack ID and Cloud API key.
Organization and Stack Structure
Grafana Cloud Account
└── Organization (billing unit)
├── Stack 1 (prod) → dedicated Grafana, Prometheus, Loki, Tempo URLs
├── Stack 2 (staging)
└── Stack 3 (dev)Organization: top-level account with billing, users, API keys, stacks
Stack: dedicated Grafana + LGTM instance with its own URLs and credentials
User Roles
| Role | Scope | Permissions |
|---|---|---|
| Org Admin | Organization | Manage stacks, users, billing, API keys |
| Admin | Stack | Data sources, plugins, users, provisioning |
| Editor | Stack | Create/edit dashboards, alerts |
| Viewer | Stack | Read-only dashboards |
RBAC
Define a custom role + assignment in provisioning YAML:
# provisioning/access-control/roles.yaml
apiVersion: 1
roles:
- name: TeamDashboardEditor
description: Edit dashboards within team folder
permissions:
- action: dashboards:read
scope: folders:UID:team-folder
- action: dashboards:write
scope: folders:UID:team-folder
- action: dashboards:create
scope: folders:UID:team-folder# provisioning/access-control/assignments.yaml
apiVersion: 1
roleAssignments:
- roleName: TeamDashboardEditor
users:
- [email protected]
- [email protected]
teams:
- platform-teamAfter committing the YAML and restarting Grafana, verify the role applied: GET /api/access-control/roles | jq '.[] | select(.name=="TeamDashboardEditor")'.
Service Accounts
Service accounts are the recommended way for programmatic access (CI/CD, Terraform, agents).
# 1. Create the service account
curl -X POST https://yourstack.grafana.net/api/serviceaccounts \
-H "Authorization: Bearer <admin-token>" \
-H "Content-Type: application/json" \
-d '{"name": "terraform-provisioner", "role": "Admin", "isDisabled": false}'
# 2. Mint a token for it
curl -X POST https://yourstack.grafana.net/api/serviceaccounts/{id}/tokens \
-H "Authorization: Bearer <admin-token>" \
-H "Content-Type: application/json" \
-d '{"name": "ci-token", "secondsToLive": 0}'
# 3. Verify the token works (test on a harmless endpoint)
curl https://yourstack.grafana.net/api/org \
-H "Authorization: Bearer <new-token>"
# 200 + org JSON → token works. Anything else → re-check role assignment in step 1.Provisioning equivalent (YAML, declarative):
# provisioning/access-control/service_accounts.yaml
apiVersion: 1
serviceAccounts:
- name: alloy-writer
orgId: 1
role: Editor
tokens:
- name: alloy-tokenReferences
references/sso.md— OAuth / SAML / GitHub OAuth config + the 5-step SSO verification pattern + common failure modesreferences/terraform.md— Terraform provider config + common resource patterns (teams, users, folders, dashboards) + drift troubleshootingreferences/api-reference.md— full Cloud API + Stack API endpoint reference + audit-log queries
Files
- ATTRIBUTION.mdAdded by AutoGineer831 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md5.9 KiB
- references/api-reference.md2.6 KiB
- references/sso.md3.0 KiB
- references/terraform.md2.0 KiB
references/terraform.md
Terraform provider for Grafana
Use the official grafana/grafana Terraform provider for declarative management of teams, users, folders, dashboards, data sources, etc.
Minimum viable provider block
terraform {
required_providers {
grafana = {
source = "grafana/grafana"
version = "~> 2.0"
}
}
}
provider "grafana" {
url = "https://yourstack.grafana.net"
auth = var.grafana_service_account_token # store in tfvars / env, not literal
}Common resource patterns
Teams + membership
resource "grafana_team" "platform" {
name = "Platform Team"
email = "[email protected]"
}
resource "grafana_user" "alice" {
email = "[email protected]"
login = "alice"
name = "Alice"
password = "changeme" # ignored when SSO is configured
}
resource "grafana_team_member" "platform_alice" {
team_id = grafana_team.platform.id
user_id = grafana_user.alice.id
}Folders + dashboards
resource "grafana_folder" "platform_dashboards" {
title = "Platform Dashboards"
}
resource "grafana_dashboard" "overview" {
folder = grafana_folder.platform_dashboards.uid
config_json = file("dashboards/overview.json")
}Validating the apply
After terraform apply:
terraform plan— should be clean (no drift)Confirm in the Grafana UI:
Teams → "Platform Team" present with the expected members
Dashboards → folder + dashboard visible
If a resource shows as drift on the next plan but you haven't touched it: someone is modifying the same resource in the UI. Either reclaim it via Terraform (move all changes to code) or exclude it (use the
ignore_changeslifecycle block).
Common failure modes
| Symptom | Likely cause |
|---|---|
401 Unauthorized on apply | Service account token expired or wrong stack URL |
409 Conflict on resource create | Resource already exists in Grafana; import it first (terraform import) |
| Drift on every plan despite no UI changes | Provisioning files on disk modifying the same resource; pick one source of truth |
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs network access, Needs an API key
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Grafana Labs
- Publisher
- Grafana Labs (Official)
- Source
- grafana/skills · skills/grafana-cloud/admin · commit 8fb72a5
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Grafana Labs.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download admin.zip