Skip to content

ZachiNachshon/provisioner-plugins

Repository files navigation

RequirementsQuickStartPluginsOverviewContributeSupportLicense


Provisioner plugins are the pluggable extensions for Provisioner CLI.

Every plugin is installed as a pip package. During Provisioner CLI runtime, the commands of any pip installed plugin are dynamically loaded into Provisioner's CLI main menu.

Plugins are using the Provisioner CLI as the runtime and also as the development framework i.e. package dependency.

❗ WARNING
Provisioner plugins are still in alpha stage, breaking changes might occur.

🏴‍☠️ Requirements

  • A Unix-like operating system: macOS, Linux
  • Python v3.11 and above
  • Provisioner CLI installed and ready to use

⚡️ QuickStart

Installing Provisioner plugins is as simple as installing a pip package:

pip install <plugin-name>

🔌 Available Plugins

Name Path
Installers Install anything anywhere on any OS/Arch either on a local or remote machine
Single Board Single boards management as simple as it gets
Examples Playground for using the CLI framework with basic dummy commands

⚓️ Overview

Maintainers / Contributors:


🔨 How to create a Provisioner plugin?

  1. Duplicate the provisioner_examples_plugin plugin folder with your plugin name

  2. Search for examples keyword under your new plugin folder scope and replace where necessary

  3. Update the plugin <my-plugin>/Makefile build command

  4. Append the newly added plugin commands to the provisioner_examples_plugin repository outer Makefile

  5. Define plugin configuration under <my-plugin>/domain/config.py

  6. Manage plugin version under <my-plugin>/pyproject.toml under [tool.poetry]

  7. Create a Python plugin entrypoint at <my-plugin>/main.py

❕ INFO
A provisioner plugin genereate command will get added soon to simplify a new plugin scaffolding.

🐳 Playground

Using provisioner, every command is a playground.

Use the --dry-run (short: -d) to check command execution breakdown, you can also add the --verbose (short: -v) flag to read DEBUG information.

All dry-run actions are no-op, you can safely run them as they only print to stdout.


Contribute

Please follow our contribution guidelines if you with to contribute:

  • PRs need to have a clear description of the problem they are solving
  • PRs should be small
  • Code without tests is not accepted, code coverage should keep the same level or higher
  • Contributions must not add additional dependencies
  • Before creating a PR, make sure your code is well formatted, abstractions are named properly and design is simple
  • In case your contribution can't comply with any of the above please start a github issue for discussion

Support

Provisioner is an open source project that is currently self maintained in addition to my day job, you are welcome to show your appreciation by sending me cups of coffee using the the following link as it is a known fact that it is the fuel that drives software engineering ☕

Buy Me A Coffee


License

MIT