// This is a guest post by Jeremy (@nakedhitman)
If you are a VMware user that has discovered the joys and simplicity of Virtual Appliances, you have probably run in to applications built on top of VMware Studio’s VAMI utilities. VAMI is the background service that provides the administration page for configuring and updating VMware Studio-based appliances.
VAMI is super cool, and supports multiple upgrade methods. In addition to downloading straight from the web, there are options for secure environments to use local repositories and ISO images as your update source. As nice as this is however, there is almost no documentation for making these offline update repositories, and not every product provides an ISO image for offline use. There are a few blog posts out there that provide workarounds, but they are often more effort than they are worth if you have a lot of updates to do. Is there an easier way?
Thanks to the work of William Lam, the necessary steps to make an offline repository were at least well documented. So I set out on a mission to make this process easier, and created the VAMI Update Repository Appliance (or VURA for short). VURA is fairly straightforward. Once deployed, it will display the address of its web interface on the console and from there you can start adding repositories to it.
For every public web repository URL you give it, it will download the repository locally and serve up a mirror for it. It also will optionally create an ISO image that you can attach to your appliances and use as the update source. Once it is loaded up with repositories, you can move the VM to your internal network and use it to serve up updates to your appliances.
Since it is quite likely that multiple repositories will fill up its tiny disk, I wanted to make it easy to expand it as needed. At boot time, it will scan for new disks and automatically partition them for use as storage for the local repositories. If you plan to use this to host many repositories, all you have to do is slap a new disk on it and reboot.
If you find this project useful, please be sure to comment and share!