qq2clone/README.md

34 lines
1.7 KiB
Markdown
Raw Normal View History

2021-04-14 00:27:52 +00:00
# README
2021-04-16 00:02:32 +00:00
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](https://git.j-g-web.com/jesse/qq2clone/src/branch/master/man.md)).
2021-04-14 00:27:52 +00:00
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](https://git.j-g-web.com/jesse/qq2clone/raw/branch/master/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.
2021-07-14 20:06:22 +00:00
```
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
2021-07-14 20:06:22 +00:00
```
2021-04-14 00:27:52 +00:00
# FAQ
2021-04-18 00:41:57 +00:00
## Is this really 3000 lines of Bash? In 2021?!
2021-04-14 00:27:52 +00:00
2021-04-18 00:43:11 +00:00
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.
2021-04-14 00:27:52 +00:00
# EXAMPLES
TODO: I will flesh out this section later, for now check out the examples section in man.md