Ignition
Getting Started

Project Setup

Scaffold a new Ignition project and configure it.

Scaffolding with ignition init

Run init to create a starter project:

ignition init

This creates:

FilePurpose
recipe.tsA starter recipe that runs uname -a
inventory.tsAn example inventory with one host
ignition.config.tsProject configuration
package.jsonCreated 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.json

Recipes, 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 config

With 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 @web

Other 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

On this page