diff --git a/terraform/charm/README.md b/terraform/charm/README.md index 2f34b2ce..72f582ec 100644 --- a/terraform/charm/README.md +++ b/terraform/charm/README.md @@ -129,6 +129,7 @@ No modules. | Name | Description | |------|-------------| | [app\_name](#output\_app\_name) | Name of the deployed application. | +| [has\_haproxy\_route\_interface](#output\_has\_haproxy\_route\_interface) | Indicates whether the deployed revision uses haproxy-route relations (26.04+) rather than the legacy external HAProxy website endpoint. | | [provides](#output\_provides) | Map of integration endpoints this charm provides (`cos-agent`, `data`, `hosted`, `nrpe-external-master`, `website`). | -| [requires](#output\_requires) | Map of integration endpoints this charm requires (`application-dashboard`, `db` or `db`/`database`, `amqp` or `inbound-amqp`/`outbound-amqp`, haproxy-route relations for 26.04+, `website` for external HAProxy on older revisions). | +| [requires](#output\_requires) | Map of integration endpoints this charm requires. | diff --git a/terraform/product/modules/landscape-scalable/README.md b/terraform/product/modules/landscape-scalable/README.md index 33a8a6c0..cfcc31a5 100644 --- a/terraform/product/modules/landscape-scalable/README.md +++ b/terraform/product/modules/landscape-scalable/README.md @@ -56,70 +56,83 @@ This module uses the [Landscape Server charm module](https://github.com/canonica ## Requirements -| Name | Version | -| ------------------------------------------------------------------------- | ------- | +| Name | Version | +|------|---------| | [terraform](#requirement\_terraform) | >= 1.10 | -| [juju](#requirement\_juju) | ~> 1.0 | +| [juju](#requirement\_juju) | ~> 1.0 | ## Providers -| Name | Version | -| ---------------------------------------------------- | ------- | -| [juju](#provider\_juju) | ~> 1.0 | +| Name | Version | +|------|---------| +| [juju](#provider\_juju) | ~> 1.0 | ## Modules -| Name | Source | Version | -| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -------------- | -| [haproxy](#module\_haproxy) | git::https://github.com/canonical/haproxy-operator.git//terraform/charm/haproxy | haproxy-rev331 | -| [landscape\_server](#module\_landscape\_server) | ../../../charm | n/a | -| [postgresql](#module\_postgresql) | git::https://github.com/canonical/postgresql-operator.git//terraform | v16/1.165.0 | +| Name | Source | Version | +|------|--------|---------| +| [haproxy](#module\_haproxy) | git::https://github.com/canonical/haproxy-operator.git//terraform/charm/haproxy | haproxy-rev331 | +| [landscape\_server](#module\_landscape\_server) | ../../../charm | n/a | +| [postgresql](#module\_postgresql) | git::https://github.com/canonical/postgresql-operator.git//terraform | v16/1.165.0 | ## Resources -| Name | Type | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -| [juju_application.hostagent_messenger_ingress](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | -| [juju_application.http_ingress](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | -| [juju_application.lb_certs](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | -| [juju_application.rabbitmq_server](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | -| [juju_application.ubuntu_installer_attach_ingress](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | -| [juju_integration.landscape_server_haproxy](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_hostagent_messenger_ingress](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_http_ingress](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_inbound_amqp](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_outbound_amqp](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_postgresql_legacy](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_postgresql_modern](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_rabbitmq_server](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_tls_certificates](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_integration.landscape_server_ubuntu_installer_attach_ingress](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | -| [juju_machine.landscape_server](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/machine) | resource | +| Name | Type | +|------|------| +| [juju_application.haproxy_self_signed_certs](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | +| [juju_application.pgbouncer](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | +| [juju_application.rabbitmq_server](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application) | resource | +| [juju_integration.haproxy_certificates](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.haproxy_receive_ca_certs](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_api_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_api_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_appserver_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_appserver_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_haproxy](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_hostagent_messenger_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_hostagent_messenger_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_inbound_amqp](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_message_server_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_message_server_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_outbound_amqp](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_package_upload_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_package_upload_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_pgbouncer](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_pingserver_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_pingserver_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_postgresql_legacy](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_postgresql_modern](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_rabbitmq_server](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_repository_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_repository_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_ubuntu_installer_attach_haproxy_route_in_model](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.landscape_server_ubuntu_installer_attach_haproxy_route_lbaas](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_integration.pgbouncer_postgresql](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/integration) | resource | +| [juju_machine.landscape_server](https://registry.terraform.io/providers/juju/juju/latest/docs/resources/machine) | resource | ## Inputs -| Name | Description | Type | Default | Required | -| ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | :------: | -| [haproxy](#input\_haproxy) | Configuration for the (legacy) HAProxy charm. Set to null to skip deployment. |
object({
app_name = optional(string, "haproxy")
channel = optional(string, "latest/edge")
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@22.04")
units = optional(number, 1)
}) | `null` | no |
-| [hostagent\_messenger\_ingress](#input\_hostagent\_messenger\_ingress) | Configuration for the hostagent messenger ingress configurator charm. Set to null to skip deployment. | object({
app_name = optional(string, "hostagent-messenger-ingress")
channel = optional(string, "latest/edge")
config = optional(map(string), {
external-grpc-port = "6554"
hostname = "landscape.local"
backend-protocol = "https"
})
constraints = optional(string, "arch=amd64")
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, "ubuntu@24.04")
units = optional(number, 1)
}) | `null` | no |
-| [http\_ingress](#input\_http\_ingress) | Configuration for the HTTP ingress configurator charm. Set to null to skip deployment. | object({
app_name = optional(string, "http-ingress")
channel = optional(string, "latest/edge")
config = optional(map(string), {
paths = "/"
hostname = "landscape.local"
header-rewrite-expressions = "X-Forwarded-Proto:https"
allow-http = "true"
})
constraints = optional(string, "arch=amd64")
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, "ubuntu@24.04")
units = optional(number, 1)
}) | `null` | no |
-| [landscape\_server](#input\_landscape\_server) | Configuration for the Landscape Server charm. | object({
app_name = optional(string, "landscape-server")
channel = optional(string, "25.10/edge")
config = optional(map(string), {
autoregistration = "true"
landscape_ppa = "ppa:landscape/self-hosted-beta"
min_install = "true"
root_url = "https://landscape.local/"
enable_hostagent_messenger = "true"
enable_ubuntu_installer_attach = "true"
})
constraints = optional(string, "arch=amd64")
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, "ubuntu@24.04")
units = optional(number, 1)
}) | `{}` | no |
-| [lb\_certs](#input\_lb\_certs) | Configuration for the self-signed-certificates charm (for internal HAProxy TLS). Set to null to skip deployment. | object({
app_name = optional(string, "lb-certs")
channel = optional(string, "1/stable")
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)
}) | `{}` | no |
-| [model\_uuid](#input\_model\_uuid) | UUID of the Juju model to deploy Landscape Server to. | `string` | n/a | yes |
-| [postgresql](#input\_postgresql) | Configuration for the PostgreSQL charm. Set to null to skip deployment. | object({
app_name = optional(string, "postgresql")
channel = optional(string, "16/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@24.04")
units = optional(number, 1)
}) | `{}` | no |
-| [rabbitmq\_server](#input\_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)
}) | `{}` | no |
-| [ubuntu\_installer\_attach\_ingress](#input\_ubuntu\_installer\_attach\_ingress) | Configuration for the Ubuntu installer attach ingress configurator charm. Set to null to skip deployment. | object({
app_name = optional(string, "ubuntu-installer-attach-ingress")
channel = optional(string, "latest/edge")
config = optional(map(string), {
external-grpc-port = "50051"
hostname = "landscape.local"
backend-protocol = "https"
})
constraints = optional(string, "arch=amd64")
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, "ubuntu@24.04")
units = optional(number, 1)
}) | `null` | no |
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [haproxy](#input\_haproxy) | Configuration for the HAProxy charm. Set to null to skip deployment. | object({
app_name = optional(string, "haproxy")
channel = optional(string, "2.8/edge")
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)
}) | `{}` | no |
+| [haproxy\_route\_offer\_url](#input\_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\_self\_signed\_certs](#input\_haproxy\_self\_signed\_certs) | Configuration for the self-signed-certificates charm used by HAProxy. Set to null to skip deployment. | object({
app_name = optional(string, "self-signed-certificates")
channel = optional(string, "1/stable")
constraints = optional(string, "arch=amd64")
revision = optional(number)
base = optional(string, "ubuntu@24.04")
}) | `{}` | no |
+| [landscape\_server](#input\_landscape\_server) | Configuration for the Landscape Server charm. | object({
app_name = optional(string, "landscape-server")
channel = optional(string, "25.10/edge")
config = optional(map(string), {
autoregistration = "true"
landscape_ppa = "ppa:landscape/self-hosted-beta"
min_install = "true"
root_url = "https://landscape.local/"
enable_hostagent_messenger = "true"
enable_ubuntu_installer_attach = "true"
})
constraints = optional(string, "arch=amd64")
resources = optional(map(string), {})
revision = optional(number)
base = optional(string, "ubuntu@24.04")
units = optional(number, 1)
}) | `{}` | no |
+| [model\_uuid](#input\_model\_uuid) | UUID of the Juju model to deploy Landscape Server to. | `string` | n/a | yes |
+| [pgbouncer](#input\_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](#input\_postgresql) | Configuration for the PostgreSQL charm. Set to null to skip deployment. | object({
app_name = optional(string, "postgresql")
channel = optional(string, "16/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@24.04")
units = optional(number, 1)
}) | `{}` | no |
+| [rabbitmq\_server](#input\_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)
}) | `{}` | no |
## Outputs
-| Name | Description |
-| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [admin\_email](#output\_admin\_email) | Administrator email from the Landscape Server config. |
-| [admin\_password](#output\_admin\_password) | Administrator password from the Landscape Server config (sensitive). |
-| [applications](#output\_applications) | The charms included in the module. |
-| [haproxy\_self\_signed](#output\_haproxy\_self\_signed) | Indicates whether the external HAProxy charm is using a self-signed TLS certificate. Null when haproxy is not deployed. |
-| [has\_haproxy\_route\_interface](#output\_has\_haproxy\_route\_interface) | Indicates whether the deployment uses haproxy-route relations (26.04+) rather than the legacy external HAProxy website endpoint. |
-| [has\_modern\_amqp\_relations](#output\_has\_modern\_amqp\_relations) | Indicates whether the deployment uses the modern inbound/outbound AMQP endpoints. |
-| [has\_modern\_postgres\_interface](#output\_has\_modern\_postgres\_interface) | Indicates whether the deployment supports the modern PostgreSQL charm interface. |
-| [registration\_key](#output\_registration\_key) | Registration key from the Landscape Server config. |
+| Name | Description |
+|------|-------------|
+| [admin\_email](#output\_admin\_email) | Administrator email from the Landscape Server config. |
+| [admin\_password](#output\_admin\_password) | Administrator password from the Landscape Server config (sensitive). |
+| [applications](#output\_applications) | The charms included in the module. |
+| [haproxy\_self\_signed](#output\_haproxy\_self\_signed) | Indicates whether HAProxy is using self-signed TLS certificates. True when self-signed-certificates is deployed alongside haproxy, null when haproxy is not deployed. |
+| [has\_haproxy\_route\_interface](#output\_has\_haproxy\_route\_interface) | Indicates whether the deployment uses the modern haproxy-route relation/interface instead of the legacy website interface. |
+| [has\_modern\_amqp\_relations](#output\_has\_modern\_amqp\_relations) | Indicates whether the deployment uses the modern inbound/outbound AMQP endpoints. |
+| [has\_modern\_postgres\_interface](#output\_has\_modern\_postgres\_interface) | Indicates whether the deployment supports the modern PostgreSQL charm interface. |
+| [registration\_key](#output\_registration\_key) | Registration key from the Landscape Server config. |