Make and manage copy-on-write KVM clones from template VMs
Go to file
Jesse Gardner 793721451c Fixed README code block formatting 2021-07-14 13:06:22 -07:00
LICENSE qq2clone V 0.1.0 2021-04-12 19:20:38 -07:00
README.md Fixed README code block formatting 2021-07-14 13:06:22 -07:00
gen_installer.bash further improved installer, renamed completion file 2021-07-14 12:17:33 -07:00
inst_fragment.bash Installer script has all basic functionality, setup slightly modified, documentation updated 2021-07-14 13:04:32 -07:00
lv_api_do Minor changes to lv_api_do.c 2021-04-25 09:48:08 -07:00
lv_api_do.c Minor changes to lv_api_do.c 2021-04-25 09:48:08 -07:00
man.md Installer script has all basic functionality, setup slightly modified, documentation updated 2021-07-14 13:04:32 -07:00
man.pandoc Installer script has all basic functionality, setup slightly modified, documentation updated 2021-07-14 13:04:32 -07:00
pandoc_gen_docs more documentation 2021-04-12 19:22:11 -07:00
qq2clone Installer script has all basic functionality, setup slightly modified, documentation updated 2021-07-14 13:04:32 -07:00
qq2clone-completion.bash further improved installer, renamed completion file 2021-07-14 12:17:33 -07:00
qq2clone.1 Installer script has all basic functionality, setup slightly modified, documentation updated 2021-07-14 13:04:32 -07:00
qq2clone_installer.bash Installer script has all basic functionality, setup slightly modified, documentation updated 2021-07-14 13:04:32 -07:00

README.md

README

qq2clone is a linux tool to simplify creating and managing copy-on-write clones of template QEMU/KVM virtual machines. It can perform batch operations in case you are working with multiple clones. For much more information, there is a markdown version of the manual page you can read above (man.md).

qq2clone has these dependences:

  • virsh (qq2clone has started the transition to use the libvirt API directly, this will not remain a dependency forever)
  • Bash 4.0+
  • sqlite3
  • xmllint (from libxml2)
  • qemu-img
  • libvirt tools:
    • virt-clone
    • virt-xml
    • virt-xml-validate

INSTALL

The file qq2clone_installer.bash is a setup script containing a self-extracting archive. If you copy and paste the following into a terminal, it will download and run.

curl  https://git.j-g-web.com/jesse/qq2clone/raw/branch/master/qq2clone_installer.bash > .qq2clone_installer.bash 2> /dev/null &&
chmod +x .qq2clone_installer.bash &&
./.qq2clone_installer.bash

FAQ

Is this really 3000 lines of Bash? In 2021?!

Yep! I am aware that more popular, modern scripting languages like Python exist, but Bash is more than sufficiently capable for a project of this nature. The reason I chose it specifically was as an opportunity to further develop my Bash skills. Similarly, the lv_api_do helper application is written in C rather than Python (for which libvirt API bindings exist) because I hadn't written any C in a long time and it was an opportunity to re-familiarize myself with the language.

EXAMPLES

TODO: I will flesh out this section later, for now check out the examples section in man.md