CT-OpsCT-Ops
Home
Getting Started
Architecture
Features
Deployment
GitHub
GitHub
Home
Getting Started
Architecture
Features
Deployment
GitHub
GitHub
  • Introduction
  • Getting Started

    • Installation
    • Configuration
    • Offline Agent Install Bundle
  • Architecture

    • Architecture Overview
    • Agent Architecture
    • Ingest Service
    • Deployment Profiles
  • Features

    • Hosts & Inventory
    • Host Groups
    • Networks
    • Monitoring
    • Certificate Management
    • SSL Certificate Checker
    • Alerts
    • Notifications
    • Reports
    • Operations Calendar
    • Terminal
    • Service Accounts & Identity
    • Directory User Lookup
    • Tasks & Runbooks
    • Scheduled Tasks
    • Tags
    • Notes
    • Feature Flags
  • Deployment

    • Docker Compose Deployment
    • Air-Gap Deployment
    • Load Testing
  • Development

    • Local Dev Stack
    • End-to-end testing
  • Licensing
  • Security

    • Security & Vulnerability Disclosure
    • mTLS: agent ↔ server authentication

Feature Flags

CT-Ops uses feature flags to ship dormant code without exposing unfinished workflows in production.

Developers define known flags in code. Each CT-Ops instance stores explicit opt-ins in instance_settings.metadata.featureFlags. Missing flags are treated as disabled, and unknown flags fail closed.

The database stores only the instance choice:

{
  "featureFlags": {
    "automation.ansible": true
  }
}

Feature flags are not a security boundary by themselves. CT-Ops checks them in the backend before changing data or enabling provider-specific behaviour. Frontend checks only control visibility and user experience.

Ansible Automation

automation.ansible gates the optional Ansible automation provider. The flag is off by default.

Administrators enable it from Settings → Integrations → Automation. CT-Ops stores both the feature flag and the selected automation provider in the database:

{
  "featureFlags": {
    "automation.ansible": true
  },
  "automationSettings": {
    "provider": "ansible"
  }
}

CT-Ops does not start Docker containers from the web app or from ./start.sh. Administrators pair the Ansible API URL with the initial username and password configured on the ansible-api container. The container then generates a service-token secret for ongoing signed requests; CT-Ops stores that generated secret encrypted and does not retain the initial password. The ansible-api container can run on the CT-Ops host, on a different host, or behind a reverse proxy.

When the API is healthy, administrators can save encrypted SSH private-key credential profiles and run an Ansible ping task from host or host-group task views. CT-Ops stores task state and redacted output in its task history; the Ansible container only executes the requested ping operation.

Edit this page on GitHub
Last Updated: 5/17/26, 9:43 AM
Contributors: Simon Carr
Prev
Notes