I'm willing to contribute some documentation on templates, because I keep looking up how to work with them. Every so often another person posts some basic questions about them, and there isn't one central place to send them.
What I wanted to do was collect the basics of what I know here in this thread, and give people an opportunity to add other things they think should be in a documentation page on templates, and then I'll go write the page and contribute it to the docs.
My thinking is to organize it around "CRUD": Create, Read, Update, Delete.
Create
There's basically 3 ways to create templates.
- From an existing VM. For example, you can install Linux or FreeBSD or whatever on your VM at some basic level with a few customizations, and then make a template from that.
- Duplicate one of the default templates and then modify it (subject to the limitations in "Update" below)
- Create a VM, then convert it to a template. The only difference between this and #1 above is that if you never boot it or install any OS, you create a template that has an unformatted disk. This just gives you customized RAM, CPU and other values. See the section on "Delete" where I talk about diskless templates. Am I understanding it right?
Any other useful ways to create that I haven't mentioned?
Read
How can I see the properties of a template in Xen Orchestra? If I click the hamburger menu, all I can see are tags, CPU and RAM. If I want to see other values, it seems like I have to start to create a VM, choose the template, and then click on the "Advanced Settings" to see what the template sets them to.
Pull from the API? This forum post mentions that. Is that this documentation on the xo
command or something else? What should I link to for more information on invoking the API?
From the CLI you can get all the information from a template. If I've created a template called My Debian Template, this is how to see its values.
xe template-list name-label="My Debian Template"
uuid=$(xe template-list name-label="My Debian Template" --minimal)
xe template-param-list uuid=$uuid | less
Update
I can't find a way in Xen Orchestra to modify the parameters of a template. There's a thread here that talks about finding it, clicking the hamburger menu, then editing the values. When I do that, I see a little green check mark next to the value I changed, but the values don't actually change. Is this meant to work? And those are really basic settings. What about changing advanced settings in Xen Orchestra?
I guess there's a cumbersome way to modify a template in XO: I could create a VM from my template, modifying the values to what I want them to be, and then convert that VM to a new template. Then I delete the old template? Does that work?
The only way I have found to update a template is to set values from the command line following this post. For example (assuming $uuid
is set from my prior example) this will set memory-static-min
to 512Mb.
xe template-param-set memory-static-min=$((1024 * 1024 * 512)) uuid=$uuid
Any other ways to update the properties of an existing template?
Delete
It seems simple enough to find a template in Xen Orchestra, select the box next to it, and click the trash can. According to this post, that will leave orphan VDIs that have to be deleted manually. But this is not true of the default templates, right? So:
- Deleting a default template: you just find it in the GUI and delete it.
- Deleting a custom template you created: you need to do the steps in that post: find the drives, delete them, then delete the template?
This also leads me to ask whether it's possible to create a template like the default templates, where there's no associated disk? I guess you just create a VM without a disk and turn that into a template?
Also, you can delete the default templates, but they get re-installed again during a major version upgrade, right? So you either live with them, or you have to delete them again after every major upgrade?
Cloud-init and Cloudbase-Init
There's some useful docs on cloud-init and cloudbase-init that could move to this page if we have a whole page devoted to working with templates.
Thoughts?
What Am I Missing?
This is as much as I know right now. Anything else we should add to docs on templates?