Skip to content

Configuration Reference

The slipp.yaml file configures a project for slipp operations.

  • Directoryyour-project/
    • slipp.yaml
    • Directoryinventory/
    • playbook.yml

Created automatically by slipp launch or slipp deploy --name.

slipp.yaml
# Project identity
name: myapp
# Ansible paths
inventory: inventory/hosts
playbook: playbook.yml
roles_path:
- roles
galaxy_path: roles/galaxy
# Secrets
vault: inventory/host_vars/myserver/vault.yml
# Container runtime (auto-detected if omitted)
runtime: podman
# Managed roles (for filtering in slipp ps)
managed_roles:
- myapp
- myapp-worker
# Tag presets for deployments
tag_presets:
install: "--tags install-all"
setup: "--tags setup-all --skip-tags start"
restart: "--tags restart"
update: "--tags update-app"

Required. Project identifier used in:

  • Global registry
  • Service filtering with slipp ps -p
  • Cross-project vault access
name: myapp

Path to Ansible inventory file, relative to project root.

inventory: inventory/hosts

Default: inventory/hosts

Path to main Ansible playbook.

playbook: playbook.yml

Default: playbook.yml

List of directories to search for Ansible roles. Passed to Ansible via ANSIBLE_ROLES_PATH.

roles_path:
- roles
- ../shared-roles

Default: [] (Ansible default)

Install directory for roles from requirements.yml. Automatically added to roles_path at runtime.

galaxy_path: roles/galaxy

When requirements.yml exists, slipp runs ansible-galaxy install to this directory before deployment.

Path to Ansible vault file for secrets.

vault: inventory/host_vars/myserver/vault.yml

Used by:

  • slipp secrets commands
  • slipp run --vault for environment injection

Container runtime: docker or podman.

runtime: podman

Auto-detected from playbook if omitted.

List of Ansible role names this project manages. Used to filter slipp ps output.

managed_roles:
- myapp
- myapp-worker
- myapp-scheduler

Services from these roles appear in slipp ps without --all.

Named shortcuts for Ansible tag combinations.

tag_presets:
install: "--tags install-all"
setup: "--tags setup-all --skip-tags start"
restart: "--tags restart"

Use with:

Terminal window
slipp deploy install
slipp deploy setup

The inventory file uses standard Ansible YAML format:

inventory/hosts
all:
hosts:
myserver:
ansible_host: 192.168.1.100
ansible_user: slipp
ansible_port: 22
all:
hosts:
production:
ansible_host: prod.example.com
ansible_user: slipp
staging:
ansible_host: staging.example.com
ansible_user: slipp

Per-host configuration in host_vars/:

  • Directoryinventory/
    • hosts
    • Directoryhost_vars/
      • Directorymyserver/
        • vars.yml
        • vault.yml
inventory/host_vars/myserver/vars.yml
domain: app.example.com
app_port: 3000
database_host: localhost
database_password: "{{ vault_database_password }}"

Projects are tracked globally at ~/.config/slipp/projects.json:

{
"projects": [
{
"name": "myapp",
"project_path": "/home/user/projects/myapp",
"registered_at": "2024-01-15T10:30:00Z"
}
]
}

View with:

Terminal window
slipp projects list

For multiple environments, use separate inventory files:

  • Directoryinventory/
    • production
    • staging
    • development

Deploy to specific environment:

Terminal window
slipp deploy staging

Or configure in slipp.yaml per environment (not yet supported - use CLI flags).

If upgrading from an older slipp version:

  1. Rename ansictl.yaml to slipp.yaml
  2. The format is identical - no content changes needed