Skip to content

fix: inaccuracies in installation guides on 26.04 - #306

Merged
jansdhillon merged 15 commits into
canonical:mainfrom
jansdhillon:lndeng-4552
Aug 21, 2026
Merged

fix: inaccuracies in installation guides on 26.04#306
jansdhillon merged 15 commits into
canonical:mainfrom
jansdhillon:lndeng-4552

Conversation

@jansdhillon

@jansdhillon jansdhillon commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://warthogs.atlassian.net/browse/LNDENG-4552

I also added some agents for testing in the future https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/create-custom-agents-for-cli

Every installation/setup guide under docs/how-to-guides/landscape-installation-and-set-up/ was live-tested end-to-end against real targets (LXD containers, real Juju models via ../landscape-server-operator, and a real FIPS-enabled Ubuntu Pro VM) rather than reviewed by reading alone. Bugs found this way were fixed; the diff was then minimized to keep only independently-confirmed changes.

Bugs found & fixed

  • manual-installation.md
    • postgresql-contrib doesn't exist on Resolute - package guidance made release-agnostic.
    • Config section is [appserver], not [landscape].
    • /etc/default/landscape-server no longer has RUN_ALL/RUN_MSGSERVER flags on current packages - only RUN_CRON/UPGRADE_SCHEMA remain.
  • install-landscape-client.md
    • Registering against a self-signed-cert server requires --ssl-public-key; the guide didn't document this and registration silently failed without it.
  • install-in-a-lxd-container.md
    • The documented cloud-init variable name didn't match the real template's expected variable (LANDSCAPE_PPA), so the profile-driven install silently used the wrong PPA.
  • configure-landscape-client.md
    • The config-management (RUN=1) registration flow description didn't match observed behavior on current releases - corrected and simplified.
  • juju-installation.md / juju-ha-installation.md
    • landscape-scalable on Charmhub has no 26.04/* channel - clarified legacy vs. current-channel deploy paths.
    • HAProxy channel 2.8/edge2.8/stable.
    • HAProxy hostname-routing bug: the app is only reachable via the configured hostname, not the HAProxy unit's bare IP - this was silently wrong in both guides and is now documented.
  • quickstart-installation.md
    • Corrected the Ubuntu Pro attach step wording after testing live with a real Pro token.
  • disa-stig.md
    • PostgreSQL server cert needs a DNS:localhost SAN or localhost TLS connections fail verification.
    • pg_hba.conf example using the server's real IP is wrong for this all-in-one guide - corrected to loopback addressing.
    • RabbitMQ needs NODENAME=rabbit@localhost and a localhost TLS listener.
    • Removed stale landscape-standalone-knowledge package references.
    • Confirmed LNDENG-4203 (PostgreSQL cert-auth setup bug) is fixed and backported to the 26.04 branch (canonical/landscape-server#1478), so no workaround note was needed - the straightforward cert-auth-from-the-start flow is correct as documented.
  • install-landscape-in-an-air-gapped-or-offline-environment.md
    • Corrected steps found to not work as written when tested in a genuinely network-isolated container against a real offline apt mirror.
  • install-on-fips-compliant-machines.md
    • Corrected steps found to not work as written when tested in a real FIPS-enabled Ubuntu Pro VM.

Confirmed false alarms (no changes needed)

  • debarchive-repository-management.md and configure-outbox.md were reviewed and tested; no inaccuracies found.
  • configure-postfix.md, configure-rabbitmq.md, create-saas-account.md reviewed; no inaccuracies found.

Validation

  • make html run clean after every change.
  • All fixes reproduced live before being applied - diff was subsequently minimized to remove any change not independently confirmed necessary (see commit history on this branch).

Tooling added

  • .github/agents/tester-*.agent.md: one custom tester agent definition per guide, capturing the live-testing methodology (real LXD containers/VMs, real Juju models, real FIPS/Pro tokens) used for this audit, so future re-tests of these guides can be run consistently.

Add .github/agents/ custom agent definitions, one per installation guide,
capturing the live-testing methodology (real LXD containers/VMs, real
Juju models, real FIPS/Ubuntu Pro tokens) used to audit and fix these
guides for 26.04+, so future re-tests can be run consistently.
The manual-installation guide's "Configure Landscape services" section
dropped guidance on running multiple instances of a service when the
obsolete /etc/default/landscape-server RUN_MSGSERVER="N" style flags
were removed (those don't exist on 26.04). Restore equivalent guidance
using the current mechanism: the `workers` field in each service's
section of /etc/landscape/service.conf (see
canonical/landscape/settings/service.py's ServiceSettingsMixin and
canonical/landscape/runtime/worker_runner.py in landscape-server, which
spawns exactly `workers` processes per service).

Per-service enable/disable is unaffected and still systemd/lsctl-based
(no `enabled` field exists in service.conf), so that part of the guide
was already accurate.
Undo an earlier accidental revert of the Global Administrator account
section wording, which was an intentional edit.
Undo an earlier accidental revert of the shortened postgresql-contrib
note in manual-installation.md, which was an intentional edit.
@jansdhillon
jansdhillon requested a lite review from Copilot August 19, 2026 21:00
@jansdhillon
jansdhillon marked this pull request as ready for review August 19, 2026 21:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Landscape installation/setup documentation to match behavior verified by live end-to-end testing on Ubuntu 26.04+ (and related supported releases), and adds per-guide “tester agent” definitions to make future re-validation repeatable.

Changes:

  • Corrects multiple installation guide steps/config examples for current packages and charms (PostgreSQL packaging, service.conf sections/keys, systemd/service management, HAProxy channel/routing behavior).
  • Improves client install/registration guidance for TLS trust (documenting --ssl-public-key for self-signed/private CAs) and clarifies config-management registration behavior.
  • Adds .github/agents/tester-*.agent.md files capturing the live-testing methodology per guide.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
docs/reuse/landscape-ppa-name-description.md Adds a reusable description for a LANDSCAPE_PPA_NAME variable (suffix form) used by the LXD/cloud-init flow.
docs/how-to-guides/landscape-installation-and-set-up/quickstart-installation.md Aligns post-install access wording with the guide’s $FQDN variable usage.
docs/how-to-guides/landscape-installation-and-set-up/manual-installation.md Fixes 26.04-specific package guidance, service.conf section/key naming, and updates service/worker configuration guidance.
docs/how-to-guides/landscape-installation-and-set-up/juju-installation.md Clarifies legacy vs 26.04+ charm/bundle deployment paths and HAProxy hostname-based routing behavior.
docs/how-to-guides/landscape-installation-and-set-up/juju-ha-installation.md Updates HAProxy channel guidance, bundle examples, and documents hostname routing requirements for access.
docs/how-to-guides/landscape-installation-and-set-up/install-on-fips-compliant-machines.md Adds apt pinning guidance to avoid dependency mismatches under Ubuntu Pro/ESM on FIPS-oriented installs.
docs/how-to-guides/landscape-installation-and-set-up/install-landscape-in-an-air-gapped-or-offline-environment.md Adjusts offline installation steps to include required snaps and installs local .deb sets via APT for dependency resolution.
docs/how-to-guides/landscape-installation-and-set-up/install-landscape-client.md Documents --ssl-public-key for registration against self-signed/private CA servers and clarifies when it’s required.
docs/how-to-guides/landscape-installation-and-set-up/install-in-a-lxd-container.md Fixes the cloud-init variable name used to select the Landscape PPA and switches to a matching reusable include.
docs/how-to-guides/landscape-installation-and-set-up/disa-stig.md Fixes multiple hardening/config examples (TLS SANs, loopback addressing, RabbitMQ TLS/node settings, and removes stale knowledge DB references).
docs/how-to-guides/landscape-installation-and-set-up/configure-landscape-client.md Replaces the config-management registration flow description with a landscape-config --silent-based approach.
.github/agents/tester-quickstart-installation.agent.md Adds a repeatable live-test procedure for the quickstart guide.
.github/agents/tester-manual-installation.agent.md Adds a repeatable live-test procedure for the manual installation guide.
.github/agents/tester-juju-installation.agent.md Adds a repeatable live-test procedure for the Juju installation guide.
.github/agents/tester-juju-ha-installation.agent.md Adds a repeatable live-test procedure for the Juju HA installation guide.
.github/agents/tester-install-landscape-client.agent.md Adds a repeatable live-test procedure for the landscape-client install/registration guide.
.github/agents/tester-install-in-a-lxd-container.agent.md Adds a repeatable live-test procedure for the LXD/cloud-init installation guide.
.github/agents/tester-fips-install.agent.md Adds a repeatable live-test procedure for the FIPS-compliant install guide.
.github/agents/tester-disa-stig.agent.md Adds a repeatable live-test procedure for the DISA STIG guide.
.github/agents/tester-configure-landscape-client.agent.md Adds a repeatable live-test procedure for the client configuration guide.
.github/agents/tester-airgap-install.agent.md Adds a repeatable live-test procedure for the offline/air-gapped install guide.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/how-to-guides/landscape-installation-and-set-up/juju-ha-installation.md Outdated
Comment thread docs/how-to-guides/landscape-installation-and-set-up/disa-stig.md
Comment thread docs/how-to-guides/landscape-installation-and-set-up/disa-stig.md Outdated
# Conflicts:
#	docs/how-to-guides/landscape-installation-and-set-up/disa-stig.md
- juju-ha-installation.md: fix broken {ref} cross-reference (missing
  required space before the target, e.g. "text <target>" not
  "text<target>"), which prevented the reference from resolving.
- disa-stig.md: remove two orphaned `landscape_maintenance` references.
  Upstream's PR canonical#281 already removed the `landscape_maintenance`/
  `set_user` extension content from this guide (it narrowed scope to
  FIPS-certified 22.04 only), so these leftover mentions from our
  branch's older content referenced a role the guide no longer sets up
  anywhere, which is what the review correctly flagged as inconsistent.
jansdhillon added a commit to jansdhillon/landscape-documentation that referenced this pull request Aug 19, 2026
- juju-ha-installation.md: fix broken {ref} cross-reference (missing
  required space before the target, e.g. "text <target>" not
  "text<target>"), which prevented the reference from resolving.
- disa-stig.md: remove two orphaned `landscape_maintenance` references.
  Upstream's PR canonical#281 already removed the `landscape_maintenance`/
  `set_user` extension content from this guide (it narrowed scope to
  FIPS-certified 22.04 only), so these leftover mentions from our
  branch's older content referenced a role the guide no longer sets up
  anywhere, which is what the review correctly flagged as inconsistent.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nstallation.md

Remove confusing latest/stable vs latest/beta channel guidance for the
deprecated legacy landscape-scalable bundle. State plainly that the
bundle is deprecated and should not be used for new deployments,
consolidating what were two separate 'deprecated' sections into one.
The merge with upstream/main (536b2f7) accidentally took upstream's
stale <LANDSCAPE_IP_ADDRESS>/32 placeholder for the pg_hba.conf
cert-auth example, discarding our branch's correct loopback-based
fix. Since this all-in-one deployment guide has Landscape connect to
PostgreSQL via host = localhost, the pg_hba.conf entries must match
127.0.0.1/::1, not the server's external IP - live-verified in a
real LXD container that the placeholder-IP approach breaks
connections while the loopback entries work.
Comment thread docs/how-to-guides/landscape-installation-and-set-up/disa-stig.md Outdated
Comment thread docs/how-to-guides/landscape-installation-and-set-up/disa-stig.md Outdated
Comment thread docs/how-to-guides/landscape-installation-and-set-up/disa-stig.md Outdated
Comment thread docs/how-to-guides/landscape-installation-and-set-up/install-landscape-client.md Outdated
Comment thread docs/how-to-guides/landscape-installation-and-set-up/juju-installation.md Outdated
Comment thread docs/how-to-guides/landscape-installation-and-set-up/juju-installation.md Outdated
Comment thread docs/how-to-guides/landscape-installation-and-set-up/manual-installation.md Outdated
@YanisaHS

YanisaHS commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

I only scanned through the agents tests part though, LMK if you want me to look at that closer.

Edit: Thinking about it again, should the test agents just be in another PR so someone (maybe me, but presumably an engineer) can look at them more closely?

- configure-landscape-client.md: remove redundant note about
  landscape-config triggering registration (already covered elsewhere),
  and move the --silent advantage explanation up to the 'Use
  landscape-config' section where --silent is first introduced.
- disa-stig.md: reword the ambiguous 'all-in-one deployment' phrase to
  explicitly state Landscape, PostgreSQL, and RabbitMQ run on the same
  host; move the [schema] SSL settings explanation out of a service.conf
  comment and into the surrounding prose.
- install-landscape-client.md: remove an em dash per reviewer preference.
- juju-installation.md: remove em dashes from the HAProxy routing bullets,
  and clarify the landscape-scalable bundle was deprecated in 26.04
  (rather than just currently deprecated with no date) to make clear when.
- manual-installation.md: clarify the postgresql-contrib note is about
  PostgreSQL 18 (packaged with Resolute), not a blanket Ubuntu-version
  based limitation, since users can install other PostgreSQL versions.
# Conflicts:
#	docs/.custom_wordlist.txt
Confirmed against the actual snapcraft.yaml sources in
canonical/landscape-go (outbox/snap/snapcraft.yaml and
debarchive/snap/snapcraft.yaml): both snaps declare base: core22, not
core24. Also confirmed via 'snap info' against a locally installed
landscape-outbox snap. This corrects the air-gapped/offline
installation guide's snap download/install commands, and resolves
YanisaHS's PR canonical#306 review comment questioning the FIPS core22 vs
core24 discrepancy - these snaps are in fact core22-based, consistent
with the FIPS guide's existing core22 requirement.
@jansdhillon

Copy link
Copy Markdown
Contributor Author

I only scanned through the agents tests part though, LMK if you want me to look at that closer.

Edit: Thinking about it again, should the test agents just be in another PR so someone (maybe me, but presumably an engineer) can look at them more closely?

Sure

…al#310

The .github/agents/tester-*.agent.md files were split out into PR canonical#310
per review feedback, so they can be reviewed independently of the
documentation fixes in this PR.
@jansdhillon
jansdhillon requested a review from YanisaHS August 20, 2026 22:29
@jansdhillon
jansdhillon merged commit 090d211 into canonical:main Aug 21, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants