# Compute node (HCI) Installation Guide

> - Compute node (HCI) play a roles as stack up CPUs & RAMs to CubeCOS Hyperconverged Infrastuctures' compute resources & memory.
- Compute node with additional SSD & HDD drives will be stacked into the storage pool as a Compute-Storage node

## Compute node (HCI) overview {#compute-node-hci-overview}

- Compute node (HCI) play a roles as stack up CPUs & RAMs to CubeCOS Hyperconverged Infrastuctures' compute resources & memory.
- Compute node with additional SSD & HDD drives will be stacked into the storage pool as a Compute-Storage node

:::info

Before getting started with Compute node (HCI) installation you will need to prepare a control converged node or control node. Make sure to read through these requirements carefully as a successful deployment of Compute node (HCI) installation depends on it.

:::

### Dependency {#dependency}

- Control Converged node or Control node
- [optional] Storage node

## Hardware recommendation {#hardware-recommendation}

For detailed hardware requitements and recommendation, reference the [Hardware Requirement](../../installation/hardware-requirements)

## Installation {#installation}

### Choose a setup options - Wizard {#choose-a-setup-options---wizard}

```bash
    First Time Setup Options:
    1: Wizard
    2: Advanced
    Enter index: 1
```

### Accept the EULA {#accept-the-eula}

```bash
    -- Welcome --
    Welcome to the Cube Appliance setup wizard.
    Using this setup wizard, you can:
    * View and accept the Software License Agreement
    * Set the appliance password
    * View and configure networking

    Press Enter to continue.

    -- Software License Agreement --
    Currently selected language: English
    1: Select language for license display
    2: Read Bigstack terms
    3: Read non-Bigstack terms
    4: Proceed to acceptance

    Select option: 4

    By choosing 'I agree,' you agree that (1) you have had the opportunity to
    review the terms of licenses presented above and (2) such terms govern this
    transaction. If you do not agree, choose 'I do not agree'.
    1: I agree
    2: I do not agree

    Select option: 1
```

### Configure hostname {#configure-hostname}

:::warning

A valid hostname must be in lowercase and cannot contain special characters (!@#$%^&\*()), underscores (\_), or spaces.

:::

A valid hostname must:

- Contain only lowercase letters (a-z), numbers (0-9), and hyphens (-)
- Be 64 characters or less in length
- Be unique within the network
- Must start with a letter
- Not be entirely numeric

```bash
    -- Host Name Configuration --
    Host name: unconfigured
    1: Change the host name
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: 1

    - Change the Host Name -
    Enter the new host name: compute01

    -- Host Name Configuration --
    Host name: compute01
    1: Change the host name
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### [Optional] Configure network bonding {#optional-configure-network-bonding}

Network bonding is optional and only required for deployments that require network redundancy. To better understand network configuration options and deployment scenarios, refer to the [network configuration](../../category/network) section.

Skip to [Configure IP address - IF.1](#configure-the-ip-address) if bonding and VLAN are not required.

:::info

If a network cable is connected, the `[Speed]` column will display the link status (e.g., 1000Mb/s, 10Gb/s). If no cable is detected, it will show `N/A`.

:::

:::warning

Do not use `bond0`, `bond1`, `bondx`, or `bd0` as bonding interface names. These names are reserved or may conflict with system defaults.

:::

```bash
    -- Network Bonding Settings --
    ---------------------------------------------------
    Label   BusID/Slaves     Driver  State    Speed
    ---------------------------------------------------
        IF.1   0000:04:00.0      r8169     UP    1000F
    ---------------------------------------------------
    1: Display policy
    2: Configure network bonding
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### [Optional] Create VLAN {#optional-create-vlan}

```bash
    -- VLAN Settings --
    ---------------------------------------------------
    Label   BusID/Slaves     Driver  State    Speed
    ---------------------------------------------------
        IF.1   0000:04:00.0      r8169     UP    1000F
    ---------------------------------------------------
    1: Display policy
    2: Configure vlan network
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### Configure the IP address {#configure-the-ip-address}

```bash
    -- Networking Settings --
    ---------------------------------------------------
    Label   BusID/Slaves     Driver  State    Speed
    ---------------------------------------------------
        IF.1   0000:04:00.0      r8169     UP    1000F
    ---------------------------------------------------
    1: Display device status
    2: Display policy
    3: Configure IF.1
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: 3

    - Configure IF.1 -
    Enter the IPv4 address: 10.32.2.241
    Enter the IPv4 subnet mask: 255.255.0.0
    Enter the IPv4 default gateway: 10.32.0.254

    -- Networking Settings --
    ---------------------------------------------------
    Label   BusID/Slaves     Driver  State    Speed
    ---------------------------------------------------
        IF.1   0000:04:00.0      r8169     UP    1000F
    ---------------------------------------------------
    1: Display device status
    2: Display policy
    3: Configure IF.1
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### Setting DNS {#setting-dns}

```bash
    -- DNS Configuration --
    No DNS servers configured.
    1: Set DNS server 1
    2: Set DNS server 2
    3: Set DNS server 3
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: 1

    - Set DNS Server 1 -
    Enter the DNS server IP address: 1.1.1.1

    -- DNS Configuration --
    DNS server 1: 1.1.1.1
    1: Set DNS server 1
    2: Set DNS server 2
    3: Set DNS server 3
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### Setting the timezone {#setting-the-timezone}

:::info

Set the same timezone on all nodes within the cluster to ensure consistent timekeeping. This is critical for proper coordination of services and log synchronization across the cluster.

:::

```bash
    -- Time Configuration --
    Time configuration changes are applied immediately.
    Time Zone: America/New_York
    Date: 01/02/2023
    Time: 14:00:37
    1: Change the time zone
    2: Change the date
    3: Change the time
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: 1

    - Change the Time Zone -
    Select a continent or ocean:
    1: Africa
    2: Americas
    3: Asia
    4: Atlantic Ocean
    5: Australia
    6: Europe
    7: Pacific Ocean
    8: Etc
    Enter index: 3
    Select a timezone:
    1: (UTC+02:00) Asia/Jerusalem
    2: (UTC+03:00) Asia/Kuwait
    3: (UTC+03:00) Asia/Riyadh
    ~~~~~~
    30: (UTC+08:00) Asia/Taipei
    ~~~~~~
    39: (UTC+12:00) Asia/Kamchatka
    Enter index: 30

    -- Time Configuration --
    Time configuration changes are applied immediately.
    Time Zone: Asia/Taipei
    Date: 01/02/2023
    Time: 14:00:37
    1: Change the time zone
    2: Change the date
    3: Change the time
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### Configure the compute role {#configure-the-compute-role}

```bash
    -- Cube Role --
    Current role: undef
    Current Management: IF.1
    Current Domain/Region: default/RegionOne
    Current Cube Secret Seed: N/A
    1: Change role
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: 1

    - Change Role -
    Select a role:
    1: control
    2: compute
    3: storage
    4: control-converged
    5: edge-core
    6: moderator
    Enter index: 2
    Specify controller hostname: control
    Specify controller IP: 10.32.2.240
    Specify external IP/domain [optional]:
    Specify management interface: IF.1
    Specify provider interface: IF.1
    Specify overlay interface: IF.1
    Specify storage interface [frontend(,backend)]: IF.1
    Specify region ("RegionOne"):
    Specify cluster secret seed: bigstack

    -- Cube Role --
    Current role: compute
    Current Controller: control(10.32.2.240)
    Current External IP/Domain: N/A
    Current Management: IF.1
    Current Provider: IF.1
    Current Overlay: IF.1
    Current Storage: IF.1
    Current Domain/Region: default/RegionOne
    Current Cube Secret Seed: bigstack
    1: Change role
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### Configure High Availability {#configure-high-availability}

```bash
    -- Cube High Availability --
    Current HA setting: disabled
    1: Change HA
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: 1

    - Change HA -
    High Available Cube:
    1: Yes
    2: No
    Enter index: 1
    Specify control group hostname [HOST,HOST,...]: cc1,cc2,cc3
    Specify control group address [IP,IP,...]: 10.32.2.241,10.32.2.242,10.32.2.243

    -- Cube High Availability --
    Current HA setting: enabled
    Current Control Group:
    cc1(10.32.2.241),cc2(10.32.2.242),cc3(10.32.2.243)
    1: Change HA
    x: Exit
    p: Previous screen
    n: Next screen

    Select option: n
```

### Beginning policy application and cluster join {#beginning-policy-application-and-cluster-join}

:::info

Ensure all control or control-converged nodes have successfully accepted and applied policies before initiating configuration acceptance on any compute nodes.

:::

```bash
    Summary
    Password has not been modified.
    Host name: compute01
    IF.1
        Default interface.
        IPv4 Mode: Manual
        IPv4 Address: 10.32.2.241
        IPv4 Netmask: 255.255.0.0
        IPv4 Gateway: 10.32.0.254
        IPv6 Mode: Automatic
    DNS server 1: 1.1.1.1
    Time Zone: Asia/Taipei
    Date: 01/02/2023
    Time: 14:07:29
    Role: compute
    Controller: control(10.32.2.240)
    External IP/Domain: N/A
    Management: IF.1
    Provider: IF.1
    Overlay: IF.1
    Storage: IF.1
    Domain/Region: default/RegionOne
    Cube Secret Seed: bigstack
    High Availability: disabled
    1: Accept the configuration
    2: Cancel the configuration
    3: Modify the configuration

    Select option: 1
    Applying policy changes.
```

The time required to apply the policy may vary depending on your hardware performance.

Monitor the console output. A success message will appear once the policy application is complete and the node is ready for the next step.

:::tip[Verify policy success in the console with]

Policy changes were successfully applied.

:::
