Creating an Offline Repository

Creating an Offline Repository for pgEdge in an Airgapped Environment

For installations in airgapped environments, the pgEdge platform provides a package you can use to create an offline repository. The package bundles the supported software required to create a repository into a single .tgz file, enabling seamless setup without direct internet access by the eventual host of the repository. This guide outlines the steps required to use the package to set up and manage a pgEdge offline repository in this environment. The high-level process includes:

Downloading the pgEdge Package: Obtain the package from an internet-connected machine and transfer it to the airgapped environment, and configure a local web server to host the repository.

Upgrading the Offline Repository: Check for newer versions, download the updated package, and restart the local repository server with the latest files.

Updating and Upgrading the pgEdge CLI: Refresh metadata and upgrade the pgEdge command line interface (CLI) on each node.

Upgrading Platform Components: Upgrade individual components (for example, Spock or Snowflake) to their latest versions using the CLI.

The following sections provide detailed instructions, including commands and configuration steps, for each part of the process.

Downloading the pgEdge Package

Use a system with internet connectivity to download the latest version of the pgEdge package. The following fixed redirect URLs always point to the latest version of the .tgz file:

x86_64/amd64 architectures:

https://downloads.pgedge.com/platform/repos/stable/pgedge-latest-amd.tgz

Arm64 architectures:

https://downloads.pgedge.com/platform/repos/stable/pgedge-latest-arm.tgz

Choose the URL that matches your target system's architecture.

ℹ️

When using command-line tools like wget to download the .tgz file, include the --content-disposition flag to handle the content-disposition headers correctly. This ensures the file retains its proper versioned filename (for example, pgedge-24.10-10-amd.tgz):

wget --content-disposition https://downloads.pgedge.com/platform/repos/stable/pgedge-latest-amd.tgz

After downloading the pgEdge package, move the .tgz file to the airgapped machine that will host the offline repository.

Configuring the pgEdge Offline Repository

The next steps demonstrate how to set up a local pgEdge offline repository on localhost. The supplied startLOCAL and stopLOCAL scripts use Python's built-in http.server module to start a webserver serving the repository on port 8000. If you intend to host this repository through a different web server, or run it on a custom IP/port, please make the necessary adjustments to align with your specific environment.

Use the following command to extract the downloaded tgz:

tar xvf pgedge-24.10-10-amd.tgz

This command extracts the package to a new pgedge directory.

Navigate to the pgedge/data/conf/cache directory within the extracted files. This directory contains all the platform packages and includes scripts to facilitate running a web server directly from this location.

Invoke the following command to start the webserver:

./startLOCAL

This command starts the webserver in the current directory and display the URL of the repository (for example, REPO=http://0.0.0.0:8000).

Then, you can configure your pgEdge cluster.

Upgrading an Offline pgEdge Repository

The steps that follow outline how to upgrade your existing repository to a newer version of pgEdge software. The steps in this section explain how to update the repository itself, the CLI, and supported components like Spock. These instructions assume the repository is hosted on the same machine as your node; adjust the paths if your setup uses a shared system or a custom web server.

Checking the Latest Version of the Offline Repository

Before upgrading or downloading the repository, confirm that you are upgrading to the most recent version using the .version files provided.

x86_64/amd64 Architectures:

https://downloads.pgedge.com/platform/repos/stable/pgedge-latest-amd.version

Arm64 Architectures:

https://downloads.pgedge.com/platform/repos/stable/pgedge-latest-arm.version

Performing a Repository Upgrade:

Navigate to pgedge/data/conf/cache in the older offline repository and stop the webserver:

./stopLOCAL

Refer to the instructions in Downloading the pgEdge Package to download the package that corresponds to your architecture.

Extract the latest downloaded package:

tar xvf pgedge-24.10-10-amd.tgz

This command extracts the content to a new pgedge directory.

Navigate to pgedge/data/conf/cache in the extracted directory and start the webserver:

./startLOCAL

When the webserver starts, the command will display the URL of the repository (which should be the same as before: REPO=http://0.0.0.0:8000).

Upgrading pgEdge Command Line Interface

To upgrade the pgEdge Command Line Interface (CLI), perform the following steps on each node that uses the older version:

  1. Browse into your pgEdge installation directory and ensure you are pointing to the correct repository:

./pgedge info

This command will display the version (for example, 24.10.8) and the repository that the CLI is pointing to.

  1. Refresh the metadata to view available component upgrades:

./pgedge update

Please note that this command will only update the metadata and display information about available components (installed version and upgrade versions available); to upgrade, you must run the upgrade script.

  1. Run the CLI upgrade script:

python3 -c "$(curl -fsSL $REPO/upgrade-cli.py)"

This script will upgrade the CLI only. After the upgrade, the command displays the new CLI version that you’ve upgraded to and all available upgrades for the component.

  1. Validate the upgraded cli version (24.10-10):

./pgedge info

Upgrading pgEdge Platform Components

Use the following command to list all supported components and available versions:

./pgedge um list

To upgrade a platform component such as the spock extension, invoke the upgrade command for corresponding component:

./pgedge um upgrade spock

Each listed component can be similarly upgraded using the component name displayed by the pgedge um list command.