clustvirt/view/static/home.gohtml

167 lines
8.6 KiB
Plaintext
Raw Normal View History

{{ define "content" }}
<div class="m-2 px-4 pt-2 flex-col shadow-md
rounded-2xl border-8 border-double divide-solid divide-y-2
bg-dracula-900 text-dracula-100 shadow-dracula-900
divide-dracula-800 border-dracula-800">
<h3 class="text-xl font-semibold">What is this?</h3>
<p>Clustvirt (work in progress name) aims to be the agnostic
cluster controller for libvirtd. The server component is
used to display both the WebUI and run the REST API used to
control one to many libvirtd hosts to manage virual machines,
LXC containers (through libvirtd), gather information about
each host, and monitor each host.</p>
</div>
<div class="m-2 px-4 pt-2 flex-col shadow-md
rounded-2xl border-8 border-double divide-solid divide-y-2
bg-blade-900 text-blade-100 shadow-blade-900
divide-blade-800 border-blade-800">
<h3 class="text-xl font-semibold">Project Goals</h4>
<ul class="leading-relaxed list-image-accepted list-inside">
<li class="accepted">Open source, currently on the MIT license</li>
<li class="notimpl">Base OS Agnostic. If it can run libvirtd, this should be
able to control it on some level</li>
<li class="notimpl">Control the Virtual Machine life cycle
on one or more libvirtd hosts</li>
<li class="notimpl">Add clusting capabilities to libvirtd host,
including;</li>
<li class="notimpl">Migration of VMs</li>
<li class="notimpl">Syncronizing secrets</li>
<li class="notimpl">Syncronizing VLANs, bridges, host only
networking</li>
<li class="notimpl">Sharing HA storage availability</li>
<li class="notimpl">Locking shared resources like disks</li>
<li class="notimpl">Starting VMs marked for HA on another host
when one goes down</li>
<li class="notimpl">Manage a library of Cloud-init resources
and templates to build new VMs quickly</li>
<li class="notimpl">Local Storage management, including local
directory, lvm, zfs (if installed)</li>
<li class="notimpl">Advanced Storage management, such as Ceph,
glusterfs, drbd, iscsi, nfs</li>
<li class="notimpl">Storage syncronization of local disks
between hosts (zfs snapshots, lvm snapshots, rsync)</li>
<li class="notimpl">Backup scheduling, creation, restoration</li>
</ul>
</div>
<div class="m-2 px-4 pt-2 flex-col shadow-md
rounded-2xl border-8 border-double divide-solid divide-y-2
bg-cullen-900 text-cullen-100 shadow-cullen-900
divide-cullen-800 border-cullen-800">
<h3 class="text-xl font-semibold">Stretch Goals</h3>
<ul class="leading-relaxed list-image-possible list-inside">
<li>Install the OS which libvirtd is running on</li>
<li>Install/provision libvirtd on a host that does not have
it installed</li>
<li>Tools to move from one vendor to clustvirt/libvirtd</li>
<li>VM templates for common aspects of VM creation and management,
like appliances</li>
<li>External tool access that can be used to manage things that
are not managed here (cephadm dashboard, for instance)</li>
</ul>
</div>
<div class="m-2 px-4 pt-2 flex-col shadow-md
rounded-2xl border-8 border-double divide-solid divide-y-2
bg-morbius-900 text-morbius-100 shadow-morbius-900
divide-morbius-800 border-morbius-800">
<h3 class="text-xl font-semibold">Reddit Requested Features</h3>
<ul class="list-image-possible list-inside leading-relaxed">
<li>Search/Filter on hosts/vms - @Lopsided_Speaker_553</li>
<li>Balance on resource usage per host/Automattically migrate to
least used host - @Lopsided_Speaker_553</li>
<li>Support inter-vm only commmunication (VxLAN style)
- @Lopsided_Speaker_553</li>
<li>Deploy VMs using only API - @Lopsided_Speaker_553</li>
<li>Well documented, first class API - @kasperlitheater</li>
<li>Bootstrap service to configure a new server - @phatpappa_</li>
<li>For the love of kitten, don't use XML as configuration files
- @pascalbrax</li>
<li>Expose the Cluster Manager functionalities as API - @raven2611</li>
<li>CPU architecture awareness for migrations - @raven2611</li>
<li>Inter VM Communications via VXLAN/EVPN - @raven2611</li>
</ul>
</div>
<div class="m-2 px-4 pt-2 flex-col shadow-md
rounded-2xl border-8 border-double divide-solid divide-y-2
bg-marcelin-900 text-marcelin-100 shadow-marcelin-900
divide-marcelin-800 border-marcelin-800">
<h3 class="text-xl font-semibold">Never Going to Happen</h3>
<ul class="list-image-never list-inside leading-relaxed">
<li>Kubernetes</li>
<li>Application container management (docker, podman, etc)</li>
<li>Become an OS</li>
<li>Have a paywall</li>
<li>Vendor lock-in</li>
<li>Become a commercial entity (even indirectly)</li>
<li>Anything that does not have an Open Source standard behind it</li>
<li>Directly control a guest Operating System</li>
</ul>
</div>
<div class="m-2 px-4 pt-2 flex-col shadow-md
rounded-2xl border-8 border-double divide-solid divide-y-2
bg-dracula-900 text-dracula-100 shadow-dracula-900
divide-dracula-800 border-dracula-800">
<h3 class="text-xl font-semibold">Why?</h3>
<ul class="list-image-informational list-inside leading-relaxed">
<li>Broadcom buying VMWare, and VMWare losing a free teir for
homelabbers pissed me off</li>
<li>Vendor lock-in pisses me off</li>
<li>Even good open source Hyperconverged systems (Proxmox, as
an example) exhibit a form of vendor lock-in</li>
<li>Libvirt is terrific, has the functionality for everything
those other providers do, but there really is not a
great option for those dipping their toes into Open Source</li>
<li>Its fun to build things that solve a need</li>
<li>I really want to do it</li>
</ul>
</div>
<div class="m-2 px-4 pt-2 flex-col shadow-md
rounded-2xl border-8 border-double
bg-voncount-900 text-voncount-100 shadow-voncount-900
divide-voncount-800 border-voncount-800">
<h3 class="text-xl font-semibold border-b-2 border-voncount-800">Other notes</h3>
<p>I recently created a <a href="http://redd.it/1bct15z"
class="after:content-link after:w-3 after:h-3 after:inline-block
after:invert text-base text-morbius-100">post</a>
on reddit announcing that I was building this, and while the majority
of responses were supportive, even offering features that may enhance
what I originally set out to do, many responded with
"Why do we need another one??"</p>
<p>Besides the list above about why this exists, I wanted to clarify
a few things those individuals did not seeem to get: This is not
a rebuild of Proxmox, Cloudstack, VMWare, Harvester or any of
the other "Hyper-converged/Single-solution/turnkey/Operating System"
offerings out there. This will not take over your base operating system
on your machine, just act as a cluster manager and interface to access
the existing libvirtd instances on those machines, nor will it prescribe
a set of requirements that make it hard to move your own infrastructure
around.</p>
<p>At the heart of this project is that I hate the enshitifiation of
Open Source that has been going on, where its just another way to make
money and control the eco system. RedHat tried to do it by locking
down their source code, Proxmox does it by making sure anything you
do on Proxmox is tied to Proxmox (no offense to Proxmox), and even
Hashicorp, who I loved so dearly, changed from a pure Open Source
licensing model to one that protects the business over the community.</p>
<p>I will not let that happen here.</p>
<p>This project will seek to use the Unix philosophy, of building off
of existing standards, combining tools, and having one tool do one
job well. This does not mean there will be one application for each
aspect of the job, but that this application stack will manage Libvirtd
well, and have individual and configurable paths to manage each sub-aspect
of the libvirt stack. This stack will not create a Ceph cluster for you,
it leaves you to do that. It will not even talk to a ceph cluster.
It will, however, let you add that cluster via configuration options to
define it as a storage pool that libvirt can use.</p>
<p>If you want something that will allow you to use a single interface
to create all sub aspects that can be used by libvirt
(managing all firewall rules, creating a ceph cluster, etc.),
use something like Proxmox which includes that builtin
functionality. This isn't the stack for you.<p>
</div>
{{ end }}