Splunk Platform <-> Splunk Observability Cloud Integration Setup
Prerequisites
| Tool or access |
Purpose |
Verify |
| Bash and Python 3 |
Run bundled setup and validation helpers |
bash --version && python3 --version |
| Required product/platform access |
Inspect or configure the selected target |
Complete the documented preflight |
| Credential files for live modes |
Keep secrets out of chat |
Verify paths only |
Workflow Overview
┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐
│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │
└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘
When to Activate
- A user asks to pair Splunk Platform with Splunk Observability Cloud, set up Unified Identity or Centralized RBAC,
configure the Discover app, install the Infrastructure Monitoring Add-on, configure Related Content or Log
Observer Connect,.
- Preview and review the splunk observability cloud integration setup workflow before any live apply phase.
- Diagnose failed prerequisites, generated assets, configuration, or validation evidence.
Scope
Follow the documented read-only or render-first path whenever it is available.
This skill does not imply permission to mutate live systems. Require explicit
apply flags, protected credentials, and operator review for state changes.
Examples
Inspect the supported setup modes before selecting one:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh --help
Expected output: usage, supported modes, and required arguments are displayed
without changing the target environment.
Inspect validation modes before running completion checks:
bash skills/splunk-observability-cloud-integration-setup/scripts/validate.sh --help
Expected output: offline, live, and completion options are displayed when the
skill supports them; help exits without mutation.
Troubleshooting
| Issue |
Cause |
Resolution |
| Preflight fails |
A required tool or access path is missing |
Resolve it before rendering or applying |
| Rendered assets are incomplete |
Required non-secret inputs are absent |
Complete intake and render again |
| Apply is blocked |
Review, credentials, or explicit acceptance is missing |
Use the documented handoff |
| Validation is incomplete |
Live evidence is unavailable |
Record the gap and keep completion open |
TA Completion Gate
For every TA/add-on or dashboard companion run, satisfy the shared
TA completion gate: configure and enable the
data ingest path owned by this skill or its required companion, validate events
or metrics in the target indexes/source types, and verify any
pre-built/package-shipped dashboards are visible, macro-aligned, and returning
data. If the package ships no dashboards, record that evidence explicitly and
hand off dashboard use to the consuming app, ES/ITSI/ARI content, or readiness
doctor.
Single skill that pairs a Splunk Cloud Platform or Splunk Enterprise stack with
Splunk Observability Cloud and configures every navigate-into-O11y surface:
Unified Identity SSO, Centralized RBAC, the in-app Discover app, Related
Content previews in Search & Reporting, Log Observer Connect, Dashboard Studio
O11y metrics, and the Splunk Infrastructure Monitoring Add-on (sim SPL
command + streaming modular inputs).
The workflow is render-first by default. Live API changes only happen when the
user explicitly asks for --apply.
Coverage Model
Every rendered section gets an explicit coverage status:
api_apply — a documented public API supports create, update, delete, or validate.
api_validate — a documented public API supports read or validation only.
deeplink — the skill renders a deterministic Splunk / Observability UI link
and validates referenced data where an API allows.
handoff — the skill renders deterministic operator steps for UI-only or
cross-skill workflows (e.g., Splunkbase install via splunk-app-install).
install_apply — the skill installs or configures a Splunk-side companion
app via Splunkbase + REST.
not_applicable — the section does not apply to the chosen target
(e.g., UID on Splunk Enterprise, Discover app on SCP < 10.1.2507).
UI-only steps (multi-org Make Default, the SE TLS-certificate paste, the
"Override default organization" user action) render as deeplink and never
claim API parity that does not exist.
Safety Rules
- Never ask for Splunk Observability tokens, Splunk Cloud Platform admin JWTs,
Splunk passwords, SIM Add-on org tokens, or Log Observer Connect
service-account passwords in conversation.
- Never pass any secret on the command line or as an environment-variable
prefix.
- Use
--token-file for the regular Splunk Observability Cloud API token.
- Use
--admin-token-file for the Splunk Observability Cloud admin token used
by Unified Identity pairing and enable-centralized-rbac.
- Use
--org-token-file for the Splunk Observability Cloud org access token
used by the Splunk Infrastructure Monitoring Add-on account.
- Use
--service-account-password-file for the Log Observer Connect
service-account password.
- Token and password files must be regular, single-hardlink, non-empty files
with mode
600 and no more than 64 KiB. Tokens contain one printable-ASCII
value; passwords may contain printable UTF-8. Either permits at most one
trailing LF or CRLF; all other controls and Unicode line separators fail.
Authenticated
clients use O_NOFOLLOW, bounded double reads, and stable metadata/content
fingerprints; --apply aborts on any mismatch.
- Authenticated REST calls require HTTPS before credentials are attached and
refuse every redirect so Basic, bearer, JWT, and O11y token headers cannot be
forwarded to a different URL.
- Generated authenticated curl helpers put
-q first so user or system curl
configuration cannot relax TLS/redirect policy. Log Observer Connect converts
its password file directly from the validated descriptor into a private curl
config; the password is never loaded into a shell variable or reopened.
- Reject direct secret flags such as
--token, --access-token,
--api-token, --o11y-token, --admin-token, --org-token, --sf-token,
--service-account-password, and --password.
- Prefer
SPLUNK_O11Y_REALM, SPLUNK_O11Y_TOKEN_FILE,
SPLUNK_O11Y_ADMIN_TOKEN_FILE, and SPLUNK_O11Y_ORG_TOKEN_FILE from the
repo credentials file when present; these store only realms and token-file
paths, never token values.
- Strip every secret from
00-09-*.md, apply-plan.json, payloads/,
current-state.json, state/apply-state.json, and any other rendered
artifact on disk.
enable-centralized-rbac is destructive and irreversible without Splunk
Support. This repo has no safe file-backed transport for the required ACS
token, so cutover is classified as handoff and always fails before mutation.
bash skills/shared/scripts/write_secret_file.sh /tmp/splunk_o11y_token
helps the user create a token file without exposing the secret in shell
history.
Primary Workflow
Collect non-secret values: target (cloud or enterprise), Splunk Cloud
stack, Splunk Observability Cloud realm (us0/us1/eu0/eu1/eu2/au0/jp0/sg0/
us2-gcp), multi-org list, Log Observer Connect service-account username,
indexes the LOC service account should access, Splunk Infrastructure
Monitoring Add-on account name and modular-input picks.
Create or update a JSON/YAML spec from template.example.
Render and validate:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \
--render \
--spec skills/splunk-observability-cloud-integration-setup/template.example \
--output-dir splunk-observability-cloud-integration-rendered
Review splunk-observability-cloud-integration-rendered/:
README.md — TL;DR and ordered next-step commands.
architecture.mmd — Mermaid topology of the rendered integration.
00-prerequisites.md through 09-handoff.md — numbered per-section plans.
coverage-report.json — per-section coverage status.
apply-plan.json — apply ordering with idempotency keys (no secrets).
payloads/ — per-step request bodies for ACS / REST calls.
scripts/ — per-step apply scripts and cross-skill handoff drivers.
support-tickets/ — pre-filled tickets when Splunk Support is required.
sim-addon/ — MTS sizing, plus the curated SignalFlow catalog files.
Apply only when explicitly requested:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \
--apply \
--spec skills/splunk-observability-cloud-integration-setup/template.example \
--realm us0 \
--admin-token-file /tmp/splunk_o11y_admin_token \
--org-token-file /tmp/splunk_o11y_org_token \
--service-account-password-file /tmp/loc_svc_account_password
To run only a subset of sections:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \
--apply pairing,sim_addon \
--spec my-integration.yaml
Centralized RBAC cutover is a fail-closed handoff because no safe file-backed
transport is implemented. The handoff never places a token on process argv.
End-User UX (the "easy to use" promise)
Five entry points, ordered by user effort:
--quickstart — renders and validates the common UID + Discover app + SIM
scenario, then prints explicit supported apply and UI/admin handoffs. It does
not mutate live state.
--render (default) — produces the numbered plan tree; never touches live
state.
--discover — writes a read-only rendered-plan inventory scaffold to
current-state.json. It does not currently claim a complete live snapshot.
--doctor — writes the static twenty-check review catalog and a prioritized
handoff/fix list. Use --validate --live for the limited implemented
token-auth and SIM-account reachability reads.
--apply SECTIONS — applies explicitly named supported sections. Live apply
without a section list is refused because plans can include UI/admin handoffs.
Plus quality-of-life flags:
--enable-token-auth — flips token authentication on if disabled (auto-
rendered as a fix from --doctor).
--explain — prints the apply plan in plain English with no API calls
(useful for change-management approvals).
--list-sim-templates / --render-sim-templates aws_ec2,kubernetes, os_hosts,apm — pick from the curated SignalFlow catalog without writing
SignalFlow.
--make-default-deeplink — emits the multi-org "Make Default" UI deeplink
for the named realm (since no API exists).
--quickstart-enterprise — renders and validates the Splunk Enterprise fast
path; supported mutations must be invoked explicitly afterward.
--rollback <section> — renders (does not auto-run) the reverse-engineered
commands for steps that have a public reversible API; for irreversible steps
(enable-centralized-rbac, deleted users) it renders a Splunk Support
ticket template instead.
Supported Sections
Specs use api_version: splunk-observability-cloud-integration-setup/v1 and
can include:
prerequisites — static region/realm and FedRAMP/GovCloud/GCP policy
rendering. Live stack version, trial-stack, operator-role, and Discover-app
10.1.2507+ checks remain explicit preflight handoffs.
token_auth — token-auth state read + flip, edit_tokens_settings
capability check.
pairing — Splunk Cloud Platform Unified Identity (UID) via POST /adminconfig/v2/observability/sso-pairing, or Discover-app API-token
connection. Multi-org is a fail-closed per-org-token handoff plus Make
Default deeplink; the skill never reuses one token across declared orgs.
Pairing is not a Splunk Enterprise section; Enterprise uses Log Observer
Connect separately.
centralized_rbac — acs observability enable-capabilities (provisions
o11y_admin / o11y_power / o11y_read_only / o11y_usage) and
enable-centralized-rbac; the o11y_access gate role; UID role mapping.
related_content_capabilities — read_o11y_content, write_o11y_content,
EXECUTE_SIGNAL_FLOW, READ_APM_DATA, READ_BASIC_UI_ACCESS, READ_EVENT
capability assignments for Real Time Metrics + previews.
discover_app — converges the non-secret Configurations tabs of the
in-platform Discover Splunk Observability Cloud app: Related Content
discovery, Field aliasing (Auto Field Mapping), and Automatic UI updates;
Test related content remains a deeplink. Access tokens are written only by
service-account pairing, preventing a duplicate connection. This section
also merges Read permission for selected roles.
log_observer_connect — service-account user + role + workload rule;
Splunk Cloud Platform path or Splunk Enterprise TLS-certificate path.
Hands off realm-IP allowlist deltas to splunk-cloud-acs-admin-setup.
dashboard_studio_o11y — default-connection + capability validations + a
starter Dashboard Studio JSON snippet using O11y metrics.
sim_addon — installs Splunk_TA_sim (Splunkbase 5247), creates the
sim_metrics index when missing, configures the SIM account through the
TA UCC custom REST handler, renders curated SignalFlow modular inputs from
the catalog (AWS_EC2, AWS_Lambda, Azure, GCP, Containers, Kubernetes,
OS_Hosts, APM_Errors, APM_Throughput, RUM, Synthetics), runs MTS sizing
preflight, and hands off the Splunk Cloud Victoria-stack search-head HEC
allowlist + the ITSI Content Pack for Splunk Observability Cloud.
enterprise_mode — collapses UID / ACS observability / Discover-app
Configurations sections to not_applicable and switches LOC to the SE
TLS-cert path.
For per-section flag references and REST payload shapes, read
reference.md and the focused docs under
references/.
Out of Scope (handed off, not duplicated)
- Splunk Add-on for OpenTelemetry Collector (Splunkbase 7125) — handled by
splunk-observability-otel-collector-setup.
- Splunk Synthetic Monitoring Add-on (Splunkbase
5608) — archived and not
listed for Splunk 10.5. Do not install it on a new or upgraded 10.5 stack.
Use SIM Add-on streams for in-platform metrics and native Splunk
Observability Cloud Synthetics workflows for browser/API tests.
- Splunk On-Call wiring — handled by
splunk-oncall-setup.
- ITSI Content Pack content management — handled by
splunk-itsi-config.
- Splunk Observability Cloud dashboards / detectors / Synthetics / RUM CRUD —
handled by
splunk-observability-dashboard-builder and
splunk-observability-native-ops.
- AppDynamics for Log Observer Connect — separate AppDynamics SaaS workflow.
Scenarios Gallery
Six worked end-to-end examples, copy/paste-ready:
- Cloud quickstart (greenfield) —
--quickstart renders and validates a
fresh SCP plan, then prints supported apply and Related Content handoffs.
- Multi-org Cloud — renders a fail-closed, distinct-token-per-org handoff
for three O11y orgs on one SCP stack; default-org selection uses a deeplink.
- Cloud API-token mode (no UID) — user API access-token pairing (no
admin token required); SIM Add-on plus Related Content handoff; appropriate
for stacks where UID is not yet in scope.
- Migrate API-token -> UID — an existing API-token customer wants Unified Identity;
renderer detects the existing connection and renders a numbered migration
plan (pair UID, validate, instruct user to delete old SA via Discover
app deeplink, optionally
enable-centralized-rbac).
- Splunk Enterprise —
--quickstart-enterprise renders SIM plus LOC
service-account/TLS assets without mutating; UID/RBAC/Discover-app sections are
marked not_applicable.
- Inherit existing integration — use
--discover for a rendered-plan
inventory scaffold, --validate --live for limited reachability, then --doctor
to identify drift and gaps, then targeted --apply <section> to
converge to the rendered plan.
Useful Commands
Validate a draft spec:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \
--validate \
--spec skills/splunk-observability-cloud-integration-setup/template.example
Render without applying:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \
--render \
--spec skills/splunk-observability-cloud-integration-setup/template.example \
--output-dir splunk-observability-cloud-integration-rendered
Diagnose an existing integration:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \
--doctor \
--realm us0 \
--admin-token-file /tmp/splunk_o11y_admin_token
List the curated SignalFlow modular-input catalog:
bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \
--list-sim-templates
Hand-offs to Other Skills
- App install ->
skills/splunk-app-install/scripts/install_app.sh --source splunkbase --app-id 5247 (Splunk_TA_sim).
- ACS Log Observer Connect realm-IP allowlist deltas ->
skills/splunk-cloud-acs-admin-setup/scripts/setup.sh --phase render --target-stack STACK_NAME --features search-api --search-api-subnets <pre-baked-realm-IPs>.
- ACS Splunk Cloud Victoria-stack search-head HEC allowlist (SIM Add-on
prerequisite) ->
skills/splunk-cloud-acs-admin-setup/scripts/setup.sh --phase render --target-stack STACK_NAME --features hec.
- ITSI Content Pack for Splunk Observability Cloud ->
skills/splunk-itsi-config/SKILL.md.
- Splunk Observability Cloud dashboards, detectors, Log Observer Connect
queries, Synthetics, RUM ->
skills/splunk-observability-dashboard-builder/SKILL.md and
skills/splunk-observability-native-ops/SKILL.md.
- OTel collection on Kubernetes and Linux ->
skills/splunk-observability-otel-collector-setup/SKILL.md.
- Splunk On-Call detector recipients ->
skills/splunk-oncall-setup/SKILL.md.
Compliance and Security Baseline
- Splunk Cloud Platform Unified Identity is supported in AWS regions only;
GovCloud and GCP regions are excluded. The skill marks UID sections
not_applicable when GovCloud or GCP is detected and renders a Service
Account fallback plan.
- Cross-region pairing (e.g., us0 realm to us-west-2 region) requires Splunk
Account team approval; the preflight WARNs and emits a
support-tickets/cross-region-pairing.md template.
- FedRAMP / IL5 customers cannot use UID against the public commercial O11y
realms; the skill renders a
support-tickets/fedramp-il5-readiness.md
template instead of attempting the pair call.
- The skill never asks for nor logs secret material, refuses every direct
secret CLI flag, and redacts every token, password, JWT, and authorization
value from rendered artifacts. Non-secret pairing job IDs are retained in
mode-600 apply state so asynchronous status polling can resume safely.
MCP Tools
This skill includes checked-in, read-only Splunk MCP custom tools generated
from mcp_tools.source.yaml.
Validate or regenerate the tool artifact:
python3 skills/shared/scripts/mcp_tools.py validate skills/splunk-observability-cloud-integration-setup
python3 skills/shared/scripts/mcp_tools.py generate skills/splunk-observability-cloud-integration-setup
Load the tools into Splunk MCP Server:
bash skills/splunk-observability-cloud-integration-setup/scripts/load_mcp_tools.sh
The loader uses the supported /mcp_tools REST batch endpoint by default. Use
--allow-legacy-kv only for older MCP Server app versions that lack that
endpoint.
1---2name: splunk-observability-cloud-integration-setup3description: Use when a user asks to pair Splunk Platform with Splunk Observability Cloud, set up Unified Identity or Centralized RBAC, configure the Discover app, install the Infrastructure Monitoring Add-on, configure Related Content or Log Observer Connect, bring O11y metrics into Splunk with sim, or navigate from Splunk Platform into Observability workflows. Render, preflight, apply, validate, and diagnose Splunk Platform to Splunk Observability Cloud pairing for Splunk Cloud Platform and Splunk Enterprise. Covers token-auth enablement, realm checks, Unified Identity or service-account pairing, multi-org defaults, Centralized RBAC, Discover Splunk Observability Cloud app configuration, Log Observer Connect, Related Content, Real Time Metrics, Dashboard Studio O11y metrics, and Splunk_TA_sim modular inputs.4---56# Splunk Platform <-> Splunk Observability Cloud Integration Setup78## Prerequisites910| Tool or access | Purpose | Verify |11|---|---|---|12| Bash and Python 3 | Run bundled setup and validation helpers | `bash --version && python3 --version` |13| Required product/platform access | Inspect or configure the selected target | Complete the documented preflight |14| Credential files for live modes | Keep secrets out of chat | Verify paths only |1516## Workflow Overview1718```text19┌───────────┐ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐20│ Preflight │ → │ Render/review │ → │ Apply/handoff │ → │ Validate evidence │21└───────────┘ └───────────────┘ └───────────────┘ └─────────────────┘22```2324## When to Activate2526- A user asks to pair Splunk Platform with Splunk Observability Cloud, set up Unified Identity or Centralized RBAC,27 configure the Discover app, install the Infrastructure Monitoring Add-on, configure Related Content or Log28 Observer Connect,.29- Preview and review the splunk observability cloud integration setup workflow before any live apply phase.30- Diagnose failed prerequisites, generated assets, configuration, or validation evidence.3132## Scope3334Follow the documented read-only or render-first path whenever it is available.35This skill does not imply permission to mutate live systems. Require explicit36apply flags, protected credentials, and operator review for state changes.3738## Examples3940Inspect the supported setup modes before selecting one:4142```bash43bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh --help44```4546Expected output: usage, supported modes, and required arguments are displayed47without changing the target environment.4849Inspect validation modes before running completion checks:5051```bash52bash skills/splunk-observability-cloud-integration-setup/scripts/validate.sh --help53```5455Expected output: offline, live, and completion options are displayed when the56skill supports them; help exits without mutation.5758## Troubleshooting5960| Issue | Cause | Resolution |61|---|---|---|62| Preflight fails | A required tool or access path is missing | Resolve it before rendering or applying |63| Rendered assets are incomplete | Required non-secret inputs are absent | Complete intake and render again |64| Apply is blocked | Review, credentials, or explicit acceptance is missing | Use the documented handoff |65| Validation is incomplete | Live evidence is unavailable | Record the gap and keep completion open |6667## TA Completion Gate6869For every TA/add-on or dashboard companion run, satisfy the shared70[TA completion gate](../shared/ta_completion_gate.md): configure and enable the71data ingest path owned by this skill or its required companion, validate events72or metrics in the target indexes/source types, and verify any73pre-built/package-shipped dashboards are visible, macro-aligned, and returning74data. If the package ships no dashboards, record that evidence explicitly and75hand off dashboard use to the consuming app, ES/ITSI/ARI content, or readiness76doctor.7778Single skill that pairs a Splunk Cloud Platform or Splunk Enterprise stack with79Splunk Observability Cloud and configures every navigate-into-O11y surface:80Unified Identity SSO, Centralized RBAC, the in-app Discover app, Related81Content previews in Search & Reporting, Log Observer Connect, Dashboard Studio82O11y metrics, and the Splunk Infrastructure Monitoring Add-on (`sim` SPL83command + streaming modular inputs).8485The workflow is render-first by default. Live API changes only happen when the86user explicitly asks for `--apply`.8788## Coverage Model8990Every rendered section gets an explicit coverage status:9192- `api_apply` — a documented public API supports create, update, delete, or validate.93- `api_validate` — a documented public API supports read or validation only.94- `deeplink` — the skill renders a deterministic Splunk / Observability UI link95 and validates referenced data where an API allows.96- `handoff` — the skill renders deterministic operator steps for UI-only or97 cross-skill workflows (e.g., Splunkbase install via `splunk-app-install`).98- `install_apply` — the skill installs or configures a Splunk-side companion99 app via Splunkbase + REST.100- `not_applicable` — the section does not apply to the chosen target101 (e.g., UID on Splunk Enterprise, Discover app on SCP < 10.1.2507).102103UI-only steps (multi-org `Make Default`, the SE TLS-certificate paste, the104"Override default organization" user action) render as `deeplink` and never105claim API parity that does not exist.106107## Safety Rules108109- Never ask for Splunk Observability tokens, Splunk Cloud Platform admin JWTs,110 Splunk passwords, SIM Add-on org tokens, or Log Observer Connect111 service-account passwords in conversation.112- Never pass any secret on the command line or as an environment-variable113 prefix.114- Use `--token-file` for the regular Splunk Observability Cloud API token.115- Use `--admin-token-file` for the Splunk Observability Cloud admin token used116 by Unified Identity pairing and `enable-centralized-rbac`.117- Use `--org-token-file` for the Splunk Observability Cloud org access token118 used by the Splunk Infrastructure Monitoring Add-on account.119- Use `--service-account-password-file` for the Log Observer Connect120 service-account password.121- Token and password files must be regular, single-hardlink, non-empty files122 with mode `600` and no more than 64 KiB. Tokens contain one printable-ASCII123 value; passwords may contain printable UTF-8. Either permits at most one124 trailing LF or CRLF; all other controls and Unicode line separators fail.125 Authenticated126 clients use `O_NOFOLLOW`, bounded double reads, and stable metadata/content127 fingerprints; `--apply` aborts on any mismatch.128- Authenticated REST calls require HTTPS before credentials are attached and129 refuse every redirect so Basic, bearer, JWT, and O11y token headers cannot be130 forwarded to a different URL.131- Generated authenticated curl helpers put `-q` first so user or system curl132 configuration cannot relax TLS/redirect policy. Log Observer Connect converts133 its password file directly from the validated descriptor into a private curl134 config; the password is never loaded into a shell variable or reopened.135- Reject direct secret flags such as `--token`, `--access-token`,136 `--api-token`, `--o11y-token`, `--admin-token`, `--org-token`, `--sf-token`,137 `--service-account-password`, and `--password`.138- Prefer `SPLUNK_O11Y_REALM`, `SPLUNK_O11Y_TOKEN_FILE`,139 `SPLUNK_O11Y_ADMIN_TOKEN_FILE`, and `SPLUNK_O11Y_ORG_TOKEN_FILE` from the140 repo `credentials` file when present; these store only realms and token-file141 paths, never token values.142- Strip every secret from `00-09-*.md`, `apply-plan.json`, `payloads/`,143 `current-state.json`, `state/apply-state.json`, and any other rendered144 artifact on disk.145- `enable-centralized-rbac` is destructive and irreversible without Splunk146 Support. This repo has no safe file-backed transport for the required ACS147 token, so cutover is classified as `handoff` and always fails before mutation.148- `bash skills/shared/scripts/write_secret_file.sh /tmp/splunk_o11y_token`149 helps the user create a token file without exposing the secret in shell150 history.151152## Primary Workflow1531541. Collect non-secret values: target (cloud or enterprise), Splunk Cloud155 stack, Splunk Observability Cloud realm (us0/us1/eu0/eu1/eu2/au0/jp0/sg0/156 us2-gcp), multi-org list, Log Observer Connect service-account username,157 indexes the LOC service account should access, Splunk Infrastructure158 Monitoring Add-on account name and modular-input picks.1592. Create or update a JSON/YAML spec from `template.example`.1603. Render and validate:161162 ```bash163 bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \164 --render \165 --spec skills/splunk-observability-cloud-integration-setup/template.example \166 --output-dir splunk-observability-cloud-integration-rendered167 ```1681694. Review `splunk-observability-cloud-integration-rendered/`:170 - `README.md` — TL;DR and ordered next-step commands.171 - `architecture.mmd` — Mermaid topology of the rendered integration.172 - `00-prerequisites.md` through `09-handoff.md` — numbered per-section plans.173 - `coverage-report.json` — per-section coverage status.174 - `apply-plan.json` — apply ordering with idempotency keys (no secrets).175 - `payloads/` — per-step request bodies for ACS / REST calls.176 - `scripts/` — per-step apply scripts and cross-skill handoff drivers.177 - `support-tickets/` — pre-filled tickets when Splunk Support is required.178 - `sim-addon/` — MTS sizing, plus the curated SignalFlow catalog files.1791805. Apply only when explicitly requested:181182 ```bash183 bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \184 --apply \185 --spec skills/splunk-observability-cloud-integration-setup/template.example \186 --realm us0 \187 --admin-token-file /tmp/splunk_o11y_admin_token \188 --org-token-file /tmp/splunk_o11y_org_token \189 --service-account-password-file /tmp/loc_svc_account_password190 ```191192 To run only a subset of sections:193194 ```bash195 bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \196 --apply pairing,sim_addon \197 --spec my-integration.yaml198 ```199200 Centralized RBAC cutover is a fail-closed handoff because no safe file-backed201 transport is implemented. The handoff never places a token on process argv.202203## End-User UX (the "easy to use" promise)204205Five entry points, ordered by user effort:206207- `--quickstart` — renders and validates the common UID + Discover app + SIM208 scenario, then prints explicit supported apply and UI/admin handoffs. It does209 not mutate live state.210- `--render` (default) — produces the numbered plan tree; never touches live211 state.212- `--discover` — writes a read-only rendered-plan inventory scaffold to213 `current-state.json`. It does not currently claim a complete live snapshot.214- `--doctor` — writes the static twenty-check review catalog and a prioritized215 handoff/fix list. Use `--validate --live` for the limited implemented216 token-auth and SIM-account reachability reads.217- `--apply SECTIONS` — applies explicitly named supported sections. Live apply218 without a section list is refused because plans can include UI/admin handoffs.219220Plus quality-of-life flags:221222- `--enable-token-auth` — flips token authentication on if disabled (auto-223 rendered as a fix from `--doctor`).224- `--explain` — prints the apply plan in plain English with no API calls225 (useful for change-management approvals).226- `--list-sim-templates` / `--render-sim-templates aws_ec2,kubernetes,227 os_hosts,apm` — pick from the curated SignalFlow catalog without writing228 SignalFlow.229- `--make-default-deeplink` — emits the multi-org "Make Default" UI deeplink230 for the named realm (since no API exists).231- `--quickstart-enterprise` — renders and validates the Splunk Enterprise fast232 path; supported mutations must be invoked explicitly afterward.233- `--rollback <section>` — renders (does not auto-run) the reverse-engineered234 commands for steps that have a public reversible API; for irreversible steps235 (`enable-centralized-rbac`, deleted users) it renders a Splunk Support236 ticket template instead.237238## Supported Sections239240Specs use `api_version: splunk-observability-cloud-integration-setup/v1` and241can include:242243- `prerequisites` — static region/realm and FedRAMP/GovCloud/GCP policy244 rendering. Live stack version, trial-stack, operator-role, and Discover-app245 10.1.2507+ checks remain explicit preflight handoffs.246- `token_auth` — token-auth state read + flip, `edit_tokens_settings`247 capability check.248- `pairing` — Splunk Cloud Platform Unified Identity (UID) via `POST249 /adminconfig/v2/observability/sso-pairing`, or Discover-app API-token250 connection. Multi-org is a fail-closed per-org-token handoff plus Make251 Default deeplink; the skill never reuses one token across declared orgs.252 Pairing is not a Splunk Enterprise section; Enterprise uses Log Observer253 Connect separately.254- `centralized_rbac` — `acs observability enable-capabilities` (provisions255 `o11y_admin / o11y_power / o11y_read_only / o11y_usage`) and256 `enable-centralized-rbac`; the `o11y_access` gate role; UID role mapping.257- `related_content_capabilities` — `read_o11y_content`, `write_o11y_content`,258 `EXECUTE_SIGNAL_FLOW`, `READ_APM_DATA`, `READ_BASIC_UI_ACCESS`, `READ_EVENT`259 capability assignments for Real Time Metrics + previews.260- `discover_app` — converges the non-secret Configurations tabs of the261 in-platform Discover Splunk Observability Cloud app: Related Content262 discovery, Field aliasing (Auto Field Mapping), and Automatic UI updates;263 Test related content remains a deeplink. Access tokens are written only by264 service-account `pairing`, preventing a duplicate connection. This section265 also merges Read permission for selected roles.266- `log_observer_connect` — service-account user + role + workload rule;267 Splunk Cloud Platform path or Splunk Enterprise TLS-certificate path.268 Hands off realm-IP allowlist deltas to `splunk-cloud-acs-admin-setup`.269- `dashboard_studio_o11y` — default-connection + capability validations + a270 starter Dashboard Studio JSON snippet using O11y metrics.271- `sim_addon` — installs `Splunk_TA_sim` (Splunkbase 5247), creates the272 `sim_metrics` index when missing, configures the SIM account through the273 TA UCC custom REST handler, renders curated SignalFlow modular inputs from274 the catalog (AWS_EC2, AWS_Lambda, Azure, GCP, Containers, Kubernetes,275 OS_Hosts, APM_Errors, APM_Throughput, RUM, Synthetics), runs MTS sizing276 preflight, and hands off the Splunk Cloud Victoria-stack search-head HEC277 allowlist + the ITSI Content Pack for Splunk Observability Cloud.278- `enterprise_mode` — collapses UID / ACS observability / Discover-app279 Configurations sections to `not_applicable` and switches LOC to the SE280 TLS-cert path.281282For per-section flag references and REST payload shapes, read283[reference.md](reference.md) and the focused docs under284[references/](references/).285286## Out of Scope (handed off, not duplicated)287288- Splunk Add-on for OpenTelemetry Collector (Splunkbase 7125) — handled by289 `splunk-observability-otel-collector-setup`.290- Splunk Synthetic Monitoring Add-on (Splunkbase `5608`) — archived and not291 listed for Splunk 10.5. Do not install it on a new or upgraded 10.5 stack.292 Use SIM Add-on streams for in-platform metrics and native Splunk293 Observability Cloud Synthetics workflows for browser/API tests.294- Splunk On-Call wiring — handled by `splunk-oncall-setup`.295- ITSI Content Pack content management — handled by `splunk-itsi-config`.296- Splunk Observability Cloud dashboards / detectors / Synthetics / RUM CRUD —297 handled by `splunk-observability-dashboard-builder` and298 `splunk-observability-native-ops`.299- AppDynamics for Log Observer Connect — separate AppDynamics SaaS workflow.300301## Scenarios Gallery302303Six worked end-to-end examples, copy/paste-ready:3043051. **Cloud quickstart (greenfield)** — `--quickstart` renders and validates a306 fresh SCP plan, then prints supported apply and Related Content handoffs.3072. **Multi-org Cloud** — renders a fail-closed, distinct-token-per-org handoff308 for three O11y orgs on one SCP stack; default-org selection uses a deeplink.3093. **Cloud API-token mode (no UID)** — user API access-token pairing (no310 admin token required); SIM Add-on plus Related Content handoff; appropriate311 for stacks where UID is not yet in scope.3124. **Migrate API-token -> UID** — an existing API-token customer wants Unified Identity;313 renderer detects the existing connection and renders a numbered migration314 plan (pair UID, validate, instruct user to delete old SA via Discover315 app deeplink, optionally `enable-centralized-rbac`).3165. **Splunk Enterprise** — `--quickstart-enterprise` renders SIM plus LOC317 service-account/TLS assets without mutating; UID/RBAC/Discover-app sections are318 marked `not_applicable`.3196. **Inherit existing integration** — use `--discover` for a rendered-plan320 inventory scaffold, `--validate --live` for limited reachability, then `--doctor`321 to identify drift and gaps, then targeted `--apply <section>` to322 converge to the rendered plan.323324## Useful Commands325326Validate a draft spec:327328```bash329bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \330 --validate \331 --spec skills/splunk-observability-cloud-integration-setup/template.example332```333334Render without applying:335336```bash337bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \338 --render \339 --spec skills/splunk-observability-cloud-integration-setup/template.example \340 --output-dir splunk-observability-cloud-integration-rendered341```342343Diagnose an existing integration:344345```bash346bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \347 --doctor \348 --realm us0 \349 --admin-token-file /tmp/splunk_o11y_admin_token350```351352List the curated SignalFlow modular-input catalog:353354```bash355bash skills/splunk-observability-cloud-integration-setup/scripts/setup.sh \356 --list-sim-templates357```358359## Hand-offs to Other Skills360361- App install -> `skills/splunk-app-install/scripts/install_app.sh --source362 splunkbase --app-id 5247` (Splunk_TA_sim).363- ACS Log Observer Connect realm-IP allowlist deltas ->364 `skills/splunk-cloud-acs-admin-setup/scripts/setup.sh --phase render365 --target-stack STACK_NAME --features search-api --search-api-subnets366 <pre-baked-realm-IPs>`.367- ACS Splunk Cloud Victoria-stack search-head HEC allowlist (SIM Add-on368 prerequisite) -> `skills/splunk-cloud-acs-admin-setup/scripts/setup.sh369 --phase render --target-stack STACK_NAME --features hec`.370- ITSI Content Pack for Splunk Observability Cloud ->371 `skills/splunk-itsi-config/SKILL.md`.372- Splunk Observability Cloud dashboards, detectors, Log Observer Connect373 queries, Synthetics, RUM ->374 `skills/splunk-observability-dashboard-builder/SKILL.md` and375 `skills/splunk-observability-native-ops/SKILL.md`.376- OTel collection on Kubernetes and Linux ->377 `skills/splunk-observability-otel-collector-setup/SKILL.md`.378- Splunk On-Call detector recipients -> `skills/splunk-oncall-setup/SKILL.md`.379380## Compliance and Security Baseline381382- Splunk Cloud Platform Unified Identity is supported in AWS regions only;383 GovCloud and GCP regions are excluded. The skill marks UID sections384 `not_applicable` when GovCloud or GCP is detected and renders a Service385 Account fallback plan.386- Cross-region pairing (e.g., us0 realm to us-west-2 region) requires Splunk387 Account team approval; the preflight WARNs and emits a388 `support-tickets/cross-region-pairing.md` template.389- FedRAMP / IL5 customers cannot use UID against the public commercial O11y390 realms; the skill renders a `support-tickets/fedramp-il5-readiness.md`391 template instead of attempting the pair call.392- The skill never asks for nor logs secret material, refuses every direct393 secret CLI flag, and redacts every token, password, JWT, and authorization394 value from rendered artifacts. Non-secret pairing job IDs are retained in395 mode-600 apply state so asynchronous status polling can resume safely.396397## MCP Tools398399This skill includes checked-in, read-only Splunk MCP custom tools generated400from `mcp_tools.source.yaml`.401402Validate or regenerate the tool artifact:403404```bash405python3 skills/shared/scripts/mcp_tools.py validate skills/splunk-observability-cloud-integration-setup406python3 skills/shared/scripts/mcp_tools.py generate skills/splunk-observability-cloud-integration-setup407```408409Load the tools into Splunk MCP Server:410411```bash412bash skills/splunk-observability-cloud-integration-setup/scripts/load_mcp_tools.sh413```414415The loader uses the supported `/mcp_tools` REST batch endpoint by default. Use416`--allow-legacy-kv` only for older MCP Server app versions that lack that417endpoint.