From 82ea87c9d596046c0f3dde1f6db04d5e5ed4e7ef Mon Sep 17 00:00:00 2001 From: Paul Tsai Date: Thu, 27 Nov 2025 10:55:05 +0000 Subject: [PATCH 1/7] docs: Simplify service documentation titles and standardize 'VM' to 'Virtual Machine'. --- .../{introduction.md => introduction.mdx} | 20 ++++++++++++++----- src/content/docs/service/02-compute.md | 17 ++++++++-------- src/content/docs/service/03-models.md | 3 ++- 3 files changed, 26 insertions(+), 14 deletions(-) rename src/content/docs/{introduction.md => introduction.mdx} (78%) diff --git a/src/content/docs/introduction.md b/src/content/docs/introduction.mdx similarity index 78% rename from src/content/docs/introduction.md rename to src/content/docs/introduction.mdx index 2b5da66..0769df7 100644 --- a/src/content/docs/introduction.md +++ b/src/content/docs/introduction.mdx @@ -1,8 +1,10 @@ --- -title: Get Started -description: Get started with OtterScale. +title: Introduction +description: Overview of OtterScale. --- +import { Card, CardGrid } from '@astrojs/starlight/components'; + OtterScale is a unified infrastructure management platform designed to simplify the deployment and operation of complex distributed systems. It integrates bare metal provisioning, container orchestration, and distributed storage into a single, cohesive interface. ## System Architecture @@ -33,6 +35,14 @@ The platform utilizes Ceph to provide a robust, self-healing storage fabric. Sto ## Next Steps -- [Check Prerequisites](/getting-started/01-prerequisites) -- [Create a Scope](/getting-started/03-scope) -- [Explore Basic Features](/basic/machines) + + + [Get your environment ready](/getting-started/01-prerequisites) + + + [Install OtterScale](/getting-started/02-installation) + + + [Set up your first scope](/getting-started/03-scope) + + diff --git a/src/content/docs/service/02-compute.md b/src/content/docs/service/02-compute.md index 8541213..0ce799e 100644 --- a/src/content/docs/service/02-compute.md +++ b/src/content/docs/service/02-compute.md @@ -1,19 +1,20 @@ --- -title: Compute (VM) +title: Compute description: Manage Virtual Machines. --- -The Compute section allows you to create and manage Virtual Machines (VMs). +The Compute section allows you to create and manage Virtual Machines (Virtual Machines). -## Creating a VM +## Creating a Virtual Machine + +To create a new Virtual Machine: -To create a new VM: 1. Go to the Compute section. -2. Click "Create VM". +2. Click "Create Virtual Machine". 3. Select the OS image, CPU, and RAM configuration. 4. Configure networking and storage. -5. Launch the VM. +5. Launch the Virtual Machine. -## Managing VMs +## Managing Virtual Machines -You can start, stop, restart, and delete VMs from this interface. +You can start, stop, restart, and delete Virtual Machines from this interface. diff --git a/src/content/docs/service/03-models.md b/src/content/docs/service/03-models.md index c41b520..460bf5c 100644 --- a/src/content/docs/service/03-models.md +++ b/src/content/docs/service/03-models.md @@ -1,5 +1,5 @@ --- -title: Models (LLM) +title: Models description: Manage LLM models in OtterScale. --- @@ -12,6 +12,7 @@ View available models, their status, and resource consumption. ## Deploying a Model To deploy a new model: + 1. Navigate to the Models section. 2. Select "Deploy Model". 3. Choose the model type and configuration. From dfb703cc017eec1c3f50b652b5db2c75ab925730 Mon Sep 17 00:00:00 2001 From: Paul Tsai Date: Thu, 27 Nov 2025 11:36:13 +0000 Subject: [PATCH 2/7] feat: enhance introduction with detailed HCI definition, AI/LLM tip, and improved structure using Starlight components. --- src/content/docs/introduction.mdx | 60 +++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 15 deletions(-) diff --git a/src/content/docs/introduction.mdx b/src/content/docs/introduction.mdx index 0769df7..46a7b51 100644 --- a/src/content/docs/introduction.mdx +++ b/src/content/docs/introduction.mdx @@ -3,9 +3,15 @@ title: Introduction description: Overview of OtterScale. --- -import { Card, CardGrid } from '@astrojs/starlight/components'; +import { Card, CardGrid, LinkCard, Steps, Aside } from '@astrojs/starlight/components'; -OtterScale is a unified infrastructure management platform designed to simplify the deployment and operation of complex distributed systems. It integrates bare metal provisioning, container orchestration, and distributed storage into a single, cohesive interface. +OtterScale is a **Hyper-Converged Infrastructure (HCI)** platform that unifies compute, storage, networking, and virtualization into a single, software-defined system. By collapsing traditional infrastructure silos, OtterScale simplifies deployment and management while delivering the scalability needed for modern enterprise workloads. + + ## System Architecture @@ -13,11 +19,15 @@ OtterScale is built on a layered architecture that provides complete control fro ### Core Layers + + 1. **Hardware Layer**: Manages physical resources including Compute nodes, Storage nodes, and GPU accelerators. 2. **Provisioning Layer (MAAS)**: Handles bare metal provisioning, OS deployment, and network configuration. 3. **Orchestration Layer (Juju & Kubernetes)**: Manages application lifecycles and container orchestration. 4. **Storage Layer (Ceph)**: Provides scalable, distributed storage for the cluster. + + ### Node Provisioning & Management OtterScale automates the lifecycle of physical nodes. Through the integration with MAAS, it handles power management (IPMI/Redfish), PXE booting, and OS installation. @@ -28,21 +38,41 @@ The platform utilizes Ceph to provide a robust, self-healing storage fabric. Sto ## Key Features -- **Scope Management**: logically isolate resources and manage access control for different teams or projects. -- **AI/LLM Readiness**: Optimized for high-performance computing with support for GPU acceleration and high-speed networking (InfiniBand/RoCE). -- **Multi-Tenancy**: Securely share infrastructure across multiple users while maintaining resource isolation. -- **Unified Interface**: A single pane of glass for monitoring and managing the entire stack, from metal to service. + + + Logically isolate resources and manage access control for different teams or projects. + + + Optimized for high-performance computing with support for GPU acceleration and high-speed + networking (InfiniBand/RoCE). + + + Securely share infrastructure across multiple users while maintaining resource isolation. + + + A single pane of glass for monitoring and managing the entire stack, from metal to service. + + ## Next Steps - - [Get your environment ready](/getting-started/01-prerequisites) - - - [Install OtterScale](/getting-started/02-installation) - - - [Set up your first scope](/getting-started/03-scope) - + + + From eae521d77c108bc7520dcf4a9564a44e40874c58 Mon Sep 17 00:00:00 2001 From: Paul Tsai Date: Fri, 28 Nov 2025 03:04:14 +0000 Subject: [PATCH 3/7] docs: Migrate installation guide to MDX with Starlight components and apply minor formatting updates to other documentation. --- ...-prerequisites.md => 01-prerequisites.mdx} | 28 +++++++----- .../docs/getting-started/02-installation.md | 38 ---------------- .../docs/getting-started/02-installation.mdx | 45 +++++++++++++++++++ .../{03-scope.md => 03-scope.mdx} | 12 ++++- src/content/docs/guides/install.md | 16 +++++++ src/content/docs/introduction.mdx | 2 +- 6 files changed, 91 insertions(+), 50 deletions(-) rename src/content/docs/getting-started/{01-prerequisites.md => 01-prerequisites.mdx} (67%) delete mode 100644 src/content/docs/getting-started/02-installation.md create mode 100644 src/content/docs/getting-started/02-installation.mdx rename src/content/docs/getting-started/{03-scope.md => 03-scope.mdx} (91%) diff --git a/src/content/docs/getting-started/01-prerequisites.md b/src/content/docs/getting-started/01-prerequisites.mdx similarity index 67% rename from src/content/docs/getting-started/01-prerequisites.md rename to src/content/docs/getting-started/01-prerequisites.mdx index 9b5b63f..2dda5ab 100644 --- a/src/content/docs/getting-started/01-prerequisites.md +++ b/src/content/docs/getting-started/01-prerequisites.mdx @@ -3,6 +3,8 @@ title: Prerequisites description: Hardware and network requirements for running OtterScale. --- +import { Card, CardGrid, Aside, Tabs, TabItem, Badge } from '@astrojs/starlight/components'; + ## System Requirements Before installing OtterScale, ensure your environment meets the following specifications. @@ -13,7 +15,7 @@ Before installing OtterScale, ensure your environment meets the following specif | :-------- | :------------------------------ | | **OS** | **Ubuntu 24.04 LTS** (Required) | -### Hardware Specifications +### Hardware | Resource | Minimum Requirement | | :------------- | :----------------------- | @@ -33,16 +35,18 @@ Before installing OtterScale, ensure your environment meets the following specif The installation process requires outbound access to various external services. Please whitelist the following domains and ports. -### Core Infrastructure + + -| Service Group | Port(s) | Domains | -| :---------------------- | :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Canonical Services** | TCP 443 (HTTPS)
TCP 80 (HTTP)\* | `api.charmhub.io`, `api.jujucharms.com`, `changelogs.ubuntu.com`, `charmhub.io`, `cloud-images.ubuntu.com`, `maas.ubuntu.com`, `images.maas.io`\*, `juju.is`, `jaas.ai`, `streams.canonical.com`, `objects.githubusercontent.com`, `contracts.canonical.com` | -| **Snap Store** | TCP 443 | `snapcraft.io`, `api.snapcraft.io`, `storage.snapcraftcontent.com`, `*.cdn.snapcraftcontent.com` | -| **Ubuntu Repos** | TCP 443, 80 | `archive.ubuntu.com`, `security.ubuntu.com`, `esm.ubuntu.com`, `ports.ubuntu.com`, `tw.archive.ubuntu.com` | -| **GitHub & OtterScale** | TCP 443, 80 | `otterscale.github.io`, `otterscale.com`, `github.com`, `raw.githubusercontent.com` | +| Service Group | Port(s) | Domains | +| :---------------------- | :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Canonical Services** | TCP 443 (HTTPS)
TCP 80 (HTTP)\* | `api.charmhub.io`, `api.jujucharms.com`, `changelogs.ubuntu.com`, `charmhub.io`, `cloud-images.ubuntu.com`, `maas.ubuntu.com`, `images.maas.io`\*, `juju.is`, `jaas.ai`, `streams.canonical.com`, `objects.githubusercontent.com`, `contracts.canonical.com` | +| **Snap Store** | TCP 443 | `snapcraft.io`, `api.snapcraft.io`, `storage.snapcraftcontent.com`, `*.cdn.snapcraftcontent.com` | +| **Ubuntu Repos** | TCP 443, 80 | `archive.ubuntu.com`, `security.ubuntu.com`, `esm.ubuntu.com`, `ports.ubuntu.com`, `tw.archive.ubuntu.com` | +| **GitHub & OtterScale** | TCP 443, 80 | `otterscale.github.io`, `otterscale.com`, `github.com`, `raw.githubusercontent.com` | -### Container Registries & Images +
+ | Registry | Port | Domains | | :----------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------------------- | @@ -52,10 +56,14 @@ The installation process requires outbound access to various external services. | **Red Hat / Quay** | TCP 443 | `registry.redhat.io`, `quay.io`, `registry.access.redhat.com` | | **Others** | TCP 443 | `registry.cn-hangzhou.aliyuncs.com` | -### AI & Helm Resources + + | Category | Port | Domains | | :-------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **HuggingFace** | TCP 443 | `huggingface.co`, `cdn-lfs.huggingface.co`, `cdn.huggingface.co` | | **Istio** | TCP 443 | `istio.io` | | **Helm Charts** | TCP 443 | `charts.jetstack.io`, `charts.bitnami.com`, `open-feature.github.io`, `prometheus-community.github.io`, `project-hami.github.io`, `helm.ngc.nvidia.com`, `llm-d.ai` | + + +
diff --git a/src/content/docs/getting-started/02-installation.md b/src/content/docs/getting-started/02-installation.md deleted file mode 100644 index 71246c0..0000000 --- a/src/content/docs/getting-started/02-installation.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Installation -description: Step-by-step guide to installing OtterScale. ---- - -Follow the steps below to install and configure OtterScale. - -## Installation Process - -### 1. Start Services - -Run the following command to start the necessary services using Docker Compose: - -```bash -docker-compose up -d -``` - -### 2. Configure Installation - -Create an `install.cfg` file with the required configuration. You can use the following template: - -```bash title="install.cfg" -## MAAS DHCP Range IP -MAAS_DHCP_START_IP="192.168.197.216" -MAAS_DHCP_END_IP="192.168.197.219" - -## OtterScale Web IP -OTTERSCALE_WEB_IP="192.168.197.220" -``` - -Ensure that the IP addresses are correctly configured for your network environment. - -### 3. Run Installation Script - -Execute the installation script through the User Interface: - -1. Access the OtterScale UI. -2. Execute the `install.sh` script. diff --git a/src/content/docs/getting-started/02-installation.mdx b/src/content/docs/getting-started/02-installation.mdx new file mode 100644 index 0000000..03f1c8f --- /dev/null +++ b/src/content/docs/getting-started/02-installation.mdx @@ -0,0 +1,45 @@ +--- +title: Installation +description: Step-by-step guide to installing OtterScale. +--- + +import { Steps, Aside } from '@astrojs/starlight/components'; + +Follow the steps below to install and configure OtterScale. + + + +1. **Start Services** + + Run the following command to start the necessary services using Docker Compose: + + ```bash + docker-compose up -d + ``` + +2. **Configure Installation** + + Create an `install.cfg` file with the required configuration. You can use the following template: + + ```bash title="install.cfg" + ## MAAS DHCP Range IP + MAAS_DHCP_START_IP="192.168.197.216" + MAAS_DHCP_END_IP="192.168.197.219" + + ## OtterScale Web IP + OTTERSCALE_WEB_IP="192.168.197.220" + ``` + + + +3. **Run Installation Script** + + Execute the installation script through the User Interface: + + 1. Access the OtterScale UI. + 2. Execute the `install.sh` script. + + diff --git a/src/content/docs/getting-started/03-scope.md b/src/content/docs/getting-started/03-scope.mdx similarity index 91% rename from src/content/docs/getting-started/03-scope.md rename to src/content/docs/getting-started/03-scope.mdx index 8d62583..14b646c 100644 --- a/src/content/docs/getting-started/03-scope.md +++ b/src/content/docs/getting-started/03-scope.mdx @@ -3,6 +3,9 @@ title: Scope description: Manage scopes in OtterScale. --- +import { Steps } from '@astrojs/starlight/components'; +import { Aside } from '@astrojs/starlight/components'; + Scopes allow you to organize your resources and control access. ## Selecting a Scope @@ -64,6 +67,8 @@ Fill in the following information to configure your new scope: Once you have filled in the details, click the **Create** button. The system will perform the following steps automatically: + + 1. **Create Scope**: Initializes the scope record. 2. **Add Machine Tags**: Tags the selected machine. 3. **Commission Machine**: Configures the machine (SSH, networking, storage). @@ -72,4 +77,9 @@ Once you have filled in the details, click the **Create** button. The system wil 6. **Wait for Agent**: Waits for the agent to start on the machine. 7. **Create Node**: Finalizes the node creation with network and storage settings. -You will see a loading indicator and status messages during this process. Once complete, a success message will appear. + + + diff --git a/src/content/docs/guides/install.md b/src/content/docs/guides/install.md index 9d56b89..0b3096f 100644 --- a/src/content/docs/guides/install.md +++ b/src/content/docs/guides/install.md @@ -8,13 +8,16 @@ description: A guide for installing Otterscale. ## System Requirements ### Operating System + - **Ubuntu 24.04 LTS** (Required) ### Hardware Requirements + - **Memory:** Minimum 8 GB RAM - **Disk Space:** Minimum 100 GB available storage ### Network Requirements + - At least one network interface with external internet connectivity - The installation script will check for network bridge `br-otters`: - If the bridge exists, it will be used @@ -27,6 +30,7 @@ The installation process requires access to various external services. Please en ### Canonical Services **TCP Port 443 (HTTPS):** + - api.charmhub.io - api.jujucharms.com - changelogs.ubuntu.com @@ -41,11 +45,13 @@ The installation process requires access to various external services. Please en - contracts.canonical.com **TCP Port 80 (HTTP):** + - images.maas.io ### Snap Package Management **TCP Port 443 (HTTPS):** + - snapcraft.io - api.snapcraft.io - storage.snapcraftcontent.com @@ -57,6 +63,7 @@ The installation process requires access to various external services. Please en ### Ubuntu Package Repositories **TCP Ports 443 and 80 (HTTPS/HTTP):** + - tw.archive.ubuntu.com - archive.ubuntu.com - ports.ubuntu.com @@ -66,6 +73,7 @@ The installation process requires access to various external services. Please en ### GitHub and OtterScale **TCP Ports 443 and 80 (HTTPS/HTTP):** + - otterscale.github.io - otterscale.com - raw.githubusercontent.com @@ -74,11 +82,13 @@ The installation process requires access to various external services. Please en ### Istio Service Mesh **TCP Port 443 (HTTPS):** + - istio.io ### Kubernetes and Container Registries **TCP Port 443 (HTTPS):** + - registry.k8s.io - k8s.gcr.io - ghcr.io @@ -88,6 +98,7 @@ The installation process requires access to various external services. Please en ### Docker Registry **TCP Port 443 (HTTPS):** + - auth.docker.io - auth.docker.com - login.docker.com @@ -102,16 +113,19 @@ The installation process requires access to various external services. Please en ### NVIDIA Container Registry **TCP Port 443 (HTTPS):** + - nvcr.io ### Alternative Container Registries **TCP Port 443 (HTTPS):** + - registry.cn-hangzhou.aliyuncs.com ### HuggingFace Model Repository **TCP Port 443 (HTTPS):** + - huggingface.co - cdn-lfs.huggingface.co - cdn.huggingface.co @@ -119,6 +133,7 @@ The installation process requires access to various external services. Please en ### Red Hat Registries **TCP Port 443 (HTTPS):** + - registry.redhat.io - quay.io - registry.access.redhat.com @@ -126,6 +141,7 @@ The installation process requires access to various external services. Please en ### Helm Chart Repositories **TCP Port 443 (HTTPS):** + - charts.jetstack.io (Cert-manager) - charts.bitnami.com (Bitnami charts) - open-feature.github.io (OpenFeature operator) diff --git a/src/content/docs/introduction.mdx b/src/content/docs/introduction.mdx index 46a7b51..0d99428 100644 --- a/src/content/docs/introduction.mdx +++ b/src/content/docs/introduction.mdx @@ -56,7 +56,7 @@ The platform utilizes Ceph to provide a robust, self-healing storage fabric. Sto ## Next Steps - + Date: Fri, 28 Nov 2025 06:15:30 +0000 Subject: [PATCH 4/7] docs: Enhance scope creation and automated provisioning documentation with structured steps and detailed explanations, and adjust navigation label capitalization. --- src/content/docs/getting-started/03-scope.mdx | 117 ++++++++++++------ 1 file changed, 79 insertions(+), 38 deletions(-) diff --git a/src/content/docs/getting-started/03-scope.mdx b/src/content/docs/getting-started/03-scope.mdx index 14b646c..563f990 100644 --- a/src/content/docs/getting-started/03-scope.mdx +++ b/src/content/docs/getting-started/03-scope.mdx @@ -16,67 +16,108 @@ You can select a scope from the dropdown menu in the navigation bar. This will f To create a new scope, navigate to the Scope management area and click on "Create Scope". A side panel will appear with the creation form. -### 1. Plan Selection + -At the top of the form, you will see the details of the plan associated with the scope you are creating. Different plans support different features: +1. **Select a Plan** -| Feature | Standard | Advanced | Enterprise | -| :--------- | :---------- | :--------- | :--------- | -| Ceph | ✅ | ✅ | ✅ | -| Kubernetes | ✅ | ✅ | ✅ | -| Cluster | ❌ | ✅ | ✅ | -| Node | Single-Node | Multi-Node | Multi-Node | + At the top of the form, you will see the details of the plan associated with the scope you are creating. Different plans support different features: -### 2. Scope Details + | Feature | Standard | Advanced | Enterprise | + | :--------- | :---------- | :--------- | :--------- | + | Ceph | ✅ | ✅ | ✅ | + | Kubernetes | ✅ | ✅ | ✅ | + | Cluster | ❌ | ✅ | ✅ | + | Node | Single-Node | Multi-Node | Multi-Node | -Fill in the following information to configure your new scope: +2. **Configure Scope Details** -#### Scope Name + Fill in the following information to configure your new scope: -- **Label**: Scope Name ● -- **Description**: Enter a unique name for your scope. -- **Input**: Text field (Required). + - **Scope Name**: Enter a unique name for your scope. + - **Machine**: Select the physical machine to assign to this scope. + + - **Storage Devices**: Select the block devices to be used. (Appears after selecting a machine). + + - **Network Configuration** (Optional): + - **Calico CIDR**: The CIDR block for Calico networking (e.g., `192.168.0.0/16`). + - **Virtual IP**: The virtual IP address for the scope (e.g., `192.168.1.1`). -#### Machine Selection +3. **Create Scope** -- **Label**: Machine ● -- **Description**: Select the physical machine to assign to this scope. -- **Input**: Dropdown menu. - - The dropdown lists available machines that are in the `Ready` status. - - Hovering over the info icon next to a machine name displays detailed hardware specifications (CPU, Memory, Storage, System info, etc.). + Once you have filled in the details, click the **Create** button to initiate the creation process. -#### Storage Devices + -- **Label**: Storage Devices ● -- **Description**: Select the block devices to be used by the scope. -- **Input**: Checkboxes. - - This section appears after you select a machine. - - It lists available non-boot block devices. - - Hovering over a device shows its model and capacity. +## Automated Provisioning -#### Network Configuration +After you initiate the creation, the system automatically performs the following steps: -- **Calico CIDR** (Optional): - - **Description**: The CIDR block for Calico networking. - - **Input**: Text field (e.g., `192.168.0.0/16`). -- **Virtual IP** (Optional): - - **Description**: The virtual IP address for the scope. - - **Input**: Text field (e.g., `192.168.1.1`). + -### 3. Creation Process +1. **Create Scope**: Initializes the scope record. -Once you have filled in the details, click the **Create** button. The system will perform the following steps automatically: + This step maps to the Juju `CreateModel` operation. It establishes a new isolated workspace (Model) within the Juju controller. Key actions include: - + - **Namespace Isolation**: Creates a logical boundary for resources, ensuring that applications and machines in this scope do not interfere with others. + - **Environment Configuration**: Sets up model-level configurations, such as APT mirrors for faster package downloads. + - **Access Control**: Automatically injects SSH keys to grant authorized users access to the machines within this scope. -1. **Create Scope**: Initializes the scope record. 2. **Add Machine Tags**: Tags the selected machine. + + This step applies specific tags to the machine in MAAS. Tags are used to: + + - **Mark Ownership**: Associates the machine with the specific scope being created. + - **Reserve Resources**: Prevents other processes from accidentally using this machine while it is being set up. + - **Define Capabilities**: Can be used to indicate specific hardware capabilities or roles (e.g., `compute`, `storage`) required for the node. + 3. **Commission Machine**: Configures the machine (SSH, networking, storage). + + Commissioning is a critical step to verify hardware and prepare it for deployment. It involves: + + - **Hardware Inventory**: Boots an ephemeral OS to scan and record detailed specs (CPU, Memory, Disks, NICs). + - **Health Checks**: Runs scripts to test hardware functionality (Disk I/O, Memory, IPMI/BMC). + - **Configuration**: Sets up out-of-band management (BMC/IPMI) and registers network/storage interfaces. + - **Status Change**: On success, the machine becomes `Ready` for deployment. On failure, it is marked as `Failed commissioning` for troubleshooting. + 4. **Wait for Ready**: Waits for the machine to report a `Ready` status. + + The `Ready` status is mandatory before any further actions can be taken. It confirms that: + + - Commissioning has completed successfully. + - The machine is free and available in the pool. + - It is eligible to be allocated and deployed with an operating system. + Attempting to deploy a machine that is not `Ready` (e.g., still commissioning or in a broken state) will fail. + 5. **Create Machine**: Associates the machine with the scope. + + This step executes the Juju `AddMachines` operation. It registers the specific physical machine (from MAAS) into the Juju controller. This action triggers: + + - **Provisioning**: Juju instructs MAAS to deploy the operating system (e.g., Ubuntu) onto the machine. + - **Agent Installation**: Once the OS is running, the Juju Agent is installed, allowing Juju to manage the machine as a node. + 6. **Wait for Agent**: Waits for the agent to start on the machine. + + This step monitors the Juju Agent status until it reports as `started`. This signifies that: + + - The OS installation is complete and the machine has booted. + - The Juju Agent is running and has successfully connected to the Juju Controller. + - The node is now online and ready to accept software deployments (Charms). + 7. **Create Node**: Finalizes the node creation with network and storage settings. + This is the final orchestration step where the actual software stack is deployed. It performs the following actions: + + - **Network Reservation**: Reserves necessary IP addresses for internal services (e.g., Ceph NFS, Kubernetes Load Balancer). + - **Software Deployment**: Deploys and configures the core components: + - **Ceph**: For distributed storage (using the selected OSD devices). + - **Kubernetes**: For container orchestration (configuring Calico networking and Load Balancers). + - **Addons**: Additional system utilities. + - **Observability (COS)**: Monitoring and logging stack. + - **Relation Establishment**: Connects these components together to ensure they work as a cohesive system. +