Skip to main content Skip to docs navigation
Check
View on GitHub

Get Started with Provisioner

A modular CLI framework for creating and managing extensible command-line applications

Introduction

Provisioner is a Python-based framework for creating, managing, and executing modular command-line applications. Its plugin architecture allows teams to develop, share, and integrate specialized tools while maintaining a consistent user experience across all components.

System Requirements

  • Operating System: Unix-like systems (macOS, Linux)
  • Python: Version 3.11 or higher
  • Disk Space: Minimal (~5MB for core runtime, varies by plugins)
  • Additional Requirements: Specific plugins may have additional dependencies

Installation

Installing the Core Runtime

The core runtime provides the foundation for all Provisioner functionality. Install it using pip:

pip install provisioner-runtime

After installation, verify the setup by running:

provisioner --version

Installing Plugins

Plugins extend Provisioner’s capabilities with specialized functionality. You can install plugins through two methods:

This method leverages Provisioner’s built-in plugin management:

# Interactive mode - presents a list of available plugins
provisioner plugins install

# Non-interactive mode - installs a specific plugin
provisioner plugins install --name provisioner-examples-plugin

Method 2: Direct Installation via pip

You can also install plugins directly using pip:

# Example plugin (for learning and experimentation)
pip install provisioner-examples-plugin

# Single-board plugin (for Raspberry Pi and other single-board computers)
pip install provisioner-single-board-plugin

# Installers plugin (for software installation utilities)
pip install provisioner-installers-plugin

Basic Usage

Exploring Available Commands

To see all available commands:

provisioner --help

To explore commands from a specific plugin:

provisioner examples --help
provisioner single-board --help

Command Structure

Provisioner uses a hierarchical command structure:

provisioner <plugin> <module> <submodule> [options] <command>

For example:

provisioner single-board raspberry-pi node configure

Interactive vs. Non-Interactive Mode

Most commands support both interactive and non-interactive modes:

  • Interactive Mode: Guides you through options with prompts and menus
  • Non-Interactive Mode: Uses command-line flags for automation and scripting

Example of non-interactive mode:

provisioner single-board raspberry-pi node \
  --environment Remote \
  --connect-mode Flags \
  --node-username pi \
  --ip-address 192.168.1.100 \
  network

Next Steps