Go to file
Joshua Boniface 12212177ef Update to new logo 2021-06-29 18:41:36 -04:00
.github/workflows Add GitHub CodeQL analysis config 2020-11-08 03:54:10 -05:00
.hooks Add line break to lint output 2021-05-28 00:20:03 -04:00
api-daemon Fix bad return from initialize call 2021-06-29 18:31:56 -04:00
client-cli Fix typo in command argument 2021-06-29 18:22:39 -04:00
daemon-common Fix incorrect handling of deletions in init 2021-06-29 18:41:02 -04:00
debian Ensure postinst and prerm always succeed 2021-06-23 20:35:40 -04:00
docs Update to new logo 2021-06-29 18:41:36 -04:00
node-daemon Remove explicit ZK address from Patronictl command 2021-06-22 03:31:06 -04:00
.file-header Update copyright year in headers 2021-03-25 17:01:55 -04:00
.gitignore Convert pvc-client-cli into a proper Python module 2021-06-23 05:03:19 -04:00
.gitlab-ci.yml Standardize package building 2020-08-26 11:04:58 -04:00
.version Convert pvc-client-cli into a proper Python module 2021-06-23 05:03:19 -04:00
LICENSE Update to new logo 2021-06-29 18:41:36 -04:00
README.md Update to new logo 2021-06-29 18:41:36 -04:00
build-and-deploy.sh Standardize package building 2020-08-26 11:04:58 -04:00
build-deb.sh Update package version to 0.7 2020-02-15 23:25:47 -05:00
build-unstable-deb.sh Standardize package building 2020-08-26 11:04:58 -04:00
bump-version Convert pvc-client-cli into a proper Python module 2021-06-23 05:03:19 -04:00
gen-api-doc Add DB migration update script 2020-02-15 23:23:09 -05:00
gen-api-migrations Fix pvcapid config in migrations script 2020-03-15 17:33:27 -04:00
gen-zk-migrations Add scripts to generate ZK migration JSON 2021-06-09 00:04:38 -04:00
lint Convert pvc-client-cli into a proper Python module 2021-06-23 05:03:19 -04:00
mkdocs.yml Revert "Add material theme to docs" 2019-07-10 15:23:26 -04:00
test-cluster.sh Add some additional interaction tests 2021-06-22 22:08:51 -04:00

README.md

Logo banner

License Release Documentation Status

NOTICE FOR GITHUB: This repository is a read-only mirror of the PVC repositories from my personal GitLab instance. Pull requests submitted here will not be merged. Issues submitted here will however be treated as authoritative.

PVC is a KVM+Ceph+Zookeeper-based, Free Software, scalable, redundant, self-healing, and self-managing private cloud solution designed with administrator simplicity in mind. It is built from the ground-up to be redundant at the host layer, allowing the cluster to gracefully handle the loss of nodes or their components, both due to hardware failure or due to maintenance. It is able to scale from a minimum of 3 nodes up to 12 or more nodes, while retaining performance and flexibility, allowing the administrator to build a small cluster today and grow it as needed.

The major goal of PVC is to be administrator friendly, providing the power of Enterprise-grade private clouds like OpenStack, Nutanix, and VMWare to homelabbers, SMBs, and small ISPs, without the cost or complexity. It believes in picking the best tool for a job and abstracting it behind the cluster as a whole, freeing the administrator from the boring and time-consuming task of selecting the best component, and letting them get on with the things that really matter. Administration can be done from a simple CLI or via a RESTful API capable of building full-featured web frontends or additional applications, taking a self-documenting approach to keep the administrator learning curvet as low as possible. Setup is easy and straightforward with an ISO-based node installer and Ansible role framework designed to get a cluster up and running as quickly as possible. Build your cloud in an hour, grow it as you need, and never worry about it: just add physical servers.

Getting Started

To get started with PVC, please see the About page for general information about the project, and the Getting Started page for details on configuring your cluster.

Changelog

v0.9.20

  • [Daemons] Implemented a Zookeeper schema handler and version 0 schema
  • [Daemons] Completes major refactoring of codebase to make use of the schema handler
  • [Daemons] Adds support for dynamic chema changges and "hot reloading" of pvcnoded processes
  • [Daemons] Adds a functional testing script for verifying operation against a test cluster
  • [Daemons, CLI] Fixes several minor bugs found by the above script
  • [Daemons, CLI] Add support for Debian 11 "Bullseye"

v0.9.19

  • [CLI] Corrects some flawed conditionals
  • [API] Disables SQLAlchemy modification tracking functionality (not used by us)
  • [Daemons] Implements new zkhandler module for improved reliability and reusability
  • [Daemons] Refactors some code to use new zkhandler module
  • [API, CLI] Adds support for "none" migration selector (uses cluster default instead)
  • [Daemons] Moves some configuration keys to new /config tree
  • [Node Daemon] Increases initial lock timeout for VM migrations to avoid out-of-sync potential
  • [Provisioner] Support storing and using textual cluster network labels ("upstream", "storage", "cluster") in templates
  • [API] Avoid duplicating existing node states

v0.9.18

  • Adds VM rename functionality to API and CLI client

v0.9.17

  • [CLI] Fixes bugs in log follow output

v0.9.16

  • Improves some CLI help messages
  • Skips empty local cluster in CLI
  • Adjusts how confirmations happen during VM modify restarts
  • Fixes bug around corrupted VM log files
  • Fixes bug around subprocess pipe exceptions

v0.9.15

  • [CLI] Adds additional verification (--yes) to several VM management commands
  • [CLI] Adds a method to override --yes/confirmation requirements via envvar (PVC_UNSAFE)
  • [CLI] Adds description fields to PVC clusters in CLI

v0.9.14

  • Fixes bugs around cloned volume provisioning
  • Fixes some minor visual bugs
  • Minor license update (from GPL3+ to GPL3)
  • Adds qemu-guest-agent support to provisioner-created VMs by default

v0.9.13

  • Adds nicer startup messages for daemons
  • Adds additional API field for stored_bytes to pool stats
  • Fixes sorting issues with snapshot lists
  • Fixes missing increment/decrement of snapshot_count on volumes
  • Fixes bad calls in pool element API endpoints
  • Fixes inconsistent bytes_tohuman behaviour in daemons
  • Adds validation and maximum volume size on creation (must be smaller than the pool free space)

v0.9.12

  • Fixes a bug in the pvcnoded service unit file causing a Zookeeper startup race condition

v0.9.11

  • Documentation updates
  • Adds VNC information to VM info
  • Goes back to external Ceph commands for disk usage

v0.9.10

  • Moves OSD stats uploading to primary, eliminating reporting failures while hosts are down
  • Documentation updates
  • Significantly improves RBD locking behaviour in several situations, eliminating cold-cluster start issues and failed VM boot-ups after crashes
  • Fixes some timeout delays with fencing
  • Fixes bug in validating YAML provisioner userdata

v0.9.9

  • Adds documentation updates
  • Removes single-element list stripping and fixes surrounding bugs
  • Adds additional fields to some API endpoints for ease of parsing by clients
  • Fixes bugs with network configuration

v0.9.8

  • Adds support for cluster backup/restore
  • Moves location of init command in CLI to make room for the above
  • Cleans up some invalid help messages from the API

v0.9.7

  • Fixes bug with provisioner system template modifications

v0.9.6

  • Fixes bug with migrations

v0.9.5

  • Fixes bug with line count in log follow
  • Fixes bug with disk stat output being None
  • Adds short pretty health output
  • Documentation updates

v0.9.4

  • Fixes major bug in OVA parser

v0.9.3

  • Fixes bugs with image & OVA upload parsing

v0.9.2

  • Major linting of the codebase with flake8; adds linting tools
  • Implements CLI-based modification of VM vCPUs, memory, networks, and disks without directly editing XML
  • Fixes bug where pvc vm log -f would show all 1000 lines before starting
  • Fixes bug in default provisioner libvirt schema (drive -> driver typo)

v0.9.1

  • Added per-VM migration method feature
  • Fixed bug with provisioner system template listing

v0.9.0

Numerous small improvements and bugfixes. This release is suitable for general use and is pre-release-quality software.

This release introduces an updated version scheme; all future stable releases until 1.0.0 is ready will be made under this 0.9.z naming. This does not represent semantic versioning and all changes (feature, improvement, or bugfix) will be considered for inclusion in this release train.

v0.8

Numerous improvements and bugfixes. This release is suitable for general use and is pre-release-quality software.

v0.7

Numerous improvements and bugfixes, revamped documentation. This release is suitable for general use and is beta-quality software.

v0.6

Numerous improvements and bugfixes, full implementation of the provisioner, full implementation of the API CLI client (versus direct CLI client). This release is suitable for general use and is beta-quality software.

v0.5

First public release; fully implements the VM, network, and storage managers, the HTTP API, and the pvc-ansible framework for deploying and bootstrapping a cluster. This release is suitable for general use, though it is still alpha-quality software and should be expected to change significantly until 1.0 is released.

v0.4

Full implementation of virtual management and virtual networking functionality. Partial implementation of storage functionality.

v0.3

Basic implementation of virtual management functionality.