How theforeman/foreman works
Foreman is an infrastructure lifecycle management server: operators or automation clients discover and manage hosts, provision bare-metal and cloud systems, apply configuration, and monitor reported status. Its Rails web and REST/GraphQL interfaces expose host and infrastructure operations; host orchestration connects provisioning to compute, network, and configuration integrations. The README also documents bulk host management, auditing, LDAP/RBAC, image building, and plugins. The graph uses tree-supported paths for these capabilities; integration wiring beyond the sampled host actions is shown only where documented or represented by orchestration modules.
Main entry points: host.rb Host Domain · hosts_controller.rb Host Operations · application_record.rb Application Records · orchestration.rb Host Orchestration
Components 24
User Interfaces
- Web Controllers
app/controllers - REST API
app/controllers/api/v2 - GraphQL API
app/graphql - Unattended Endpoints
config/routes.rb
Host Lifecycle
- Host Operations
app/controllers/hosts_controller.rb - Bulk Host Actions
app/services/bulk_hosts_manager.rb - Host Registration
app/controllers/foreman_register/hosts_controller.rb - Provisioning Templates
app/controllers/provisioning_templates_controller.rb
Infrastructure Integrations
- Host Orchestration
app/models/concerns/orchestration.rb - Compute Providers
app/models/compute_resources - Smart Proxies
app/models/feature.rb - Configuration Tools
app/models/config_report.rb
Operations and Governance
- Reports and Status
app/controllers/config_reports_controller.rb - Audit History
app/controllers/audits_controller.rb - Authentication and RBAC
app/controllers/auth_sources_controller.rb - Plugin Extensions
app/registries/menu/manager.rb
Domain Core
- Host Domain
app/models/host.rb - Host Groups
app/models/hostgroup.rb - Application Records
app/models/application_record.rb
Other components
- Operator
- API Client
- Compute Infrastructure
- Smart Proxy Service
- Configuration Systems
Connections 25
- Operator → Web Controllers: uses
- API Client → REST API: requests
- API Client → GraphQL API: queries
- Web Controllers → Host Operations: dispatches
- REST API → Host Operations: dispatches
- GraphQL API → Host Domain: resolves
- Host Operations → Host Domain: manages
- Host Operations → Bulk Host Actions: invokes
- Bulk Host Actions → Host Domain: updates
- Host Operations → Host Groups: assigns
- Host Domain → Application Records: persists through
- Host Registration → Host Domain: loads
- Host Registration → Provisioning Templates: renders
- Unattended Endpoints → Host Registration: routes requests
- Host Domain → Host Orchestration: includes
- Host Orchestration → Compute Providers: coordinates
- Compute Providers → Compute Infrastructure: manages instances
- Host Orchestration → Smart Proxies: coordinates
- Smart Proxies → Smart Proxy Service: integrates
- Configuration Tools → Configuration Systems: integrates
- Reports and Status → Application Records: reads reports
- Audit History → Application Records: records changes
- Authentication and RBAC → Application Records: manages identities
- Plugin Extensions → Web Controllers: extends interface
- Host Domain → Configuration Tools: receives reports