Go to file
Joshua Boniface 7c7ca4a229 Allow inter-cluster orphan NTP sync
Due to the requirement of Ceph to have all peer nodes tightly
synchronized with each other to come online, PVC nodes need a way to
synchronize to each other even in the absence of an external time
reference. This is especially prevalent if a set of nodes are left
offline for an extended period (>1-2 weeks), since their hardware clocks
will drift. If the resulting Internet connectivity is then dependent on
a VM, this will cause a catch-22 and the cluster will not properly
start.

This configuration will accomplish that - if no suitable >6 stratum
peers are found, the hosts will enter orphan mode. Since they are now
all configured as "peers" with each other, they will collectively decide
on one of them to become the source and sync to it. A local stratum 10
fudge is added so that at least one of the nodes can become this source.

While this is not an ideal use of NTP, it is by far the cleanest
solution to this problem, and does not impact normal functionality when
the two configured stratum-2 servers are reachable.
2023-09-01 15:42:25 -04:00
files/default Add files dir in repo 2023-09-01 15:42:20 -04:00
group_vars/default Fix group_vars to match new setup 2023-09-01 15:42:25 -04:00
oneshot Add cleanup to update oneshot playbook 2023-09-01 15:42:25 -04:00
roles Allow inter-cluster orphan NTP sync 2023-09-01 15:42:25 -04:00
.gitignore Update gitignore 2023-09-01 15:42:20 -04:00
LICENSE Add license file 2023-09-01 15:42:19 -04:00
README.md Update file copyright header 2023-09-01 15:42:25 -04:00
hosts.default Move hosts to hosts.default 2023-09-01 15:42:20 -04:00
purge.sh Add reboot to purge 2023-09-01 15:42:25 -04:00
pvc.yml Initial commit of PVC Ansible role 2023-09-01 15:42:19 -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.8; 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 10.X (Buster) system specifically. This is currently the only operating environment supported for PVC.

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.

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 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/.