How to install Landscape Server with Juju

You can deploy Landscape in a scalable way with Juju. This document provides a very high-level overview.

For detailed instructions on deploying Landscape with Juju in a high-availability environment, see How to install and configure Landscape for high-availability deployments.

Install Juju

Install Juju as a snap with this command:

sudo snap install juju --classic

To learn more about Juju and to bootstrap a Juju controller, check out their getting started page.

Deploy self-hosted Landscape Server

If you have an Ubuntu Pro subscription, attach your Pro token to each machine that will host Landscape Server components. For guidance, see How to attach your Ubuntu Pro subscription.

When deploying with Juju, you will use a Juju bundle. A bundle is an encapsulation of all of the parts needed to deploy the required services as well as associated relations and configurations that the deployment requires.

Important

Starting with the 26.04 beta version of the Landscape Server charm, the deployment architecture has changed significantly. The charm now integrates directly with the external HAProxy charm (2.8/edge) using the haproxy-route interface and no longer uses the legacy reverseproxy interface. If you have an existing deployment using the older approach, see How to migrate to Landscape 26.04 LTS (charm) for migration instructions.

Deployment approaches

There are two deployment approaches depending on which version of the Landscape Server charm you’re using:

Pre-26.04 deployment

The older deployment uses:

  • External HAProxy charm for load balancing

  • PostgreSQL 14 with the legacy pgsql interface

  • Separate HAProxy unit(s) for traffic management

This approach is deprecated and should only be used for existing deployments that haven’t migrated yet.

landscape-scalable bundle

The landscape-scalable bundle provides a reference configuration for deploying Landscape Server in a high-availability setup. The bundle configuration varies depending on the charm version:

For 26.04 beta+ deployments:

juju deploy landscape-scalable --channel 26.04/beta

This will deploy:

  • Multiple Landscape Server units

  • HAProxy (2.8/edge) for load balancing

  • PostgreSQL 16 for the database

  • RabbitMQ Server for message queuing

  • Self-signed certificates for TLS (integrated with HAProxy)

For older deployments:

juju deploy landscape-scalable --channel latest/stable

This deploys the older architecture with the external HAProxy charm.

Other bundles

Previously, there were additional bundles: landscape-dense and landscape-dense-maas. These bundles are now deprecated and should not be used for new deployments.

Access self-hosted Landscape

Once the deployment has finished, Landscape Server is accessible in different ways depending on the deployment approach:

Pre-26.04 deployment:

  • Access via the IP address of the first haproxy unit

  • HAProxy typically runs on port 443 (HTTPS)

26.04 beta+ deployment:

  • Access via the HAProxy unit IP address or your configured root_url

  • HAProxy handles load balancing across all Landscape Server units

With external load balancer (LBaaS):

  • When using a cross-model HAProxy deployment

  • Access via the hostname specified in your root_url

  • The external HAProxy distributes traffic across Landscape Server units

Tip

For the 26.04 beta+ deployment, it’s recommended to set the root_url option and configure DNS to point to your HAProxy unit IP address, or to an external load balancer if you’re using LBaaS.