In every SDDC workshop I tried to persuade the audience that the virtual appliances (particularly per-application instances of virtual appliances) are the way to go. I usually got the questions along the lines of “who will manage and audit all these instances?” but once someone asked “and how will we upgrade them?”
Short answer: you won’t.
The beauty of running virtual machines is that it’s easy to destroy them and create new ones, so here’s how I would upgrade my virtual appliances (anyone vaguely familiar with properly-deployed cloud-based applications will immediately recognize the pattern):
- Build a new VM template from the new software distribution (assuming the vendor doesn’t supply the appliance in a ready-to-use format);
- Start the new VM in test environment and copy the current configuration into the new virtual machine.
In the ideal world, the appliance would fetch its configuration from a central database resulting in a completely stateless setup, but we’re not there yet.
- Stress-test the new VM (you do have unit tests verifying whatever your appliance should be doing, right?)
- When you’re ready for the change, disconnect the current appliance VM from the network and connect the VM with upgraded software (and identical configuration) to the network.
- If the new software crashes (because $vendor QA) disconnect the new VM and reconnect the old one.
- Once you’ve mastered all the steps, automate the process.
Want to learn how to do the last step? Why don’t you join the Building Network Automation Solutions online course?