Install the ThoughtSpot application on offline clusters that use RHEL or OEL

Install ThoughtSpot on RHEL or OEL offline clusters.

Before starting the install, make sure that you completed the pre-installation steps.

In an offline cluster, the hosts cannot connect to the public repositories to download the required packages. Instead, you must download the packages from your organization’s mirror repository to each host. Otherwise, the steps for installing on offline clusters are practically the same as the steps for installing on online cluster.

Before you build the ThoughtSpot cluster and install the ThoughtSpot application on the hosts, you must run the Ansible playbook. The TS Ansible playbook prepares your clusters in the following manner:

  • Ansible installs the required packages: YAML, Python, and R packages; see Packages installed with ThoughtSpot for RHEL and OEL.

  • It creates and configures local user accounts for ThoughtSpot:

    • admin user has full administrative functionality

    • thoughtspot user can load data in the application

  • It installs the ThoughtSpot CLI, tscli.

  • It configures the ThoughtSpot host nodes:

    • checks that customization scripts can execute on the nodes

    • checks that the partitions meet minimum size requirements

Here are the general steps for installing offline:

1. Configure the Ansible Playbook

2. Redirect the mirror repository

2. Run the Ansible Playbook

3. Install ThoughtSpot

Configure the Ansible Playbook

To set up the Ansible, follow these steps:

  1. Download the Ansible tarball you obtained from ThoughtSpot Support to your local machine. Note that you need a specific tarball for the specific version of RHEL or OEL you would like to use. For example, there is a different offline tarball for RHEL 7.x and RHEL 8.x. To review the supported RHEL and OEL versions, refer to RHEL and OEL Deployment.

  2. Download it to your local machine.

  3. Unzip the Ansible tarball, to see the following files and directories on your local machine:

    customize.sh

    This runs as the last step in the preparation process. You can use it to inject deployment-specific customizations, such as enabling or disabling a corporate proxy, configuring extra SSH keys, installing extra services, and so on. By default, this script does nothing.

    hosts.sample

    Ansible inventory file for host configuration.

    prod_image

    This directory contains the ThoughtSpot tools and tscli, the ThoughtSpot CLI binary.

    README.md

    Basic information for the unzipped file

    rpm_gpg

    This directory contains the GPG keys that authenticate the public repository.

    toolchain

    The tools that are necessary to compile the instructions you define in the Ansible Playbook, the source code, into executables that can run on your device. The toolchain includes a compiler, a linker, and run-time libraries.

    ts-new.yaml

    The Ansible Playbook for new installations.

    ts-update.yaml

    The Ansible Playbook for updates.

    ts.yaml
    yum.repos.d

    This directory contains information about the yum repo used by the cluster.

  4. Copy the Ansible inventory file hosts.sample to hosts.yaml, and using a text editor of your choice, update the file to include your host configuration:

    hosts

    Add the IP addresses or hostnames of all hosts in the ThoughtSpot cluster.

    user_uid

    Specify the user ID for the user who will set up the node. The default is 1081.

    If you do not use the default, add values that are not currently in use. To determine what values your system uses already, run the following command:

    cat /etc/passwd | cut -d ":" -f3-4| sort
    user_gid

    Specify the user group ID for the user who will set up the node. The default is 1081.

    If you do not use the default, add values that are not currently in use. To determine what values your system uses already, run the following command:

    cat /etc/passwd | cut -d ":" -f3-4| sort
    username

    Specify the username for the user who will set up the node. The default is admin.

    groupname

    Specify the group name for the group who will set up the node. The default is admin.

    ldap_admin_user

    [optional] One of three parameters required to enable users to use their OpenLDAP admin user to SSH as an admin, instead of using the local ThoughtSpot admin user, which has sudo privileges. Specify the OpenLDAP admin user, in the form example@company.com. You must include all 3 of the LDAP parameters (ldap_admin_user, ldap_server_uri, ldap_server_base), or none of them. If you include 1 or 2, the playbook fails.

    ldap_server_uri

    [optional] One of three parameters required to enable users to use their OpenLDAP admin user to SSH as an admin, instead of using the local ThoughtSpot admin user, which has sudo privileges. Specify the LDAP server uniform resource identifier, in the form ldap://<ldap_server_IP>. You must include all 3 of the LDAP parameters (ldap_admin_user, ldap_server_uri, ldap_server_base), or none of them. If you include 1 or 2, the playbook fails.

    ldap_server_base

    [optional] One of three parameters required to enable users to use their OpenLDAP admin user to SSH as an admin, instead of using the local ThoughtSpot admin user, which has sudo privileges. Specify the LDAP server base distinguished name, in the form dc=<optional_subdomain>,dc=<domain>,dc=<top-level-domain>, such as dc=thoughtspot,dc=com. You must include all 3 of the LDAP parameters (ldap_admin_user, ldap_server_uri, ldap_server_base), or none of them. If you include 1 or 2, the playbook fails.

    ssh_user

    The ssh_user must exist on the ThoughtSpot host, and it must have sudo privileges.

    On-premise deployments

    The ssh_user is the user who runs the playbook, and who is connected to the hosts.

    AWS

    The same as ec2_user.

    GCP

    The ssh_user is the user who runs the playbook, and who is connected to the hosts.

    ssh_private_key

    Add the private key for ssh access to the hosts.yaml file. You can use an existing key pair, or generate a new key pair in the Ansible Control server.

    Run the following command to verify that the Ansible Control Server can connect to the hosts over ssh:

    ansible -m ping -i hosts.yaml all
    is_user_wheel_group

    Specifies if the administrator user should be added to the wheel group. The default is true. If you specify false, the administrator user is not added to the wheel group.

    ssh_public_key

    Add the public key to the ssh authorized_keys file for each host, and add the private key to the hosts.yaml file. You can use an existing key pair, or generate a new key pair in the Ansible Control server.

    Run the following command to verify that the Ansible Control Server can connect to the hosts over ssh:

    ansible -m ping -i hosts.yaml all
    extra_admin_ssh_key

    (Optional) An additional or extra key may be required by your security application, such as Qualys, to connect to the hosts.

    http(s)_proxy

    If the hosts must access public repositories through an internal proxy service, provide the proxy information.

    This release of ThoughtSpot does not support proxy credentials to authenticate to the proxy service.

    minimal_sudo_install

    When this is defined, TS disables certain functionality to avoid making additional sudo calls. This functionality includes the email notification management system, some cluster statistics reporting, and logging of connectivity status between nodes. The default is undefined.

    external_sudo_manager

    When this is configured, ThoughtSpot does not make any changes to the sudoers file, such as adding the administrator user. The user is then responsible for ensuring that the administrator user has the ability to run certain elevated privilege commands. The default is undefined.

    skip_sshd_config

    When this is configured, ThoughtSpot does not make any changes to the sshd configuration of the node. The user must ensure that the MaxSessions value for the administrator user is at least 10. The default is undefined.

    offline

    When this is set, the ansible playbook continues an offline installation.

    skip_yum_update

    When this is defined, the ansible playbook does not attempt to run a blanket yum update to pull the latest packages. The default is undefined.

    no_mail_packages

    When this is defined, ThoughtSpot does not install the mail packages mutt and postfix. This only applies for online installations. The default is undefined.

    skip_time_sync_setup

    When this is defined, ThoughtSpot does not configure time synchronization between nodes using ntp. The user must configure time synchronization using either ntp or chronyd themselves. The default is undefined.

    ts_partition_name

    The extended name of the ThoughtSpot export partition, such as /dev/sdb1.

Redirect the mirror repository

For the cluster hosts to connect to your organization mirror repository, you must redirect the hosts requests to the mirror repository, through the DNS.

Alternatively, you can manually update the repository URLs in the yum.repos.d file.

Run the Ansible Playbook

First, to allow installation of the Yum, Python, and R packages, you must run the run_offline script on your local machine. Run the following command on all nodes:

run_offline.sh

Now you can run the Ansible Playbook from your local machine by entering the following command:

ansible-playbook -i hosts.yaml ts.yaml

As the Ansible Playbook runs, it will perform these tasks:

  1. Trigger the installation of Yum, Python, and R packages.

  2. Configure the local user accounts that the ThoughtSpot application uses

  3. Install the ThoughtSpot CLI

  4. Configure all the nodes in the ThoughtSpot cluster:

    • Format and create export partitions, if they do not exist

    • Format the data disks

Prepare disks

After the Ansible Playbook finishes, run the prepare_disks script on every node. You must run this script with elevated privileges, either with sudo or as a root user. Specify the data drives by adding the full device path for all data drives, such as /dev/sdc, after the script name. Separate data drives with a space.

Run the prepare_disks script, either with sudo or as a root user:

Run prepare_disks with sudo

  1. Switch to the admin user:

    su admin
  2. Run the prepare_disks script.

    sudo /usr/local/scaligent/bin/prepare_disks.sh /dev/sdc /dev/sdd

Run prepare_disks as a root user

  1. Run the prepare_disks script.

    sudo su
    /usr/local/scaligent/bin/prepare_disks.sh --username <admin user> /dev/sdc /dev/sdd

Install the ThoughtSpot cluster and the application

Refer to the ThoughtSpot documentation for the detailed steps to install the ThoughtSpot cluster for each deployment platform:

Follow these general steps to install ThoughtSpot on the prepared hosts:

  1. Connect to the host as an admin user.

  2. Download the release artifact from the ThoughtSpot file sharing system.

  3. Upload the release artifact to your organization’s mirror repository.

  4. Run the tscli cluster create command. This script prompts for user input.

  5. [Optional - RHEL only, 7.2.1 and later] Upgrade Python version. ThoughtSpot’s default Python version for RHEL is 3.6; you can upgrade RHEL clusters to 3.9. Refer to Upgrade your Python version.

  6. Check the cluster health by running health checks and logging into the application.