Playbooks | 3.x | Upgrade | Run#

Important

This page describes steps for upgrading existing installations.
For instructions to perform new installations, see Playbooks | 3.x | Install instead.

This section contains instructions for running the playbooks to upgrade EclecticIQ Intelligence Center (EIQ IC).

Supported:

  • Upgrade EIQ IC 2.14 to 3.x

  • Upgrade EIQ IC 3.x to 3.y

If you are running an EIQ IC version older than 2.14, you must upgrade to 2.14 before following instructions here. See Upgrade EIQ IC (2.x only)

Requirements#

To upgrade EIQ IC using these playbooks, fulfill these requirements.

Upgrade operating system

When upgrading an EclecticIQ Intelligence Center (EIQ IC) instance on hosts running older operating systems (such as CentOS 7 or RHEL 7), you must upgrade the operating system to Rocky Linux 8 or 9, or RHEL 8 or 9 before attempting to upgrade to EIQ IC 3.0 and newer.

See:

Control node:

  • You should have an existing .env, ansible.cfg, and an inventory file appropriate for your deployment.

    If you do not, reconstruct them with the instructions for node preparation.

Managed nodes:

Update .env#

Caution

You may have used an .envrc file in earlier versions of the installation playbooks. Rename it to .env or create an .env file using instructions in Set up .env.

Update this .env file to set the target EIQ IC version to install:

# Recommend that you generate passwords with the below command:
# printf '~^'; cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

# Password requirements: at least 10 chars with at least one uppercase, one lowercase, one number, and one special character.
# https://docs.eclecticiq.com/ic/current/install-configure-upgrade/rocky/install-the-ic/before-you-start/#user-name-and-password

export EIQ_IC_VERSION="3.5"

After setting these values, make sure to reload your .env file:

source .env

Carrying out the upgrade#

You can upgrade your EIQ IC deployment by running the provided installation script. This is the preferred, recommended upgrade method.

You could also run all playbooks individually (discouraged). This is more labor-intensive and error-prone.

Excute installation script#

To upgrade EIQ IC, use the /ic-playbooks/utils script to run all the required playbooks in order.

Install with Ollama host

If you’ve procured an Ollama node and entered its variables in the .env file for this installation, this script will run the playbooks that configure that node as a part of the deployment you chose.

To use the provided script, on your controle node, run:

./utils/deploy-from-inventory.sh

(Discouraged) Execute individual playbooks#

Use script instead

We recommend running the installation script instead of running individual playbooks.

Back up Kibana configuration and dashboards

You must run the Kibana backup playbook (pb-backup_kibana.yml) before attempting an upgrade to preserve custom configuration and dashboards.

Before following instructions here, you must make sure that:

  • Kibana and Elasticsearch are running

  • Control node must be able to connect to Kibana and Elasticsearch

To back up Kibana configuration and dashboards,

  1. Make sure your .env file is loaded:

    source .env
    
  2. Run the pb-backup_kibana.yml playbook. Kibana and Elasticsearch must be running.

    ansible-playbook -i inventories/<inventory_file.yml> pb-backup_kibana.yml
    

When the backup completes, make sure that ic-kibana-objects.ndjson:

  • Is successfully created in your backup directory on the control node.

  • Contains expected contents (e.g. named custom dashboards).

Remove Neo4j

If upgrading from EIQ IC 2.14, you may need to remove Neo4j from an existing host.

To do this:

  1. Edit inventories/ic-remove-neo4j.yml.

    This is a separate inventory file for the pb-remove_neo4j.yml playbook.

    Set neo4j-node-01.ansible_host to the network address of the host to remove Neo4j from.

  2. From the control node, run the pb-remove_neo4j.yml playbook with the above inventory file:

    ansible-playbook -i inventories/ic-remove-neo4j.yml pb-remove_neo4j.yml
    
Run the upgrade

After completing all the above sections, run the playbooks.

Tip

A playbook run is successful if has 0 failed tasks.

The following is an example PLAY RECAP from a successful (failed=0) single node playbook run:

PLAY RECAP ******************************************************************************************
application-node           : ok=64   changed=44   unreachable=0    failed=0    skipped=12   rescued=0    ignored=0   
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

See the ansible-playbook command and option example in the dropdown below:

Usage: Ansible playbook command and options
ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> <pb-playbook.yml>

Option

Description

--tags=all,logstash

(Optional) Use --tags=all,logstash to include Logstash. You can omit this option entirely to install EclecticIQ Intelligence Center without Logstash.

-i inventories/<inventory_file.yml>

Specify the path to the inventory file that matches your chosen deployment.

<pb-playbook.yml>

This is the playbook to run.

Run the playbooks in the sequence specified in the dropdown below:

Playbook sequence

Idempotence

These playbooks here are idempotent. Repeated runs have no effect.

If there is nothing for a playbook to do (e.g. tasks do not apply to deployment type), running it has no effect.

  1. Load .env. Run:

    source .env
    
  2. Prepare nodes (pb-pre_requisites.yml). Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-pre_requisites.yml
    
  3. Stop services before proceeding with the upgrade or installation process. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-stop_services.yml
    
  4. Install foundational components and base configuration. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-install-foundations-and-base.yml
    
  5. Upgrade Elasticsearch data. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-es-upgrade-data.yml
    
  6. Install Intelligence Center components. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-install_intelligence_center.yml
    
  7. Upgrade PostgreSQL database. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-pg_upgrade.yml
    
  8. Start PostgreSQL replication. Run:

    Only for multi-node

    Skip this if deploying a configuration with only a single PostgreSQL node.

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-pg_start_replication.yml
    
  9. Configure pgpool for PostgreSQL. Run:

    Only for PGPool

    Skip this if deploying a configuration without PGpool.

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-pgpool.yml
    
  10. Start services after upgrade or installation. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-start_services.yml
    
  11. Migrate databases to the new schema/version. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-migrate_databases.yml
    
  12. Configure Intelligence Center after installation. Run:

    lansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-configure_intelligence_center.yml
    
  13. Perform post-installation tasks. Run:

    ansible-playbook --tags=all,logstash -i inventories/<inventory_file.yml> pb-post.yml
    
  14. Reboot your managed node(s) after pb-post.yml completes.

Important

If you are adding Elasticsearch or PostgreSQL nodes to your deployment, you must:

  1. Migrate your existing inventory file to an inventory file for your deployment size.

  2. Run the playbooks for initializing PostgreSQL clusters, as instructed in Playbooks | 3.x | Install | Run.

Restore Kibana configuration and dashboard

Run the Kibana restore playbook to restore Kibana configuration and dashboards. If you have any custom Kibana configuration or dashboards, you must run this to make them available.

Before following instructions here, you must make sure that:

  • Kibana and Elasticsearch are running

  • Control node must be able to connect to Kibana and Elasticsearch

  • ic-kibana-objects.ndjson must be present in the backup destination directory on your control node.

To restore up Kibana configuration and dashboards,

  1. Make sure your .env file is loaded:

    source .env
    
  2. Run Kibana restore playbook: pb-restore-kibana.yml

    The playbook expects ic-kibana-objects.ndjson, to be in the backup destination directory on the control node.

    ansible-playbook -i inventories/ic-test-small.yml pb-restore-kibana.yml
    

After upgrade#

Save and version control playbook configuration#

Save and version control your playbook configuration. Playbook configurations document your deployment, and can be used to administer and upgrade your EclecticIQ Intelligence Center instance.

Warning

Do not store credentials in version control.

Refresh your browser#

Your browser might have cached chunks of the old version of your platform. This may cause the follow errors when booting up the platform:

  "Failed to fetch dynamically imported module",
  "Importing a module script failed",
  "Failed to load resource: the server responded with a status of 401",
  "error loading dynamically imported module"

Doing a hard refresh clears your browser’s caches and prevents these errors from cropping up. Check below to see how to do a hard reset on your browser on your OS.

Chrome

On Windows/Linux: Hold the Ctrl key and press F5.
On Mac OS: Hold down the ⌘ Cmd and ⇧ Shift keys, then press R.

Firefox

On Windows/Linux: Hold down the Ctrl and ⇧ Shift keys, then press R.
On Mac OS: Hold down the ⌘ Cmd and ⇧ Shift keys, then press R.

Safari

On Mac OS: Hold down the ⌘ Cmd and Option keys, then press E.

Microsoft Edge

On Windows/Linux: Hold the Ctrl key and press F5.