Skip to content

Commit 7066c6e

Browse files
author
wildleo91
committed
docs(runbooks): add Splunk Developer license install procedure
Adds a new "Dev Environment - Install Splunk Developer License" subsection under Operational Procedures. Documents the host-to- container copy + install + restart + verify + cleanup steps so any contributor running E2E locally past the 60-day trial can follow the same procedure. Context: the dev/test container has been running on Splunk's 60-day Enterprise trial. Custom roles (wladmin1, superadmin1, analyst1) and scheduled searches require Enterprise features. Once the trial expires the daemon silently downgrades to Free mode and parts of the test surface behave non-prod-representatively. This commit just documents the install procedure - it does NOT add a license file to the repo. Per the inline caveats: - License is private to the maintainer's dev.splunk.com account - It is keyed to the Splunk GUID at install time; container rebuild requires re-install (one more step in the DR runbook) - CI does not need this - every workflow run gets a fresh 60-day trial container that lasts longer than any CI job Verified by running the procedure against the live wl_manager_test container on this turn: - License installed: type=enterprise, quota=10 GB/day, label="Splunk Developer Personal License DO NOT DISTRIBUTE", expires 2026-11-13 UTC (180 days) - Splunk restarted cleanly - test_ratelimit_per_worker.cjs green post-restart (29 successes / 31 rate-rejects / 0 other-errors, matching pre-install run) Doc-drift hook passes on all 28 docs.
1 parent db33fa7 commit 7066c6e

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

docs/RUNBOOKS.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,3 +374,50 @@ curl -sk -u superadmin1:token -X POST \
374374

375375
**After GUID rotation / DR restore:** Run `bootstrap_csv_hashes` after `reset_cooldowns.sh` and FIM baseline rebuild to re-sign the CSV hash registry with the new GUID-derived key.
376376

377+
### Dev Environment — Install Splunk Developer License
378+
379+
**Use when**: a local dev/test container's 60-day Splunk trial has expired (or you want to run E2E tests past the 60-day mark) and you have a personal Splunk Developer license from dev.splunk.com.
380+
381+
**The license is private to your dev.splunk.com account. Never commit it to the repo.** Keep it on your host machine (e.g. `~/Desktop` or a secrets directory) and copy it into the container only at install time. CI does not need a license — every workflow run spins up a fresh `splunk/splunk:9.3.1` container which gets a fresh 60-day Enterprise trial that lasts longer than any CI job.
382+
383+
```bash
384+
# 1. Copy the license into the container (NOT into the repo workspace)
385+
docker cp ~/Desktop/Splunk.License wl_manager_test:/tmp/Splunk.License
386+
387+
# 2. Install (the CLI auto-files it under /opt/splunk/etc/licenses/enterprise/)
388+
docker exec -u splunk wl_manager_test \
389+
/opt/splunk/bin/splunk add licenses /tmp/Splunk.License \
390+
-auth admin:Chang3d!
391+
392+
# 3. Restart (CLAUDE.md convention: stop + start, no -auth; the `!` in the
393+
# password is a bash history-expansion trigger).
394+
docker exec -u splunk wl_manager_test /opt/splunk/bin/splunk stop
395+
docker exec -u splunk wl_manager_test /opt/splunk/bin/splunk start --answer-yes
396+
397+
# 4. Verify (look for type=enterprise + the expected quota)
398+
docker exec -u splunk wl_manager_test \
399+
curl -sk -u admin:Chang3d! \
400+
"https://localhost:8089/services/licenser/licenses?output_mode=json" \
401+
| python3 -m json.tool | grep -E '"label"|"type"|"quota"'
402+
403+
# 5. Clean up the temp copy in /tmp (the install already filed it under
404+
# /opt/splunk/etc/licenses/enterprise/). docker cp created /tmp file as
405+
# root, so the cleanup needs -u 0.
406+
docker exec -u 0 wl_manager_test rm -f /tmp/Splunk.License
407+
```
408+
409+
**Caveats:**
410+
411+
- **License is keyed to the Splunk GUID at install time.** Rebuilding the container (`docker rm` + recreate) generates a new GUID and the license must be re-installed. The cooldown / FIM / CSV-hash recovery procedures earlier in this section also need to run after a rebuild — license install is one more step in that DR runbook.
412+
- **Splunk Free + Splunk Forwarder licenses stay listed alongside the Developer license** after install — that is normal. Enterprise takes precedence; Free is the fallback if Enterprise expires or its daily quota is breached.
413+
- **Quota**: a Personal Dev license is typically 10 GB/day. The full E2E suite consumes a few hundred MB/day at most, so quota is not a real constraint for a single-developer dev container.
414+
- **Expiry**: Dev licenses ship with a built-in expiry (usually 6-12 months from issue). Watch the `expiration_time` field in the verify command above; rotate before it lapses.
415+
416+
**Smoke-test after install:** run `node tests/e2e/test_ratelimit_per_worker.cjs` (or any representative E2E test). A green run confirms no licensing-mode regression (custom roles still work, KV access still works, scheduled inputs still fire).
417+
418+
**When to re-install:**
419+
420+
- Container rebuilt from image (new GUID).
421+
- The Splunk Enterprise trial expired AND you want to keep using Enterprise-only features (custom roles, scheduled searches, distributed search, etc.) locally.
422+
- License file rotated (rare — you would get a new file from dev.splunk.com when the current one expires).
423+

0 commit comments

Comments
 (0)