ams #97

Supports: bionic focal


The Anbox Management Service (AMS) is responsible to manage a set of Android containers on a cluster of machines running LXD. It provides all kinds of different features to make the management of Android applications running inside these containers as easy as possible.

Anbox Cloud - AMS

Anbox Cloud offers a software stack that runs Android applications in any cloud enabling high-performance streaming of graphics to desktop and mobile client devices.

At its heart, it uses lightweight container technology instead of full virtual machines to achieve higher density and better performance per host while ensuring security and isolation of each container. Depending on the target platform, payload, and desired application performance (e.g. frame rate), more than 100 containers can be run on a single machine.

For containerization of Android, Anbox Cloud uses the well established and secure container hypervisor LXD. LXD is secure by design, scales to a large number of containers and provides advanced resource management for hosted containers.

Also have a look at the official Anbox Cloud website for more information.

NOTE: Anbox Cloud is a paid offering. You will need a Ubuntu Advantage subscription for this charm to work. You can learn more at

WARNING: The Ubuntu Advantage for Infrastructure token every user gets for free for personal use does *NOT work and will result in a failed deployment! You need to use a valid *Ubuntu Advantage for Applications** token to be able to deploy successfully.

Anbox Management System

The Anbox Management System, or ams is the main piece of software responsible for managing containers, applications, addons, and more.

Running the AMS charm requires other charms to be deployed beforehand.

$ juju deploy cs:etcd-540
$ juju deploy cs:~containers/easyrsa-318
$ juju relate etcd easyrsa

Then deploy ams

$ juju deploy cs:~anbox-charmers/ams
$ juju config ams ua_token=<your UA token>
$ juju relate ams etcd

For more information about AMS, visit the official documentation on


(string) Configuration options for the AMS service. Multiple options are separated by a new line and the format of each option is `<name>=<value>`.
(string) Space separated list of extra deb packages to install.
(string) List of signing keys for install_sources package sources, per charmhelpers standard format (a yaml list of strings encoded as a string). The keys should be the full ASCII armoured GPG public keys. While GPG key ids are also supported and looked up on a keyserver, operators should be aware that this mechanism is insecure. null can be used if a standard package signing key is used that will already be installed on the machine, and for PPA sources where the package signing key is securely retrieved from Launchpad.
(string) List of extra apt sources, per charm-helpers standard format (a yaml list of strings encoded as a string). Each source may be either a line that can be added directly to sources.list(5), or in the form ppa:<user>/<ppa-name> for adding Personal Package Archives, or a distribution component to enable.
(string) Logging level. Allowed values are debug, info, warning, error and critical
(string) LXD project AMS should use. MUST be set before any LXD node is added to AMS. Changing it afterwards will cause undefined behavior.
(string) The endpoint where all containers will send their metrics to. It might be overriden by a REST API request to AMS when a container is launched. If no value is set, AMS will take a reasonable default. The format of the value is 'influxdb:[username:password@]<IP address or DNS name>[:<port>]'
(string) Used by the nrpe subordinate charms. A string that will be prepended to instance name to set the host name in nagios. So for instance the hostname would be something like: juju-myservice-0 If you're running multiple environments with the same services in them this allows you to differentiate between them.
(string) A comma-separated list of nagios servicegroups. If left empty, the nagios_context will be used as the servicegroup
(string) The status of service-affecting packages will be set to this value in the dpkg database. Valid values are "install" and "hold".
(int) Port where AMS binds to
(string) Port range to be assigned for container creation
(string) Password used for HTTP basic auth of the prometheus endpoint
(string) Username used for HTTP basic auth of the prometheus endpoint
(string) Comma separated list of extra labels (key=value) to add to every reported metric
(string) The path where AMS exposes the metrics for Prometheus
(int) Port where Prometheus target binds to
(string) Path to certificate used by prometheus for TLS
(string) Path to key used by prometheus for TLS
(string) Identifies which network interface to use for the public address
(string) Override the mode the registry is configured in
(string) Path to storage device to be used on this node (i. e. "/dev/sdb")
(string) Name of a LXD storage pool to use instead of creating a custom one. This will only work when using LXD clusters not managed by AMS via the lxd-integrator charm.
(string) APT source to use instead of the automatic one generated from UA. Overrides UA source if both are set.
(string) Key ID to import to the APT keyring in order to access the specified source archive. Required if ua_source is set.
(string) Ubuntu Advantage token you have received with your license of Anbox Cloud
(boolean) Use staging contracts API service