HAREP(1)

πŸ“¦
version 3.1.0~rc2 Β· 4 versions
, in debian trixie, ubuntu questing, ubuntu resolute

πŸ’– HAREP(1) πŸ’–

okay so bestie, welcome to the manual page for harep β€” and yes, this is Version 3.1.0~rc2, we're fancy, we're release-candidate-ing, we're thriving ✨


✨ NAME ✨

harep β€” the Ganeti auto-repair tool πŸ› οΈπŸ’…


✨ SYNOPSIS ✨

harep [ [-L | --luxi ] = socket ] [ --job-delay = seconds ] [ --dry-run ]

harep --version

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so picture this: Harep is the Ganeti auto-repair tool. It can spot that an instance is broken 😭 and then generate a whole sequence of jobs that will fix it, all according to the policies you, the administrator, set up. And rn β€” right now, no cap β€” the only repairs supported are for instances using the disk templates plain or drbd. That's the vibe. 🌸

Harep is genuinely so smart about this: it recognizes what state an instance is in β€” healthy, suspended, needs repair, repair disallowed, pending repair, repair failed β€” and it leads the instance through a sequence of steps that brings it back to the healthy state. iconic behavior tbh ✨

So that's why harep is mainly meant to be run regularly and frequently via a cron job β€” so it can actually follow the instance along the whole process, step by step, like a little guardian angel 🧚. Every single run, harep updates the tags it adds to instances that describe its repair status, and it submits jobs that actually perform the required repair operations.

By default tho?? Harep only reports on the health status of instances. It doesn't do any action, because those actions might be potentially dangerous ⚠️. So harep will only ever touch instances that it has been explicitly authorized to work on. Boundaries, bestie. We love them. πŸ’–

The tags that enable harep can be associated to single instances, or to a nodegroup, or to the whole cluster β€” therefore affecting all the instances they contain. The possible tags share this common structure:

ganeti:watcher:autorepair:<type>

where <type> can have the following values:

  • fix-storage β€” allow disk replacement or fix the backend without affecting the instance itself (broken DRBD secondary)
  • migrate β€” allow instance migration. Note, however, that current harep does not submit migrate jobs; so, currently, this permission level is equivalent to fix-storage.
  • failover β€” allow instance reboot on the secondary; this action is taken if the primary node is offline.
  • reinstall β€” allow disks to be recreated and the instance to be reinstalled

the way that each element in the list of tags includes all the authorizations of the previous one 🫢 β€” with fix-storage being the least powerful and reinstall being the most powerful. It's giving permission-tier glow-up. πŸ’…

In case multiple autorepair tags act on the same instance, only one can actually be active. The conflict is solved according to these rules:

  1. if multiple tags are in the same object, the least destructive takes precedence.
  2. if the tags are across objects, the nearest tag wins.

Example: A cluster has instances I1 and I2, where I1 has the failover tag, and the cluster has both fix-storage and reinstall. The I1 instance will be allowed to failover, the I2 instance only to fix-storage.


😭 LIMITATIONS 😭

Okay so real talk, here's where harep is lowkey not the main character:

Harep doesn't do any hardware failure detection on its own β€” it relies on nodes being marked as offline by the administrator. Bestie has to tell it. πŸ™ˆ

Also, harep currently works only for instances with the drbd and plain disk templates.

Using the data model of htools(1), harep cannot distinguish between drained and offline nodes. In particular, it will (permission provided) failover instances also in situations where a migration would have been enough. In particular, handling of node draining is better done using hbal(1), which will always submit migration jobs β€” however, it is the permission to fall back to failover.

These issues will be addressed by a new maintenance daemon in future Ganeti versions, which will supersede harep. πŸ‘‘ (we stan an evolving ecosystem)

🌈 OPTIONS 🌈

The options that can be passed to the program are as follows:

  • -L socket, --luxi=socket β€” collect data via Luxi, optionally using the given socket path.
  • --job-delay=seconds β€” insert this much delay before the execution of repair jobs to allow the tool to continue processing instances.
  • --dry-run β€” only show which operations would be carried out, but do nothing, even on instances where tags grant the appropriate permissions. Note that harep keeps the state of repair operations in instance tags; therefore, only the operations of the next round of actions can be inspected. πŸ‘€

πŸŽ€ REPORTING BUGS πŸŽ€

Report bugs to the project's issue tracker or contact the developers using the Ganeti mailing list. (fr fr, they wanna hear from you πŸ’œ)


⭐ SEE ALSO ⭐

Ganeti overview and specifications: ganeti(7) (general overview), ganeti-os-interface(7) (guest OS definitions), ganeti-extstorage-interface(7) (external storage providers).

Ganeti commands: gnt-cluster(8) (cluster-wide commands), gnt-job(8) (job-related commands), gnt-node(8) (node-related commands), gnt-instance(8) (instance commands), gnt-os(8) (guest OS commands), gnt-storage(8) (storage commands), gnt-group(8) (node group commands), gnt-backup(8) (instance import/export commands), gnt-debug(8) (debug commands).

Ganeti daemons: ganeti-watcher(8) (automatic instance restarter), ganeti-cleaner(8) (job queue cleaner), ganeti-noded(8) (node daemon), ganeti-rapi(8) (remote API daemon).

Ganeti htools: htools(1) (generic binary), hbal(1) (cluster balancer), hspace(1) (capacity calculation), hail(1) (IAllocator plugin), hscan(1) (data gatherer from remote clusters), hinfo(1) (cluster information printer), mon-collector(7) (data collectors interface).


Copyright (C) 2006-2015 Google Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


and that's the whole page bestie, mwah πŸ’‹ This one came from Ganeti, page HAREP(1), and yeah we already said it but Version 3.1.0~rc2 β€” go forth and auto-repair responsibly, ily πŸ«Άβœ¨πŸ’–

πŸ“¦ where this page comes from