We are implementing our own software continuous integration build farm and there are some basic questions that we have in regards to setting up and running the cluster. For hardware we went modest and have a few "NUC" style computers (12th gen Intel i7 with 8 E Core + 6 P Cores, 32 GB RAM and a 1TB NVME drive in each node. There are 6 nodes total. We have a 7th node that is an old Xeon Dell box that could be used for extra shared storage. Each NUC has 2.5 Gb networking attached to an unmanaged 2.5 Gb switch.
I have ProxMox installed on all the nodes. I have created a cluster through the Web UI so that I can see all nodes in the "DataCenter" category on the left in the Web GUI frontend. I have even created a virtual machine for Windows 10 and one for Ubuntu 22.04. There are some requirements that we are trying to figure out how to implment efficiently.
After each build, the machine should automatically shutdown, delete any changes that were made and restart itself. I have the "shutdown" part figured out as each node is running an Azure Dev Agent using the "--once" then followed by "shutdown -r now" in that script (the equivalent for the Windows batch file).
It is the "Delete everything that changed" part that I am struggling to figure out. I investigated using a hook script looking for the "STOP" condition and using the `qm` command to roll back the changes. That didn't work due to the VM disk still being in use. I'm not sure the VM is completely in a stopped state when that hook got fired.
As for the setup of the VM themselves, I have the initial VM setup to the point where I would have to "Clone" it, set the machine name, register it with our Azure Agent Pool so that it is ready to go.
I think the flow of events are the following:
Do a Light Weight clone of the initial VM. Update this clone with the necessary machine specific information. Then do _another_ light weight_ clone so that I can roll back these changes on shutdown of the VM? It also seems that I need to turn each of those intermediate clones into a "Template"? That would seem to work but what is the procedure to now update the clone with newer OS updates, compiler updates and things like that? Do I now need to go back through all the VMs and reclone, update, and clone again?
If anyone has some pointers, tips, or other help that would be really great.
Thank You.
I have ProxMox installed on all the nodes. I have created a cluster through the Web UI so that I can see all nodes in the "DataCenter" category on the left in the Web GUI frontend. I have even created a virtual machine for Windows 10 and one for Ubuntu 22.04. There are some requirements that we are trying to figure out how to implment efficiently.
After each build, the machine should automatically shutdown, delete any changes that were made and restart itself. I have the "shutdown" part figured out as each node is running an Azure Dev Agent using the "--once" then followed by "shutdown -r now" in that script (the equivalent for the Windows batch file).
It is the "Delete everything that changed" part that I am struggling to figure out. I investigated using a hook script looking for the "STOP" condition and using the `qm` command to roll back the changes. That didn't work due to the VM disk still being in use. I'm not sure the VM is completely in a stopped state when that hook got fired.
As for the setup of the VM themselves, I have the initial VM setup to the point where I would have to "Clone" it, set the machine name, register it with our Azure Agent Pool so that it is ready to go.
I think the flow of events are the following:
Do a Light Weight clone of the initial VM. Update this clone with the necessary machine specific information. Then do _another_ light weight_ clone so that I can roll back these changes on shutdown of the VM? It also seems that I need to turn each of those intermediate clones into a "Template"? That would seem to work but what is the procedure to now update the clone with newer OS updates, compiler updates and things like that? Do I now need to go back through all the VMs and reclone, update, and clone again?
If anyone has some pointers, tips, or other help that would be really great.
Thank You.