canonical / canonical/concierge
Offline preset for air-gapped deployments
- Dominant language
- Go
- Stars
- 17
- Forks
- 11
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 6
Description
We already have all of [these offline products docs](https://documentation.ubuntu.com/airgapped/products/#airgapped-documentation-for-specific-products), but the offline story is still a large effort for Product, Field, ManSol, etc. teams at Canonical. Concierge could simplify offline deployments by featuring an offline preset like `concierge prepare -p offline` to simplify/standardize the setup for users and maintainers alike. Concierge seems like the correct place since it is centered around provisioning for Juju. The `offline` preset would not provision Juju, rather it installs an env for working with Juju on an air-gapped cloud.
Concierge would execute within the `Mirror` (with access to the internet) to provision prerequisites for Juju in an air-gapped cloud, according to our offline tutorial docs.
```mermaid
flowchart LR
subgraph Mirror["Mirror"]
concierge["Concierge"]
end
subgraph Cloud["Offline Cloud"]
juju["Juju"]
end
Mirror ---|bridge| Cloud
```
> [!NOTE]
> Items that are out of scope for Concierge are:
> - The networking between `Mirror` and `Offline Cloud`
> - The offline Juju deployment in the air-gapped `Offline Cloud`
What I am most interested in is Concierge setting up the [offline snap store](https://documentation.ubuntu.com/enterprise-store/main/how-to/airgap/), [Charmhub](https://documentation.ubuntu.com/enterprise-store/main/how-to/airgap-charmhub/), and a [custom registry](https://documentation.ubuntu.com/canonical-kubernetes/latest/charm/howto/custom-registry/). These are 3 main pain points I have identified, but the bare-minimum list could be extended. These 3 steps are required to simplify the offline Juju deployment in the air-gapped `Offline Cloud`. The product documentation then simplifies into:
1. `concierge prepare -p offline` in the `Mirror`
2. Deploy [Canonical K8s](https://documentation.ubuntu.com/canonical-kubernetes/latest/snap/howto/install/offline/) with [Juju](https://documentation.ubuntu.com/juju/latest/howto/manage-your-juju-deployment/set-up-your-juju-deployment-offline/) in the `Offline Cloud`, pointing at the Mirror for snaps, charms, images, etc.
3. Deploy your product on Juju
Step `3.` is still up in the air for the Offline Terraform story, so I created this issue on the terraform-juju-provider:
- https://github.com/juju/terraform-provider-juju/issues/1364
---
If you need internal reference docs for air-gapped setups to gain an understanding of the production requirements, please reach out to me, I would be happy to provide those internally.
Contributor guide
Research direction
Start with the `concierge prepare -p offline` entry point and the linked offline snap store, Charmhub, and custom registry documentation. Define the preset's scope around preparing these prerequisites in the Mirror, while excluding networking and offline Juju deployment; done means the three resources are ready for the documented air-gapped workflow.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- cloud, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100