Skip to content

feat: add cf manifest command for external tool integration#68

Merged
rkoster merged 1 commit intomainfrom
feat/cf-manifest-command
Mar 2, 2026
Merged

feat: add cf manifest command for external tool integration#68
rkoster merged 1 commit intomainfrom
feat/cf-manifest-command

Conversation

@rkoster
Copy link
Owner

@rkoster rkoster commented Mar 2, 2026

Summary

  • Add ibosh cf manifest command that outputs the interpolated CF deployment manifest with all ops files applied
  • Enables external tools to build on top of the ibosh-generated CF manifest
  • Refactor CFDeployAction to use shared functions for DRY code

Features

  • Variable credentials remain as placeholders (e.g. ((cf_admin_password))) since they are generated by config-server during deployment
  • system_domain and router_static_ips are substituted with resolved values
  • BOSH env is optional when --router-ip is explicitly provided
  • Manifest output goes to stdout, info messages to stderr (enabling clean piping)

Usage Examples

# Auto-select router IP (requires BOSH env)
eval "$(ibosh docker print-env)"
ibosh cf manifest

# Use specific router IP (no BOSH env needed)
ibosh cf manifest --router-ip 10.245.0.34

# Use custom system domain
ibosh cf manifest --router-ip 10.245.0.34 --system-domain my.domain.com

# Save to file for external tools
ibosh cf manifest --router-ip 10.245.0.34 > manifest.yml

Changes

  • internal/commands/cf.go: Added shared types (CFManifestConfig, CFManifestFiles) and functions (ResolveCFConfig, PrepareCFManifestFiles), new CFManifestAction, and refactored CFDeployAction
  • cmd/ibosh/main.go: Registered new manifest subcommand under cf
  • internal/commands/commands_test.go: Added test for CFManifestAction export

Add 'ibosh cf manifest' command that outputs the interpolated CF
deployment manifest with all ops files applied. This enables external
tools to build on top of the ibosh-generated CF manifest.

Key features:
- Variable credentials remain as placeholders (e.g. ((cf_admin_password)))
- system_domain and router_static_ips are substituted with resolved values
- BOSH env is optional when --router-ip is explicitly provided
- Manifest output goes to stdout, info messages to stderr

Also refactors CFDeployAction to use shared functions (ResolveCFConfig,
PrepareCFManifestFiles) for DRY code.
@rkoster rkoster merged commit 0e65838 into main Mar 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant