Getting Started
Project Setup
Scaffold a new Ignition project and configure it.
Scaffolding with ignition init
Run init to create a starter project:
ignition initThis creates:
| File | Purpose |
|---|---|
recipe.ts | A starter recipe that runs uname -a |
inventory.ts | An example inventory with one host |
ignition.config.ts | Project configuration |
package.json | Created if missing; otherwise updated to add @grovemotorco/ignition if needed |
Project layout
A typical Ignition project looks like:
my-infra/
ignition.config.ts # Project configuration
inventory.ts # Host inventory
deploy.ts # Main recipe
security.ts # Another recipe
templates/
nginx.conf.ts # Template functions
systemd-unit.ts
package.jsonRecipes, inventories, and templates are all plain TypeScript files. Organize them however suits your project.
Configuration file
ignition.config.ts currently sets defaults for ignition run, so you don't have to repeat the
same run flags:
import type { IgnitionConfig } from "@grovemotorco/ignition"
const config: IgnitionConfig = {
inventory: "inventory.ts",
trace: true,
parallelism: 10,
errorMode: "fail-at-end",
}
export default configWith this config, you can run:
# Before: ignition run deploy.ts @web --inventory inventory.ts --trace --error-mode fail-at-end --parallelism 10
# After:
ignition run deploy.ts @webOther commands such as ignition inventory and ignition dashboard still use their own explicit
flags and arguments.
CLI flags always override config file values. See Configuration for all available options.
Next steps
- Writing Recipes — learn recipe patterns and composition
- Inventory & Targets — define hosts and groups
- Configuration — full config file reference