Go to file
Joshua Boniface c2dfb2d30e Update README note for latest versions 2024-09-05 04:10:23 -04:00
files/default Add files dir in repo 2023-09-01 15:42:20 -04:00
group_vars/default Warn about requiring jmespath on controller 2024-06-29 00:46:11 -04:00
oneshot Fix typo in script 2024-08-30 11:07:49 -04:00
roles Fix issue with newhost inverse definition 2024-09-05 01:27:31 -04:00
.gitignore Ignore a virtualenv if used 2023-09-01 15:42:25 -04:00
LICENSE Add license file 2023-09-01 15:42:19 -04:00
README.md Update README note for latest versions 2024-09-05 04:10:23 -04:00
clusters.yml Add clusters.yml to setup 2023-09-01 15:42:28 -04:00
create-local-repo.sh Add master checkout during update-remote 2023-09-05 13:22:01 -04:00
hosts.default Add interpreter var to sites group 2023-09-01 15:42:27 -04:00
purge.sh Don't reboot if purge fails 2023-09-01 15:42:28 -04:00
pvc.yml Ensure any errors are fatal during deploy 2023-09-21 15:18:34 -04:00

README.md

PVC Ansible

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.

A set of Ansible roles to set up PVC nodes. Part of the Parallel Virtual Cluster system.

Tested on Ansible 2.2 through 2.10; it is not guaranteed to work properly on older or newer versions.

Roles

This repository contains two roles:

base

This role provides a standardized and configured base system for PVC. This role expects that the system was installed via the PVC installer ISO, which results in a Debian Buster system.

This role is optional; the administrator may configure the base system however they please so long as the pvc role can be installed thereafter.

pvc

This role configures the various subsystems required by PVC, including Ceph, Libvirt, Zookeeper, FRR, and Patroni, as well as the main PVC components themselves.

Variables

A default example set of configuration variables can be found in group_vars/default/.

A full explanation of all variables can be found in the manual.

Using

NOTE: These roles expect a Debian 12.X (Bookworm) system specifically (as of PVC 0.9.100). This is currently the only operating environment supported for PVC. This role MAY work on Debian derivatives but this is not guaranteed!

NOTE: All non-default directories under group_vars/ and files/, and the hosts file, are ignored by this Git repository. It is advisable to manage these files securely in a separate repository and use symlinks to place them in the expected locations in this repository. Note that the files/ data is created during cluster bootstrap. You can leverage the create-local-repo.sh script to do so automatically.

For full details, please see the general PVC install documentation.

  1. Deploy a set of 3 or 5 initial PVC nodes using the PVC install ISO.
  2. Create a new cluster group in the hosts file, using hosts.default as an example. For the initial bootstrap run, it is recommended to only include the initial coordinators to ensure a smooth bootstrapping.
  3. Create a set of vars in group_vars, using group_vars/default as an example. Ensure that all desired coordinators are configured with the is_coordinator: yes flag.
  4. Run the pvc.yml playbook against the servers. If this is the very first run for a given cluster, use the -e do_bootstrap=yes variable to ensure the Ceph, Patroni, and PVC clusters are initialized.

License

Copyright (C) 2018-2021 Joshua M. Boniface joshua@boniface.me

This repository, and all contained files, is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.