Skip to content

Instantly share code, notes, and snippets.

@jlmitch5
Last active July 22, 2026 12:52
Show Gist options
  • Select an option

  • Save jlmitch5/9165573464640ab3f0227075549479fb to your computer and use it in GitHub Desktop.

Select an option

Save jlmitch5/9165573464640ab3f0227075549479fb to your computer and use it in GitHub Desktop.
Infrastructure request: obsfw runner with VPN, Claude, and Slack bot access

Infrastructure Request: Observability Framework Runner

Requestor: John Mitchell Project: Observability Framework Tooling (obsfw) Date: 2026-07-22

Summary

Requesting a persistent runner environment to host the obsfw daily report pipeline, which currently runs on a local macOS launchd job. The pipeline generates multi-outcome observability reports for Ansible by pulling data from Jira, GitHub, GitLab, Slack, and Claude (LLM analysis), then publishes HTML reports to GitLab Pages. See https://nexus-observability-report-becce4.pages.redhat.com/multi-outcome/

What the runner needs to do

  1. Run a Python 3.12 CLI tool (obsfw) on a daily cron schedule
  2. Execute the pipeline: obsfw config pullobsfw generate --analysisobsfw publishobsfw compliance --slackobsfw digest --post-to-slack

Requirements

Network Access

  • VPN / internal network access — must be able to reach gitlab.cee.redhat.com (GitLab CE) for config sync and report publishing via GitLab API
  • Public internet — needs to reach Jira Cloud (redhat.atlassian.net), GitHub (api.github.com), and Slack APIs

Claude / LLM Access

  • Programmatic Claude access — the pipeline runs Claude (Opus model) to generate daily narrative analysis and release coordinator briefings
  • Currently uses claude --print CLI via Google Vertex AI. Need either:
    • Vertex AI service account credentials on the runner, OR
    • Direct Anthropic API access (API key), OR
    • Whatever the recommended path is for running Claude programmatically from an internal runner

Slack Bot Token

  • Slack bot token with channel read permissions — the pipeline reads messages from 11 Slack channels daily to produce a cross-channel digest for the ANSTRAT-1646 outcome. We anticipate other outcomes to follow suit once their configs get built up fromt he minimal case.
  • Channels are all in the Red Hat Slack workspace (listed below)
  • Required Slack scopes: channels:history, channels:read (and groups:history, groups:read if any are private)
  • Currently using slacker CLI with browser-based auth — need a proper bot token for headless operation

Slack channels the bot needs read access to currently (again, this list will expand):

  • #to-be-deleted-formerly-wg-anstrat-1646-ao-ga (C0BJ453DBFB)
  • #wg-anstrat-1845 (C0BGWJR3JFP)
  • #wg-anstrat-1956 (C0BH1QNT3JM)
  • #wg-anstrat-1972 (C0BFAF35L3D)
  • #wg-anstrat-2126 (C0B7LUKFL84)
  • #wg-anstrat-2162 (C0BGVH02BT9)
  • #wg-anstrat-2278 (C0BHALMFN9J)
  • #wg-anstrat-2399-quality-and-standards (C0BJJ0SLZR7)
  • #wg-anstrat-2161-otel-docs (C0BJE3MMJQN)
  • #wg-nexploration-labs (C0B69J86TRN)
  • #wg-ansible-nexus (C09CN0WB4BW)

Environment / Secrets

  • JIRA_USER_EMAIL + JIRA_API_TOKEN — Jira Cloud API auth
  • GITHUB_TOKEN — GitHub API (read access to automation-nexus org repos)
  • Slack bot token (new — see above)
  • Claude / Vertex AI credentials (see above)
  • GitLab auth for gitlab.cee.redhat.com (token or SSH key for git push to pages repo)

Runtime

  • Python 3.12+
  • pip install support (the tool installs as pip install -e .)
  • git available (for GitLab pages repo operations)
  • Persistent storage for config files and data cache (~50MB)
  • Cron or scheduled job support (runs once daily, ~8am ET)

Nice to haves

  • Ability to trigger ad-hoc runs/CI-based runs
  • Log retention for debugging failed runs
  • Alerting if the daily run fails

Current architecture

[launchd on macOS] → obsfw CLI → Jira API, GitHub API, GitLab (VPN), Slack (slacker), Claude (Vertex)
                                    ↓
                              GitLab Pages (nexus-observability-report)

Target architecture

[Internal runner] → obsfw CLI → Jira API, GitHub API, GitLab (internal network), Slack (bot token), Claude (TBD)
                                    ↓
                              GitLab Pages (nexus-observability-report)

Repo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment