AMP 2.4 ‘Halimede’ is a major update, with several new features and changes. The changes are so numerous that we’ve not listed some of the minor changes, and just focused on the main issues.
This release has been in the works for a long time, and we’ve spent a lot of time and effort making sure that it’s one of the biggest and best AMP releases ever.
There are significant API changes, so if you’re updating AMP then you’ll need to apply those updates across the board. As always we recommend users take backups before making major changes to their systems.
Check out the release video if you haven’t already that covers the major changes:
New Feature: Datastores
This allows AMP to store instances in multiple locations, such as multiple drives in the same system or on high-speed network shares.
For Network and Enterprise deployments, the use of tags on datastores also allows you to implement automated storage tiering, dictating that certain types of deployed instances need to be installed onto, say, a regular hard disk, a SATA SSD, or a fast NVMe drive. This is achieved by tagging the datastore with what type of storage it’s backed by, and then adding the same tag to a deployment template.
This also – for the first time – allows you to see what your storage usage is from within AMP. While nominally a simple feature, it’s not as straight forward as it seems. The logic that calculates datastore usage also calculates the storage usage of individual instances, so we expect to expose that information to the interface soon.
New Feature: Target tagging
Similar to the datastore tagging, this feature allows you to add tags to individual remote targets. This is similarly very useful for template deployments as it allows you to automatically have certain types of instances deployed to certain types of hardware - for example, premium tier hardware vs. budget friendly hardware for different deployment scenarios.
New Feature: Docker support on Windows
Previously, the use of containers in AMP was limited purely to Linux systems. This made AMP on Windows unsuitable for Enterprise deployments, for example, as there was no way to isolate the individual instances.
Starting with AMP 2.4, it’s now possible to deploy instances into Docker containers on Windows hosts. This uses the exact same Debian-based containers that AMP uses on Linux systems, so you get consistent behaviour and compatibility when using Docker instances across Windows and Linux targets. It also means that this will provide a path to more easily migrate instances between Windows and Linux once we implement the ability to relocate an instance to a new target. All Linux instances can be moved to Windows targets (by way of converting them to container instances) and Windows instances that are in containers can be moved to Linux targets. This will provide unprecedented cross-compatibility between systems not seen in any other panel.
This does, however, mean that instances that cannot run in Linux at all – such as Space Engineers – cannot be used with Docker on Windows at this time, and these instances must run outside of containers. The upshot is that some Linux-only applications such as Kaboom! and Pavlov VR can now be run from Windows targets.
Like on Linux systems, we’re using transient containers and transparent storage via mount binds and automatic port handling, which provides you with easy access to instance data without having to worry about networking.
Generic module Improvements
We’ve made a number of enhancements to the Generic module to give configuration builders more flexibility and control. Some of these improvements include:
- Support for 7zip archives. Assumes that either 7zip is installed normally on Windows or that
7z(.exe)
is available in PATH. - Support for unpacking gzip/tar/tgz/similar on Windows if
tar.exe
is available in PATH. - The ability for downloaded files to be saved with a different name than the original.
- Minimum and maximum values for numeric settings.
- Better handling of child-processes (AMP now processes the entire parent/child process tree rather than just one level deep).
- Use of $PATH/ to run binaries that are located in an unknown location on the system but are normally accessible via PATH.
- Ability to generate random values by default for new instances. Great for things like seeds for games that use procedural generation.
Docker container enhancements
As part of supporting Docker on Windows, we’ve made the containers less reliant on the host system. This means that the containers will work consistently in more environments and avoid some of the pitfalls associated with the previous mechanisms used to make libraries and configuration files from the host available to the containers. The container base images are slightly larger as a result, but more de-coupled from the host.
AMP is also better at updating the status of Docker instances promptly, so there’s fewer delays and holdups waiting for AMP to report that instances have started after deploying them or restarting them.
Time-zone and scheduling
Some common complaints and issues with AMP’s scheduler stemmed from a mixture of different types of time-handling within AMP, which could cause things to get out-of-sync if the server’s time zone wasn’t UTC. AMP now uses UTC globally internally to fix these inconsistencies.
Other widespread improvements
- Package and library updates across the board, including the latest version of our Licencing system.
- Improvements to AMP’s use of async across the board for long-running tasks. The webserver stack was rewritten in places to be fully asynchronous. This fixes a lot of issues that could cause timeouts where AMP transitioned between synchronous and asynchronous code by removing these boundaries entirely; especially when AMP is communicating with instances on remote targets.
- Removed a load of unused cruft/partially implemented features that were ultimately superseded just to tidy things up. The old templates system was originally built around the notion of building template instances, but we went down a different route for this feature so all of the metadata that was previously associated with this has been removed.
- A general UI pass to improve layout/feel in various locations throughout AMP.