An automated VM template builder for the CSC cloud
Go to file
Max Erenberg b7981e0cd0 update scripts and add README 2022-06-23 02:11:31 -04:00
pkg use lower case names for DISTROS_TO_CHECK 2022-06-23 00:17:20 -04:00
scripts update scripts and add README 2022-06-23 02:11:31 -04:00
.gitignore first commit 2022-06-21 02:36:42 -04:00
Makefile update scripts and add README 2022-06-23 02:11:31 -04:00
README.md update scripts and add README 2022-06-23 02:11:31 -04:00
go.mod first commit 2022-06-21 02:36:42 -04:00
go.sum first commit 2022-06-21 02:36:42 -04:00
main.go first commit 2022-06-21 02:36:42 -04:00

README.md

cloudbuild

cloudbuild downloads, modifies and uploads VM templates for the CSC cloud (CloudStack) using publicly available images for common Linux distros.

Installing dependencies

First run

make deps

Optional dependencies

If you are developing cloudbuild, you may wish to install guestfish, an interactive shell for guestfs.

To download the dependencies:

make guestfish-deps

To run:

make guestfish

><fs> add /path/to/your/template.img
><fs> run
><fs> inspect-os
><fs> # use the output from inspect-os to find the root partition
><fs> mount /dev/sda4 /

Creating the appliance

Next you need an appliance, which is a kernel + initrd + rootfs used by the VM created by guestfs. You have two options:

  1. Download an appliance:
    make appliance-download
    

OR

  1. Create an appliance using the host's kernel:
    make supermin-download
    make appliance
    

Building the program

make

Running the program

Make sure the following environment variables are set:

# these values must be obtained from the CloudStack web UI
export CLOUDSTACK_API_KEY=secret
export CLOUDSTACK_SECRET_KEY=secret
# set these to the distros for which cloudbuild will create templates
export DISTROS_TO_CHECK=ubuntu,fedora
# the modified templates will be temporarily moved here so that CloudStack
# can download them
export UPLOAD_DIRECTORY=/var/www/csc-cloud-images
# the modified templates (in the UPLOAD_DIRECTORY) must be downloadable
# from this base URL
export UPLOAD_BASE_URL=http://biloba.csclub.uwaterloo.ca/csc-cloud-images
# notification emails will be sent here
export EMAIL_RECIPIENT=root@csclub.uwaterloo.ca

Finally:

make run