> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ocient.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ocient System Bootstrapping

export const OcientDataIntelligencePlatform = "OcientAIQ™ Unified Data Platform";

export const Ocient = "Ocient®";

The {Ocient} System runs the bootstrapping process one time per node. This process establishes the node identity, configures networking, and accepts nodes into the system.

The `/var/opt/ocient/bootstrap.conf` file controls the initial configuration of each node. The system uses this file only when the node initially starts.

## Validate the System Before Bootstrapping

<Info>
  The following steps assume a basic {OcientDataIntelligencePlatform} configuration, where every node has a single network interface.

  To verify your system before the bootstrapping process:

  * Check with your systems administrator to ensure that you meet the [Operating System Configuration](/operating-system-configuration) requirements. Before bootstrapping, your system must meet the requirements described in the [Apply Required Kernel Settings](/operating-system-configuration) and [Prepare NVMe Drives](/operating-system-configuration) sections.
  * You can run a system check to validate the compliance of hardware, nodes, and the configuration for the Ocient System. For details, see [Checking System Configuration Before Bootstrapping](/checking-system-configuration-before-bootstrapping).
</Info>

## Initial Configuration

The system automatically initializes the first node bootstrapped in the system with the SQL and Administrator roles. Choose a node to serve as a SQL Node. This node is the initial node in the system. The hardware for each node type differs, so ensure that the node you select is intended for a SQL Node.

For new clusters, if you do not define the configuration for the SQL Nodes in a connectivity pool, the Ocient System assigns each SQL Node to their own unique connectivity pool named `<sql_node_name>_default`, where `<sql_node_name>` is the name of the SQL Node. However, the most common configuration of an Ocient System has all SQL Nodes in one connectivity pool.

For an example of adding SQL Nodes to a connectivity pool, see [CREATE CONNECTIVITY POOL](/cluster-and-node-management#create-connectivity_pool). Change or troubleshoot the default configuration using the instructions in [Manage the Network Configuration of an Ocient System](/manage-the-network-configuration-of-an-ocient-system).

## Ocient System Bootstrapping Process

If you meet the system prerequisites, you can begin bootstrapping your Ocient System.

The bootstrapping process consists of these steps:

1. [Bootstrap the First Node](#bootstrap-the-first-node)
2. [Bootstrap the Remaining Nodes](#bootstrap-the-remaining-nodes)

<Steps>
  <Step title="Bootstrap the First Node">
    #### Bootstrap the Node

    Connect to the initial SQL Node with the username and password of your server and the IP address of your node. This example connects as the administrator `admin` to the IP Address `10.10.10.10`.

    ```shell Shell theme={null}
    ssh admin@10.10.10.10
    ```

    Use your preferred text editor with `sudo` to create the `/var/opt/ocient/bootstrap.conf` file as root with these contents.

    `/var/opt/ocient/bootstrap.conf` **example**

    ```yaml YAML theme={null}
    initialSystem: true
    ```

    Start the database.

    ```shell Shell theme={null}
    sudo systemctl start rolehostd
    ```

    Verify that the node and the service are active by executing this status command.

    ```shell Shell theme={null}
    systemctl status rolehostd

    rolehostd.service - Rolehostd daemon startup
         Loaded: loaded (/etc/systemd/system/rolehostd.service; enabled; vendor preset: enabled)
         Active: active (running) since Wed 2022-01-26 23:31:36 UTC; 7s ago
         ...
    ```

    If the `rolehostd` service is running, you can also check the Ocient logs on your node. Search and ensure there are no \[ERROR] log messages.

    ```shell Shell theme={null}
    tail -f /var/opt/ocient/log/rolehostd.log
    ```

    #### Verify Connection to the SQL Node

    At this point, you have a running database with a single node. You should be able to connect to the database using [Connect Using JDBC](/connect-using-jdbc) or [Connect Using pyocient](/connect-using-pyocient) and execute commands.

    Every new system starts with a `system` database. To connect to a new system, use the username and password configured in the `bootstrap.conf` file or the username `admin@system` and password `admin` if none was provided.

    For example, assume your node named `sql0` has an IP address of `10.10.0.1`. Use the JDBC driver CLI to connect with this connection string.

    ```shell Shell theme={null}
    connect to jdbc:ocient://10.10.0.1:4050/system user "myuser@system" using "mypassword";
    ```

    <Info>
      See the [JDBC Manual](/jdbc-manual) for details on using the JDBC driver.
    </Info>

    To see the roles running on the single node, execute this query.

    ```sql SQL theme={null}
    select name, operational_status, software_version, array_agg(service_role_type)
            from sys.node_status as ns
            left join sys.nodes as n  on ns.node_id = id
            left join sys.service_roles as sr on sr.node_id = n.id
            group by name, operational_status,software_version;
    ```

    The initial node should be listed as running the `sql`, `admin`, `health`, and `operatorvm` roles. If all of these roles are present and the node is Active, you can proceed to the next step to bootstrap the remaining nodes.
  </Step>

  <Step title="Bootstrap the Remaining Nodes">
    Performing the bootstrapping process on the remaining nodes is identical on all nodes. The remaining nodes can be bootstrapped in any order.

    On each node, log in using SSH and use your text editor with `sudo` to create the file `/var/opt/ocient/bootstrap.conf` that contains this text by replacing `<FIRST_NODE_IP_ADDRESS>` with the IP address of the initial node you created in Step 1.

    `/var/opt/ocient/bootstrap.conf` **example**

    ```yaml YAML theme={null}
    adminHost: <FIRST_NODE_ADDRESS>
    ```

    `<FIRST_NODE_IP_ADDRESS>` is the DNS name or IP address of the initial node.

    <Info>
      You can obtain the IP Address of the initial node by executing `ifconfig` on that node.
    </Info>

    <Info>
      If the password for the system administrator has changed, set the correct username `adminUserName` and password `adminPassword` in the bootstrap configuration file `bootstrap.conf`.
    </Info>

    On each node, start the database.

    ```shell Shell theme={null}
    sudo systemctl start rolehostd
    ```

    <Warning>
      When you replace Foundation Nodes, the Ocient System removes the prior node after the creation of the new node. Some queries of the system catalog tables might not return results until the prior node is removed.
    </Warning>

    At this point, all the remaining nodes are not configured with any roles. After all nodes have been started, you should see them when you execute this query with only the `health` role listed. This query uses the `sys.node_status`, `sys.nodes`, and `sys.service_roles` system catalog tables to retrieve node information for the node name, operation status, version, and all service role types. The query uses the [ARRAY\_AGG](/aggregate-functions#array_agg) function to retrieve the service role type for all rows.

    ```sql SQL theme={null}
    SELECT name, operational_status, software_version, array_agg(service_role_type)
        FROM sys.node_status AS ns
        LEFT JOIN sys.nodes AS n ON ns.node_id = id
        LEFT JOIN sys.service_roles AS sr ON sr.node_id = n.id
        GROUP BY name, operational_status,software_version;
    ```
  </Step>
</Steps>

### More Bootstrapping Options

For options on bootstrapping your Ocient System, see [Node Bootstrapping Reference](/node-bootstrapping-reference).

### Next Step

When you have completed the bootstrapping process, you can proceed to the [Ocient Application Configuration](/ocient-application-configuration) page to finish configuring Ocient.

## Related Links

[Installation Reference](/installation-reference)

[Install an Ocient System](/install-an-ocient-system)

##
