A Launchr plugin for Plasmactl that provides platform lifecycle management for Plasma platforms.
plasmactl-platform orchestrates the complete platform deployment workflow including creation, validation, deployment, and destruction. It integrates with CI/CD systems and provides both local and remote deployment capabilities.
- Platform Lifecycle: Create, list, show, validate, deploy, destroy platforms
- Multi-Step Orchestration: Executes bump, compose, prepare, and deploy in sequence
- CI/CD Integration: Triggers pipelines in GitLab, GitHub Actions, and other systems
- DNS Configuration: Automatic DNS setup (MX, DKIM, DMARC, SPF, rDNS)
- Environment-Aware: Deploy to dev, staging, production environments
Full deployment workflow (bump → compose → prepare → deploy):
# Deploy a chassis section
plasmactl platform:up dev platform.interaction.observability
# Deploy a specific application
plasmactl platform:up dev interaction.applications.dashboards
# Local deployment (skip CI/CD)
plasmactl platform:up --local dev platform.interaction.observability
# Skip certain phases
plasmactl platform:up --skip-bump --skip-prepare dev platform.interaction.observabilityOptions:
--skip-bump: Skip version bumping--skip-prepare: Skip prepare phase--local: Run deployment locally instead of via CI/CD--clean: Clean compose working directory--clean-prepare: Clean prepare directory--debug: Enable Ansible debug mode--img: Deploy from a Platform Image (.pi) file
Create a new platform scaffold with DNS configuration:
plasmactl platform:create ski-dev \
--metal-provider scaleway \
--dns-provider ovh \
--domain dev.skilld.cloudOptions:
--metal-provider: Infrastructure provider (scaleway, hetzner, ovh, aws, gcp, azure)--dns-provider: DNS provider (ovh, cloudflare, route53)--domain: Domain name for the platform--skip-dns: Skip DNS configuration
List all platforms:
plasmactl platform:list
plasmactl platform:list --format jsonOptions:
--format: Output format (table, json, yaml)
Show platform details:
plasmactl platform:show ski-dev
plasmactl platform:show ski-dev --format jsonOptions:
--format: Output format (table, json, yaml)
Validate platform configuration:
plasmactl platform:validate ski-dev
plasmactl platform:validate ski-dev --skip-dns --skip-mailOptions:
--skip-dns: Skip DNS validation--skip-mail: Skip mail configuration validation
Deploy to a platform (Ansible deployment):
plasmactl platform:deploy dev platform.interaction.observability
plasmactl platform:deploy dev interaction.applications.connect --debugOptions:
--debug: Enable Ansible debug mode--check: Dry-run mode (no changes)--img: Deploy from Platform Image--prepare-dir: Custom prepare directory
Destroy a platform (requires confirmation):
plasmactl platform:destroy ski-dev
# With confirmation bypass (for automation)
plasmactl platform:destroy ski-dev --yes-i-am-sureOptions:
--yes-i-am-sure: Skip confirmation prompt
plasmactl-platform/
├── plugin.go # Plugin registration
├── actions/
│ ├── create/
│ │ ├── create.yaml # Action definition
│ │ └── create.go # Implementation
│ ├── deploy/
│ │ ├── deploy.yaml
│ │ └── deploy.go
│ ├── destroy/
│ │ ├── destroy.yaml
│ │ └── destroy.go
│ ├── list/
│ │ ├── list.yaml
│ │ └── list.go
│ ├── show/
│ │ ├── show.yaml
│ │ └── show.go
│ ├── up/
│ │ ├── up.yaml
│ │ └── up.go
│ └── validate/
│ ├── validate.yaml
│ └── validate.go
└── internal/
├── ci/ # CI/CD integration
│ └── ci.go # Pipeline triggering
└── git/ # Git operations
└── git.go # Repository operations
plasmactl platform:up dev platform.interaction.observabilityExecutes:
- Bump:
plasmactl component:bump - Compose:
plasmactl model:compose - Prepare:
plasmactl model:prepare - Deploy:
plasmactl platform:deploy
# 1. Create platform with DNS
plasmactl platform:create ski-dev \
--metal-provider scaleway \
--dns-provider ovh \
--domain dev.skilld.cloud
# 2. Provision nodes (via plasmactl-node)
plasmactl node:provision ski-dev -c foundation.cluster.control:GP1-L:3
# 3. Deploy
plasmactl platform:deploy ski-devPlatforms are stored in inst/:
inst/
└── ski-dev/
├── platform.yaml # Platform configuration
└── nodes/ # Node definitions
└── *.yaml
# Store credentials
plasmactl keyring:login gitlabThe plugin triggers GitLab CI pipelines when deploying without --local.
plasmactl keyring:login github| Plugin | Command | Purpose |
|---|---|---|
| plasmactl-node | node:provision |
Provision infrastructure |
| plasmactl-node | node:allocate |
Allocate nodes to chassis |
| plasmactl-model | model:compose |
Compose packages |
| plasmactl-model | model:prepare |
Prepare for deployment |
| plasmactl-component | component:bump |
Bump versions |
- Plasmactl - Main CLI tool
- plasmactl-node - Node provisioning
- plasmactl-model - Model composition
- Plasma Platform - Platform documentation