AMP 'Halimede' 2.4 Release Notes

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.
3 Likes

2.4.0.2 has been released as a point release. It fixes a regression that prevented logging into the SFTP server of individual instances (The library doesn’t tolerate async event handlers well), fixes the StartApplication update stage, and fixes a crash in ADS when it can’t query a remote target that was previously available.

1 Like

2.4.0.4 has been released as a point release. It fixes a regression preventing the registration of new targets (They actually got registered, but the target didn’t get reconfigured), a regression of SFTP session handling that prevented any file operations, and controllers showing an infinite ‘loading’ animation when there are no targets present.

2 Likes

AMP 2.4.0.6, while nominally a point release because it has no breaking API changes, has some fairly major new functionality and cool new features that enhance AMPs security and general usability.

Notable are the inclusion of Webauthn support which allows you to login with fingerprints, hardware security devices, your mobile device, and many other mechanisms rather than just your password.

We’ve also made some changes to the activation system to reduce the chance that mere network configuration changes will cause deactivations. This as it happens may cause a one-time deactivation for some users as part of this update, but after you reactivate again it’ll all be good.

Core

  • When an instance is in a docker container, it’ll show the docker container memory limit (as set) as the total rather than the system total.
  • Licencing system change - machine hash generation is more stable and less likely to be affected by network changes.
  • Some images have been swapped from PNG to WebP to reduce total load size.
  • Webauthn support!
  • Added new ‘Aura’ theme.
  • Refreshed logos/icons in a few places to be in line with the current design language.

Generic Module

  • RCONHeartbeatMinutes now supports fractional minutes (e.g. 0.5 for every 30 seconds) to allow for titles that require keep alives faster than every minute to remain working.
  • Implemented FlagValue to dynamic setting specs to allow for a flag value that is off by default.

SteamCMD plugin

  • Now uses a one-time script to give it instructions, excluding the users password which is now fed via STDIN rather than a command line flag. Also fixes issues with special characters in passwords.

ADS/AIM

  • If AMP becomes deactivated, the user is warned in a sane way and directed to re-enter their key and reactivate instances rather than things just failing.
  • Changed sync logic between controllers and targets. Much faster, much more reliable. You get prompt UI updates when creating/starting/stopping/removing instances now.
  • Fixed a regression where new instances wouldn’t start automatically if they were created in Docker containers.
  • Docker invocations now strip ANSI control codes to make the console behave better.
  • First-time setup has new stages to prompt for Webauthn/2FA setup.

Factorio Module

  • Added an option to load the most recent save by default.
  • Implemented a “Scan for new saves” button.