Landscape Scalable product module

The Landscape Scalable product module deploys a complete self-hosted Landscape environment, including the Landscape Server charm and its supporting applications and integrations.

The module is maintained in the landscape-server-operator repository. See the module source for its implementation, and How to deploy Landscape with Terraform and Juju for deployment instructions.

Requirements

Name

Version

terraform

>= 1.10

juju

~> 1.0

Providers

Name

Version

juju

~> 1.0

Modules

Resources

Name

Type

juju_application.landscape_debarchive

resource

juju_application.landscape_task_handler

resource

juju_application.pgbouncer_debarchive

resource

juju_application.pgbouncer_server

resource

juju_application.rabbitmq_server

resource

juju_application.tls_certificates

resource

juju_integration.haproxy_certificates

resource

juju_integration.haproxy_receive_ca_certs

resource

juju_integration.landscape_debarchive_haproxy_route_in_model

resource

juju_integration.landscape_debarchive_haproxy_route_lbaas

resource

juju_integration.landscape_debarchive_landscape_server

resource

juju_integration.landscape_debarchive_pgbouncer

resource

juju_integration.landscape_debarchive_postgresql

resource

juju_integration.landscape_server_api_haproxy_route_in_model

resource

juju_integration.landscape_server_api_haproxy_route_lbaas

resource

juju_integration.landscape_server_appserver_haproxy_route_in_model

resource

juju_integration.landscape_server_appserver_haproxy_route_lbaas

resource

juju_integration.landscape_server_haproxy

resource

juju_integration.landscape_server_hostagent_messenger_haproxy_route_in_model

resource

juju_integration.landscape_server_hostagent_messenger_haproxy_route_lbaas

resource

juju_integration.landscape_server_inbound_amqp

resource

juju_integration.landscape_server_message_server_haproxy_route_in_model

resource

juju_integration.landscape_server_message_server_haproxy_route_lbaas

resource

juju_integration.landscape_server_outbound_amqp

resource

juju_integration.landscape_server_package_upload_haproxy_route_in_model

resource

juju_integration.landscape_server_package_upload_haproxy_route_lbaas

resource

juju_integration.landscape_server_pgbouncer

resource

juju_integration.landscape_server_pingserver_haproxy_route_in_model

resource

juju_integration.landscape_server_pingserver_haproxy_route_lbaas

resource

juju_integration.landscape_server_postgresql_legacy

resource

juju_integration.landscape_server_postgresql_modern

resource

juju_integration.landscape_server_rabbitmq_server

resource

juju_integration.landscape_server_repository_haproxy_route_in_model

resource

juju_integration.landscape_server_repository_haproxy_route_lbaas

resource

juju_integration.landscape_server_ubuntu_installer_attach_haproxy_route_in_model

resource

juju_integration.landscape_server_ubuntu_installer_attach_haproxy_route_lbaas

resource

juju_integration.landscape_task_handler_certificates

resource

juju_integration.landscape_task_handler_grpc_haproxy_route_in_model

resource

juju_integration.landscape_task_handler_grpc_haproxy_route_lbaas

resource

juju_integration.landscape_task_handler_landscape_server

resource

juju_integration.landscape_task_handler_postgresql

resource

juju_integration.pgbouncer_debarchive_postgresql

resource

juju_integration.pgbouncer_server_postgresql

resource

Inputs

Name

Description

Type

Default

Required

haproxy

Configuration for the HAProxy charm. Set to null to skip deployment.

object({
app_name = optional(string, “haproxy”)
channel = optional(string, “latest/stable”)
config = optional(map(string), {
default_timeouts = “queue 60000, connect 5000, client 120000, server 120000”
global_default_bind_options = “no-tlsv10”
services = “”
ssl_cert = “SELFSIGNED”
})
constraints = optional(string, “arch=amd64”)
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, “ubuntu@24.04”)
units = optional(number, 1)
machines = optional(set(string))
})

{}

no

haproxy_route_offer_url

Offer URL for the haproxy-route endpoint from a cross-model haproxy deployment (LBaaS). Set to null to skip.

string

null

no

haproxy_route_tcp_offer_url

Offer URL for the haproxy-route-tcp endpoint from a cross-model haproxy deployment (LBaaS), used for the hostagent-messenger and ubuntu-installer-attach grpc backends. Set to null to skip.

string

null

no

landscape_debarchive

Configuration for the Landscape Debarchive charm. Set to null to skip deployment.

object({
app_name = optional(string, “landscape-debarchive”)
channel = optional(string, “latest/stable”)
charm_name = optional(string, “landscape-debarchive”)
config = optional(map(string), {})
constraints = optional(string, “arch=amd64”)
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, “ubuntu@24.04”)
units = optional(number, 1)
machines = optional(set(string))
})

null

no

landscape_server

Configuration for the Landscape Server charm.

object({
app_name = optional(string, “landscape-server”)
channel = optional(string, “24.04/stable”)
charm_name = optional(string, “landscape-server”)
config = optional(map(string), {
landscape_ppa = “ppa:landscape/self-hosted-24.04”
})
constraints = optional(string, “arch=amd64”)
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, “ubuntu@24.04”)
units = optional(number, 1)
})

{}

no

landscape_task_handler

Configuration for the Landscape Task Handler charm. Set to null to skip deployment.

object({
app_name = optional(string, “landscape-task-handler”)
channel = optional(string, “latest/stable”)
charm_name = optional(string, “landscape-task-handler”)
config = optional(map(string), {})
constraints = optional(string, “arch=amd64”)
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, “ubuntu@24.04”)
units = optional(number, 1)
machines = optional(set(string))
})

null

no

model_uuid

UUID of the Juju model to deploy Landscape Server to.

string

n/a

yes

pgbouncer

Configuration for the PgBouncer charm. Set to null to skip deployment. PgBouncer is a subordinate charm and does not have its own units.

object({
app_name = optional(string, “pgbouncer”)
channel = optional(string, “1/stable”)
config = optional(map(string), {})
revision = optional(number)
base = optional(string, “ubuntu@24.04”)
})

null

no

postgresql

Configuration for the PostgreSQL charm. Set to null to skip deployment.

object({
app_name = optional(string, “postgresql”)
channel = optional(string, “14/stable”)
config = optional(map(string), {
plugin_plpython3u_enable = “true”
plugin_ltree_enable = “true”
plugin_intarray_enable = “true”
plugin_debversion_enable = “true”
plugin_pg_trgm_enable = “true”
experimental_max_connections = “500”
})
constraints = optional(string, “arch=amd64”)
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, “ubuntu@22.04”)
units = optional(number, 1)
machines = optional(set(string))
})

{}

no

rabbitmq_server

Configuration for the RabbitMQ charm. Set to null to skip deployment.

object({
app_name = optional(string, “rabbitmq-server”)
channel = optional(string, “latest/edge”)
config = optional(map(string), {
consumer-timeout = “259200000”
})
constraints = optional(string, “arch=amd64”)
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, “ubuntu@24.04”)
units = optional(number, 1)
machines = optional(set(string))
})

{}

no

tls_certificates

Configuration for the certificates charm deployed. Currently only integrated with HAProxy automatically. Set to null to skip deployment.

object({
app_name = optional(string, “tls-certificates”)
channel = optional(string, “1/stable”)
charm_name = optional(string, “self-signed-certificates”)
constraints = optional(string, “arch=amd64”)
revision = optional(number)
base = optional(string, “ubuntu@24.04”)
machines = optional(set(string))
})

{}

no

Outputs

Name

Description

admin_email

Administrator email from the Landscape Server config.

admin_password

Administrator password from the Landscape Server config (sensitive).

applications

The charms included in the module.

has_modern_amqp_relations

Indicates whether the deployment uses the modern inbound/outbound AMQP endpoints.

has_modern_haproxy_interface

Indicates whether the deployment uses the modern haproxy-route relation/interface instead of the legacy website interface.

has_modern_postgres_interface

Indicates whether the deployment supports the modern PostgreSQL charm interface.

registration_key

Registration key from the Landscape Server config.