From f548f68f99561a9d4a7daa430ba97208f1110b5b Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Sun, 24 Aug 2025 20:54:18 -0500 Subject: [PATCH 01/11] first lock-down pass --- .../air-gapped/configure-software.sh | 9 ++ .../air-gapped/debian/offline-install.sh | 31 ++++++ .../air-gapped/debian/online-dependencies.sh | 17 +++ .../debian/online-download-predependencies.sh | 35 ++++++ .../air-gapped/debian/online-download.sh | 31 ++++++ docs/installation/air-gapped/dynamic_page.md | 102 ++++++++++++++++++ docs/installation/air-gapped/index.md | 30 ++++++ docs/installation/air-gapped/install-agent.sh | 14 +++ .../air-gapped/redhat/offline-install.sh | 50 +++++++++ .../air-gapped/redhat/online-dependencies.sh | 12 +++ .../air-gapped/redhat/online-download.sh | 43 ++++++++ mkdocs.yml | 1 + 12 files changed, 375 insertions(+) create mode 100755 docs/installation/air-gapped/configure-software.sh create mode 100755 docs/installation/air-gapped/debian/offline-install.sh create mode 100755 docs/installation/air-gapped/debian/online-dependencies.sh create mode 100755 docs/installation/air-gapped/debian/online-download-predependencies.sh create mode 100755 docs/installation/air-gapped/debian/online-download.sh create mode 100644 docs/installation/air-gapped/dynamic_page.md create mode 100644 docs/installation/air-gapped/index.md create mode 100755 docs/installation/air-gapped/install-agent.sh create mode 100755 docs/installation/air-gapped/redhat/offline-install.sh create mode 100755 docs/installation/air-gapped/redhat/online-dependencies.sh create mode 100755 docs/installation/air-gapped/redhat/online-download.sh diff --git a/docs/installation/air-gapped/configure-software.sh b/docs/installation/air-gapped/configure-software.sh new file mode 100755 index 00000000..44bffeda --- /dev/null +++ b/docs/installation/air-gapped/configure-software.sh @@ -0,0 +1,9 @@ +# configure axon-server +systemctl stop axon-server +vi /etc/axonops/axon-server.yml +systemctl restart axon-server + +# configure axon-dash +systemctl stop axon-dash +vi /etc/axonops/axon-dash.yml +systemctl restart axon-dash diff --git a/docs/installation/air-gapped/debian/offline-install.sh b/docs/installation/air-gapped/debian/offline-install.sh new file mode 100755 index 00000000..f7fe2aba --- /dev/null +++ b/docs/installation/air-gapped/debian/offline-install.sh @@ -0,0 +1,31 @@ +# define installation helper function +function install_dependency() { + service=${1} + + mkdir -p "/var/cache/apt/archives/${service}" + tar xf "${service}.deb.tgz" --directory "/var/cache/apt/archives/${service}" + while ! sudo dpkg -i /var/cache/apt/archives/${service}/*.deb; do + echo "Working through dependencies..." + done +} + +# install axon-dash +install_dependency axon-dash-pdf-predependencies +install_dependency axon-dash-pdf +install_dependency axon-dash + +# install axon-server +install_dependency axon-dash + +# install axon-agent on Cassandra node +install_dependency axon-agent + +# install matching axon-cassandra agent on Cassandra node (choose one) +install_dependency axon-cassandra3.0-agent +install_dependency axon-cassandra3.11-agent +install_dependency axon-cassandra4.0-agent +install_dependency axon-cassandra4.0-agent-jdk8 +install_dependency axon-cassandra4.1-agent +install_dependency axon-cassandra4.1-agent-jdk8 +install_dependency axon-cassandra5.0-agent-jdk11 +install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file diff --git a/docs/installation/air-gapped/debian/online-dependencies.sh b/docs/installation/air-gapped/debian/online-dependencies.sh new file mode 100755 index 00000000..ca5a328c --- /dev/null +++ b/docs/installation/air-gapped/debian/online-dependencies.sh @@ -0,0 +1,17 @@ +# install dependencies +sudo apt-get update +sudo apt-get install -y \ + apt-rdepends \ + dpkg-dev \ + curl \ + gnupg + +# install AxonOps key +curl -L https://packages.axonops.com/apt/repo-signing-key.gpg \ + | sudo gpg --dearmor -o /usr/share/keyrings/axonops.gpg + +# setup AxonOps repository +echo "deb [arch=arm64,amd64 signed-by=/usr/share/keyrings/axonops.gpg]\ + https://packages.axonops.com/apt axonops-apt main" \ + | sudo tee /etc/apt/sources.list.d/axonops-apt.list +sudo apt-get update \ No newline at end of file diff --git a/docs/installation/air-gapped/debian/online-download-predependencies.sh b/docs/installation/air-gapped/debian/online-download-predependencies.sh new file mode 100755 index 00000000..f1d11153 --- /dev/null +++ b/docs/installation/air-gapped/debian/online-download-predependencies.sh @@ -0,0 +1,35 @@ +# create temporary location for downloading packages +mkdir -p "/tmp/downloads/axon-dash-pdf-predependencies" +cd "/tmp/downloads/axon-dash-pdf-predependencies" + +# install predependencies for axon-dash-pdf +services=( + dbus-user-session + libayatana-appindicator1 + libayatana-appindicator3-1 + libdbusmenu-glib4 + libayatana-indicator3-7 + libdbusmenu-gtk3-4 + python3 + libappindicator1 +) +for service in "${services[@]}"; do + # download axon-dash-pdf virtual package predependencies + sudo apt-get download $(\ + sudo apt-rdepends "${service}" \ + | grep -v "^ " \ + | sed 's|debconf-2.0|debconf|' \ + | sed 's|libappindicator1|libayatana-appindicator3-1|' \ + | sed 's|libgcc1|libgcc-s1|' \ + | sed 's|default-dbus-session-bus|dbus-user-session|' \ + | sed 's|dbus-session-bus|dbus|' \ + | sed 's|^gsettings-backend$||' \ + ) +done + +# create Packages index files +dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz + +# create tarball with downloaded packages +mkdir -p "/tmp/bundles" +tar -czf "/tmp/bundles/axon-dash-pdf-predependencies.deb.tgz" . \ No newline at end of file diff --git a/docs/installation/air-gapped/debian/online-download.sh b/docs/installation/air-gapped/debian/online-download.sh new file mode 100755 index 00000000..c2f36173 --- /dev/null +++ b/docs/installation/air-gapped/debian/online-download.sh @@ -0,0 +1,31 @@ +# download axonops packages and dependencies +services=( + axon-dash-pdf + axon-dash + axon-server + axon-agent + axon-cassandra3.0-agent + axon-cassandra3.11-agent + axon-cassandra4.0-agent + axon-cassandra4.0-agent-jdk8 + axon-cassandra4.1-agent + axon-cassandra4.1-agent-jdk8 + axon-cassandra5.0-agent-jdk11 + axon-cassandra5.0-agent-jdk17 +) +for service in "${services[@]}"; do + # create temporary location for downloading packages + mkdir -p "/tmp/downloads/${service}" + cd "/tmp/downloads/${service}" + + # download dependencies + sudo apt-get download \ + $(sudo apt-rdepends "${service}" | grep -v "^ ") + + # create Packages index files + dpkg-scanpackages $(pwd) /dev/null | gzip -9c > Packages.gz + + # create tarball with downloaded packages + mkdir -p "/tmp/bundles" + tar -czf "/tmp/bundles/${service}.deb.tgz" . +done \ No newline at end of file diff --git a/docs/installation/air-gapped/dynamic_page.md b/docs/installation/air-gapped/dynamic_page.md new file mode 100644 index 00000000..a077fe89 --- /dev/null +++ b/docs/installation/air-gapped/dynamic_page.md @@ -0,0 +1,102 @@ + +Select the OS Family + + + + + +## Download Packages on Online Machine + +### Setup Dependencies + +Prior to downloading the AxonOps packages, we must first install any missing packages +on our online machine and setup the AxonOps package repository using the following steps: + +
+ +```bash +{!installation/air-gapped/debian/online-dependencies.sh!} +``` + +
+ + + +### Download Packages + +Follow the instructions below to download the necessary packages to the online machine's +`/tmp` directory. The bundled tarball(s) can then be easily transferred to the air-gapped +machine. + +
+ +Since `axon-dash-pdf` relies on virtual Debian packages, we must first download these +packages separately and by name: + +```bash +{!installation/air-gapped/debian/online-download-predependencies.sh!} +``` + +Download all additional AxonOps packages and dependencies: + +```bash +{!installation/air-gapped/debian/online-download.sh!} +``` + +
+ + + +## Install Packages on Air-Gapped Machine + +
+ +On the air-gapped machine: + +* transfer the intended tarballs produced in the previous step to a temporary directory, +* navigate into that directory, +* and run the following commands to: + * define the helper function + * and install the targetted software(s). + + +```bash +{!installation/air-gapped/debian/offline-install.sh!} +``` + +
+ + diff --git a/docs/installation/air-gapped/index.md b/docs/installation/air-gapped/index.md new file mode 100644 index 00000000..0f243351 --- /dev/null +++ b/docs/installation/air-gapped/index.md @@ -0,0 +1,30 @@ +Follow the process below to install AxonOps within air-gapped systems. + +{!installation/air-gapped/dynamic_page.md!} + +## Configure Software + +Once installed, ensure the `axon-server` and `axon-dash` are configured +correctly by: + +* ensuring the target software is not running, +* configuring the relevant +configuration file, +* and restarting the target service. + +```bash +{!installation/air-gapped/configure-software.sh!} +``` + +## Install Agent + +On the Cassandra machine, run the following commands to configure `axon-agent` and +ensure Cassandra loads the agent. Use the instructions found [here](../agent/install.md) +to: + +* configure `axon-agent` +* and configure Cassandra to load the agent. + +```bash +{!installation/air-gapped/install-agent.sh!} +``` \ No newline at end of file diff --git a/docs/installation/air-gapped/install-agent.sh b/docs/installation/air-gapped/install-agent.sh new file mode 100755 index 00000000..37362dcd --- /dev/null +++ b/docs/installation/air-gapped/install-agent.sh @@ -0,0 +1,14 @@ +# ensure the axon-agent is not running +systemctl stop axon-agent + +# configure the agent +vi /etc/axonops/axon-agent.yml + +# configure Cassandra to load the agent +vi /etc/cassandra/cassandra-env.sh + +# restart the agent +systemctl restart axon-agent + +# restart Cassandra to load the agent +systemctl restart cassandra \ No newline at end of file diff --git a/docs/installation/air-gapped/redhat/offline-install.sh b/docs/installation/air-gapped/redhat/offline-install.sh new file mode 100755 index 00000000..6c8e9b89 --- /dev/null +++ b/docs/installation/air-gapped/redhat/offline-install.sh @@ -0,0 +1,50 @@ +# extract packages into the offline repository location +sudo mkdir -p /opt/offline/axonops +sudo tar -C /opt/offline/axonops \ + -xzf ./axonops_repo_x86_64.rpm.tgz \ + --strip-components=1 + +# setup the offline repository +sudo tee /etc/yum.repos.d/axonops-offline.repo \ + >/dev/null <<'EOF' +[axonops-offline] +name=AxonOps Offline +baseurl=file:///opt/offline/axonops +enabled=1 +gpgcheck=0 +EOF + +# define installation helper function +function install_dependency() { + service=${1} + + sudo dnf5 clean all + sudo dnf5 makecache + sudo dnf5 \ + --disablerepo='*' \ + --enablerepo="axonops-offline" \ + install \ + -y \ + --nogpgcheck \ + "${service}" +} + +# install axon-dash +install_dependency axon-dash-pdf +install_dependency axon-dash + +# install axon-server +install_dependency axon-server + +# install axon-agent on Cassandra node +install_dependency axon-agent + +# install matching axon-cassandra agent on Cassandra node (choose one) +install_dependency axon-cassandra3.0-agent +install_dependency axon-cassandra3.11-agent +install_dependency axon-cassandra4.0-agent +install_dependency axon-cassandra4.0-agent-jdk8 +install_dependency axon-cassandra4.1-agent +install_dependency axon-cassandra4.1-agent-jdk8 +install_dependency axon-cassandra5.0-agent-jdk11 +install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file diff --git a/docs/installation/air-gapped/redhat/online-dependencies.sh b/docs/installation/air-gapped/redhat/online-dependencies.sh new file mode 100755 index 00000000..e9e109b2 --- /dev/null +++ b/docs/installation/air-gapped/redhat/online-dependencies.sh @@ -0,0 +1,12 @@ +# install dependency needed for creating repomd repository +sudo dnf install -y createrepo_c + +# setup AxonOps repository +cat >/etc/yum.repos.d/axonops-yum.repo < Date: Sun, 24 Aug 2025 21:05:06 -0500 Subject: [PATCH 02/11] account for virtual packages for axon-dash-pdf as well --- .../air-gapped/debian/online-download.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/installation/air-gapped/debian/online-download.sh b/docs/installation/air-gapped/debian/online-download.sh index c2f36173..d48525b1 100755 --- a/docs/installation/air-gapped/debian/online-download.sh +++ b/docs/installation/air-gapped/debian/online-download.sh @@ -19,9 +19,16 @@ for service in "${services[@]}"; do cd "/tmp/downloads/${service}" # download dependencies - sudo apt-get download \ - $(sudo apt-rdepends "${service}" | grep -v "^ ") - + sudo apt-get download $(\ + sudo apt-rdepends "${service}" \ + | grep -v "^ " \ + | sed 's|debconf-2.0|debconf|' \ + | sed 's|libappindicator1|libayatana-appindicator3-1|' \ + | sed 's|libgcc1|libgcc-s1|' \ + | sed 's|default-dbus-session-bus|dbus-user-session|' \ + | sed 's|dbus-session-bus|dbus|' \ + | sed 's|^gsettings-backend$||' \ + ) # create Packages index files dpkg-scanpackages $(pwd) /dev/null | gzip -9c > Packages.gz From 5fac325bb53ac3bbc75c059cb5841e2ed1887773 Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Mon, 25 Aug 2025 10:36:52 -0500 Subject: [PATCH 03/11] fixes made during final tests --- .../air-gapped/debian/offline-install.sh | 15 +++++-- .../air-gapped/redhat/offline-install.sh | 4 +- .../air-gapped/redhat/online-download.sh | 41 +++++++++++-------- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/docs/installation/air-gapped/debian/offline-install.sh b/docs/installation/air-gapped/debian/offline-install.sh index f7fe2aba..95000a22 100755 --- a/docs/installation/air-gapped/debian/offline-install.sh +++ b/docs/installation/air-gapped/debian/offline-install.sh @@ -4,9 +4,16 @@ function install_dependency() { mkdir -p "/var/cache/apt/archives/${service}" tar xf "${service}.deb.tgz" --directory "/var/cache/apt/archives/${service}" - while ! sudo dpkg -i /var/cache/apt/archives/${service}/*.deb; do - echo "Working through dependencies..." - done + if [[ "$service" == "axon-dash-pdf-predependencies" ]]; then + sudo dpkg -i /var/cache/apt/archives/${service}/libpython3.9-minimal* + sudo dpkg -i /var/cache/apt/archives/${service}/python3.9-minimal* + sudo dpkg -i /var/cache/apt/archives/${service}/*.deb || ( + echo "Working through Python dependencies..." + sudo dpkg -i /var/cache/apt/archives/${service}/*.deb + ) + else + sudo dpkg -i /var/cache/apt/archives/${service}/*.deb + fi } # install axon-dash @@ -15,7 +22,7 @@ install_dependency axon-dash-pdf install_dependency axon-dash # install axon-server -install_dependency axon-dash +install_dependency axon-server # install axon-agent on Cassandra node install_dependency axon-agent diff --git a/docs/installation/air-gapped/redhat/offline-install.sh b/docs/installation/air-gapped/redhat/offline-install.sh index 6c8e9b89..8e4409e3 100755 --- a/docs/installation/air-gapped/redhat/offline-install.sh +++ b/docs/installation/air-gapped/redhat/offline-install.sh @@ -1,7 +1,7 @@ # extract packages into the offline repository location sudo mkdir -p /opt/offline/axonops sudo tar -C /opt/offline/axonops \ - -xzf ./axonops_repo_x86_64.rpm.tgz \ + -xzf ./axonops-x86_64.rpm.tgz \ --strip-components=1 # setup the offline repository @@ -18,8 +18,6 @@ EOF function install_dependency() { service=${1} - sudo dnf5 clean all - sudo dnf5 makecache sudo dnf5 \ --disablerepo='*' \ --enablerepo="axonops-offline" \ diff --git a/docs/installation/air-gapped/redhat/online-download.sh b/docs/installation/air-gapped/redhat/online-download.sh index 9d714bc2..37e2cafa 100755 --- a/docs/installation/air-gapped/redhat/online-download.sh +++ b/docs/installation/air-gapped/redhat/online-download.sh @@ -13,9 +13,13 @@ services=( axon-cassandra5.0-agent-jdk17 ) for service in "${services[@]}"; do + arch=x86_64 + if [[ $service == axon-cassandra* ]]; then + arch=noarch + fi # downloads all direct dependencies, including target package dnf5 download \ - --arch x86_64 \ + --arch "${arch}" \ --resolve \ --alldeps \ --refresh \ @@ -23,21 +27,26 @@ for service in "${services[@]}"; do "${service}" # downloads all dependencies, recursively - dnf5 download \ - --arch x86_64 \ - --resolve \ - --alldeps \ - --refresh \ - --destdir=/tmp/downloads \ - $(dnf5 repoquery \ - --arch x86_64 \ - --recursive \ - --providers-of=requires \ - --qf '%{name}-%{version}-%{release}.%{arch} ' \ - "${service}" \ - | sort -u) + DEPENDENCIES=$(dnf5 repoquery \ + --arch "${arch}" \ + --recursive \ + --providers-of=requires \ + --qf '%{name}-%{version}-%{release}.%{arch} ' \ + "${service}" | sort -u) + if [[ -n $DEPENDENCIES ]]; then + dnf5 download \ + --arch "${arch}" \ + --resolve \ + --alldeps \ + --refresh \ + --destdir=/tmp/downloads \ + $DEPENDENCIES + fi done # create and compress repomd repository -createrepo_c /tmp/downloads -tar -C /tmp -czf "/tmp/axonops_repo_x86_64.rpm.tgz" /tmp/downloads/ +cd /tmp/downloads +createrepo_c . +tar \ + -czf /tmp/axonops-x86_64.rpm.tgz \ + . From 3d1689c9e9edc2ead64c42ca74b7a425f1bfd7f1 Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Wed, 27 Aug 2025 17:43:41 -0500 Subject: [PATCH 04/11] /var/cache/apt/archives/ -> /opt/offline/axonops/ --- .../air-gapped/debian/offline-install.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/installation/air-gapped/debian/offline-install.sh b/docs/installation/air-gapped/debian/offline-install.sh index 95000a22..e7747a5e 100755 --- a/docs/installation/air-gapped/debian/offline-install.sh +++ b/docs/installation/air-gapped/debian/offline-install.sh @@ -2,17 +2,17 @@ function install_dependency() { service=${1} - mkdir -p "/var/cache/apt/archives/${service}" - tar xf "${service}.deb.tgz" --directory "/var/cache/apt/archives/${service}" - if [[ "$service" == "axon-dash-pdf-predependencies" ]]; then - sudo dpkg -i /var/cache/apt/archives/${service}/libpython3.9-minimal* - sudo dpkg -i /var/cache/apt/archives/${service}/python3.9-minimal* - sudo dpkg -i /var/cache/apt/archives/${service}/*.deb || ( + mkdir -p "/opt/offline/axonops/${service}" + tar xf "${service}.deb.tgz" --directory "/opt/offline/axonops/${service}" + if [[ "$service" == "axon-dash-pdf2-predependencies" ]]; then + sudo dpkg -i /opt/offline/axonops/${service}/libpython3*-minimal* + sudo dpkg -i /opt/offline/axonops/${service}/python3*-minimal* + sudo dpkg -i /opt/offline/axonops/${service}/*.deb || ( echo "Working through Python dependencies..." - sudo dpkg -i /var/cache/apt/archives/${service}/*.deb + sudo dpkg -i /opt/offline/axonops/${service}/*.deb ) else - sudo dpkg -i /var/cache/apt/archives/${service}/*.deb + sudo dpkg -i /opt/offline/axonops/${service}/*.deb fi } From d40f98d89a2b688f340a9d563da6d0a8e7e73bfc Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Wed, 27 Aug 2025 17:52:16 -0500 Subject: [PATCH 05/11] optional note for axon-dash-pdf dependency --- docs/installation/air-gapped/debian/offline-install.sh | 6 ++++-- docs/installation/air-gapped/redhat/offline-install.sh | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/installation/air-gapped/debian/offline-install.sh b/docs/installation/air-gapped/debian/offline-install.sh index e7747a5e..2cb21178 100755 --- a/docs/installation/air-gapped/debian/offline-install.sh +++ b/docs/installation/air-gapped/debian/offline-install.sh @@ -16,9 +16,11 @@ function install_dependency() { fi } +# (optional) install axon-dash dependency to enable pdf generation +install_dependency axon-dash-pdf2-predependencies +install_dependency axon-dash-pdf2 + # install axon-dash -install_dependency axon-dash-pdf-predependencies -install_dependency axon-dash-pdf install_dependency axon-dash # install axon-server diff --git a/docs/installation/air-gapped/redhat/offline-install.sh b/docs/installation/air-gapped/redhat/offline-install.sh index 8e4409e3..1ca2eeaa 100755 --- a/docs/installation/air-gapped/redhat/offline-install.sh +++ b/docs/installation/air-gapped/redhat/offline-install.sh @@ -27,8 +27,8 @@ function install_dependency() { "${service}" } -# install axon-dash -install_dependency axon-dash-pdf +# (optional) install axon-dash dependency to enable pdf generation +install_dependency axon-dash-pdf2 install_dependency axon-dash # install axon-server From d3bb3fca9c01f707443fa7bd6f45cbbb51a2eeb5 Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Wed, 27 Aug 2025 17:53:09 -0500 Subject: [PATCH 06/11] axon-dash-pdf -> axon-dash-pdf2 --- .../debian/online-download-predependencies.sh | 10 +++++----- docs/installation/air-gapped/debian/online-download.sh | 2 +- docs/installation/air-gapped/dynamic_page.md | 2 +- docs/installation/air-gapped/redhat/online-download.sh | 4 +++- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/installation/air-gapped/debian/online-download-predependencies.sh b/docs/installation/air-gapped/debian/online-download-predependencies.sh index f1d11153..2474494c 100755 --- a/docs/installation/air-gapped/debian/online-download-predependencies.sh +++ b/docs/installation/air-gapped/debian/online-download-predependencies.sh @@ -1,8 +1,8 @@ # create temporary location for downloading packages -mkdir -p "/tmp/downloads/axon-dash-pdf-predependencies" -cd "/tmp/downloads/axon-dash-pdf-predependencies" +mkdir -p "/tmp/downloads/axon-dash-pdf2-predependencies" +cd "/tmp/downloads/axon-dash-pdf2-predependencies" -# install predependencies for axon-dash-pdf +# install predependencies for axon-dash-pdf2 services=( dbus-user-session libayatana-appindicator1 @@ -14,7 +14,7 @@ services=( libappindicator1 ) for service in "${services[@]}"; do - # download axon-dash-pdf virtual package predependencies + # download axon-dash-pdf2 virtual package predependencies sudo apt-get download $(\ sudo apt-rdepends "${service}" \ | grep -v "^ " \ @@ -32,4 +32,4 @@ dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz # create tarball with downloaded packages mkdir -p "/tmp/bundles" -tar -czf "/tmp/bundles/axon-dash-pdf-predependencies.deb.tgz" . \ No newline at end of file +tar -czf "/tmp/bundles/axon-dash-pdf2-predependencies.deb.tgz" . \ No newline at end of file diff --git a/docs/installation/air-gapped/debian/online-download.sh b/docs/installation/air-gapped/debian/online-download.sh index d48525b1..0f840837 100755 --- a/docs/installation/air-gapped/debian/online-download.sh +++ b/docs/installation/air-gapped/debian/online-download.sh @@ -1,6 +1,6 @@ # download axonops packages and dependencies services=( - axon-dash-pdf + axon-dash-pdf2 axon-dash axon-server axon-agent diff --git a/docs/installation/air-gapped/dynamic_page.md b/docs/installation/air-gapped/dynamic_page.md index a077fe89..9266b043 100644 --- a/docs/installation/air-gapped/dynamic_page.md +++ b/docs/installation/air-gapped/dynamic_page.md @@ -42,7 +42,7 @@ machine.
-Since `axon-dash-pdf` relies on virtual Debian packages, we must first download these +Since `axon-dash-pdf2` relies on virtual Debian packages, we must first download these packages separately and by name: ```bash diff --git a/docs/installation/air-gapped/redhat/online-download.sh b/docs/installation/air-gapped/redhat/online-download.sh index 37e2cafa..4bcb64c9 100755 --- a/docs/installation/air-gapped/redhat/online-download.sh +++ b/docs/installation/air-gapped/redhat/online-download.sh @@ -1,5 +1,7 @@ +#!/usr/bin/env /bin/bash + services=( - axon-dash-pdf + axon-dash-pdf2 axon-dash axon-server axon-agent From 6e33bd8840762a0fcb178344d1c3f0c019788793 Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Wed, 27 Aug 2025 17:57:55 -0500 Subject: [PATCH 07/11] Upgrading section --- docs/installation/air-gapped/index.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/installation/air-gapped/index.md b/docs/installation/air-gapped/index.md index 0f243351..f85321c8 100644 --- a/docs/installation/air-gapped/index.md +++ b/docs/installation/air-gapped/index.md @@ -2,7 +2,7 @@ Follow the process below to install AxonOps within air-gapped systems. {!installation/air-gapped/dynamic_page.md!} -## Configure Software +### Configure Software Once installed, ensure the `axon-server` and `axon-dash` are configured correctly by: @@ -16,7 +16,7 @@ configuration file, {!installation/air-gapped/configure-software.sh!} ``` -## Install Agent +### Install Agent On the Cassandra machine, run the following commands to configure `axon-agent` and ensure Cassandra loads the agent. Use the instructions found [here](../agent/install.md) @@ -27,4 +27,15 @@ to: ```bash {!installation/air-gapped/install-agent.sh!} -``` \ No newline at end of file +``` + +## Upgrading + +When upgrading your air-gapped AxonOps installation, simply follow the above +instructions to: + +* download the target packages and dependencies on an online machine, +* extract the tarball(s) on the offline machine, +* and run the select `install_dependency` commands. + +Feel free to adjust the extracted path to maintain proper versioning accordingly. \ No newline at end of file From 52a179f234d4c2039a394fe9d5aad14f5e2e1dca Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Wed, 27 Aug 2025 18:01:01 -0500 Subject: [PATCH 08/11] #!/usr/bin/env /bin/bash --- docs/installation/air-gapped/debian/offline-install.sh | 2 ++ docs/installation/air-gapped/debian/online-dependencies.sh | 2 ++ .../air-gapped/debian/online-download-predependencies.sh | 2 ++ docs/installation/air-gapped/debian/online-download.sh | 2 ++ docs/installation/air-gapped/redhat/offline-install.sh | 2 ++ docs/installation/air-gapped/redhat/online-dependencies.sh | 2 ++ 6 files changed, 12 insertions(+) diff --git a/docs/installation/air-gapped/debian/offline-install.sh b/docs/installation/air-gapped/debian/offline-install.sh index 2cb21178..d31e11b6 100755 --- a/docs/installation/air-gapped/debian/offline-install.sh +++ b/docs/installation/air-gapped/debian/offline-install.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env /bin/bash + # define installation helper function function install_dependency() { service=${1} diff --git a/docs/installation/air-gapped/debian/online-dependencies.sh b/docs/installation/air-gapped/debian/online-dependencies.sh index ca5a328c..ff96ee65 100755 --- a/docs/installation/air-gapped/debian/online-dependencies.sh +++ b/docs/installation/air-gapped/debian/online-dependencies.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env /bin/bash + # install dependencies sudo apt-get update sudo apt-get install -y \ diff --git a/docs/installation/air-gapped/debian/online-download-predependencies.sh b/docs/installation/air-gapped/debian/online-download-predependencies.sh index 2474494c..f6c4cf25 100755 --- a/docs/installation/air-gapped/debian/online-download-predependencies.sh +++ b/docs/installation/air-gapped/debian/online-download-predependencies.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env /bin/bash + # create temporary location for downloading packages mkdir -p "/tmp/downloads/axon-dash-pdf2-predependencies" cd "/tmp/downloads/axon-dash-pdf2-predependencies" diff --git a/docs/installation/air-gapped/debian/online-download.sh b/docs/installation/air-gapped/debian/online-download.sh index 0f840837..db151e41 100755 --- a/docs/installation/air-gapped/debian/online-download.sh +++ b/docs/installation/air-gapped/debian/online-download.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env /bin/bash + # download axonops packages and dependencies services=( axon-dash-pdf2 diff --git a/docs/installation/air-gapped/redhat/offline-install.sh b/docs/installation/air-gapped/redhat/offline-install.sh index 1ca2eeaa..1bf989eb 100755 --- a/docs/installation/air-gapped/redhat/offline-install.sh +++ b/docs/installation/air-gapped/redhat/offline-install.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env /bin/bash + # extract packages into the offline repository location sudo mkdir -p /opt/offline/axonops sudo tar -C /opt/offline/axonops \ diff --git a/docs/installation/air-gapped/redhat/online-dependencies.sh b/docs/installation/air-gapped/redhat/online-dependencies.sh index e9e109b2..f1d549c7 100755 --- a/docs/installation/air-gapped/redhat/online-dependencies.sh +++ b/docs/installation/air-gapped/redhat/online-dependencies.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env /bin/bash + # install dependency needed for creating repomd repository sudo dnf install -y createrepo_c From c9741b5581996af42ca46f6e76c50408bc56b693 Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Wed, 27 Aug 2025 18:16:46 -0500 Subject: [PATCH 09/11] offline-install-agent scripts --- .../debian/offline-install-agent.sh | 33 +++++++++++++ .../air-gapped/debian/offline-install.sh | 15 +----- docs/installation/air-gapped/dynamic_page.md | 48 ++++++++++++++++--- .../redhat/offline-install-agent.sh | 44 +++++++++++++++++ .../air-gapped/redhat/offline-install.sh | 15 +----- 5 files changed, 120 insertions(+), 35 deletions(-) create mode 100755 docs/installation/air-gapped/debian/offline-install-agent.sh create mode 100755 docs/installation/air-gapped/redhat/offline-install-agent.sh diff --git a/docs/installation/air-gapped/debian/offline-install-agent.sh b/docs/installation/air-gapped/debian/offline-install-agent.sh new file mode 100755 index 00000000..6cf84c81 --- /dev/null +++ b/docs/installation/air-gapped/debian/offline-install-agent.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env /bin/bash + +# define installation helper function +function install_dependency() { + service=${1} + + mkdir -p "/opt/offline/axonops/${service}" + tar xf "${service}.deb.tgz" --directory "/opt/offline/axonops/${service}" + if [[ "$service" == "axon-dash-pdf2-predependencies" ]]; then + sudo dpkg -i /opt/offline/axonops/${service}/libpython3*-minimal* + sudo dpkg -i /opt/offline/axonops/${service}/python3*-minimal* + sudo dpkg -i /opt/offline/axonops/${service}/*.deb || ( + echo "Working through Python dependencies..." + sudo dpkg -i /opt/offline/axonops/${service}/*.deb + ) + else + sudo dpkg -i /opt/offline/axonops/${service}/*.deb + fi +} + +# install axon-agent on Cassandra node +install_dependency axon-agent + +## (choose one of the following) +## install matching axon-cassandra agent on the Cassandra nodes +# install_dependency axon-cassandra3.0-agent +# install_dependency axon-cassandra3.11-agent +# install_dependency axon-cassandra4.0-agent +# install_dependency axon-cassandra4.0-agent-jdk8 +# install_dependency axon-cassandra4.1-agent +# install_dependency axon-cassandra4.1-agent-jdk8 +# install_dependency axon-cassandra5.0-agent-jdk11 +# install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file diff --git a/docs/installation/air-gapped/debian/offline-install.sh b/docs/installation/air-gapped/debian/offline-install.sh index d31e11b6..82327aa0 100755 --- a/docs/installation/air-gapped/debian/offline-install.sh +++ b/docs/installation/air-gapped/debian/offline-install.sh @@ -26,17 +26,4 @@ install_dependency axon-dash-pdf2 install_dependency axon-dash # install axon-server -install_dependency axon-server - -# install axon-agent on Cassandra node -install_dependency axon-agent - -# install matching axon-cassandra agent on Cassandra node (choose one) -install_dependency axon-cassandra3.0-agent -install_dependency axon-cassandra3.11-agent -install_dependency axon-cassandra4.0-agent -install_dependency axon-cassandra4.0-agent-jdk8 -install_dependency axon-cassandra4.1-agent -install_dependency axon-cassandra4.1-agent-jdk8 -install_dependency axon-cassandra5.0-agent-jdk11 -install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file +install_dependency axon-server \ No newline at end of file diff --git a/docs/installation/air-gapped/dynamic_page.md b/docs/installation/air-gapped/dynamic_page.md index 9266b043..541f9f88 100644 --- a/docs/installation/air-gapped/dynamic_page.md +++ b/docs/installation/air-gapped/dynamic_page.md @@ -76,14 +76,7 @@ On the air-gapped machine: * and run the following commands to: * define the helper function * and install the targetted software(s). - - -```bash -{!installation/air-gapped/debian/offline-install.sh!} -``` -
- + +### Install the AxonOps Server and Dashboard + +Use the following script to install `axon-server` and `axon-dash` on the offline +machine. `axon-server` and `axon-dash` can be installed on the same machine or be +configured to communicate across two machines. + +The `axon-dash-pdf2` package is optional and provides support for generating PDF reports. + +
+ +```bash +{!installation/air-gapped/debian/offline-install.sh!} +``` + +
+ + + +### Install the AxonOps Agent + +Use the following script to install the `axon-agent` as well as a version of +`axon-cassandra*-agent` that coincides with the version of Cassandra and the Java JDK +that is being used. + +
+ +```bash +{!installation/air-gapped/debian/offline-install-agent.sh!} +``` + +
+ diff --git a/docs/installation/air-gapped/redhat/offline-install-agent.sh b/docs/installation/air-gapped/redhat/offline-install-agent.sh new file mode 100755 index 00000000..6c225e91 --- /dev/null +++ b/docs/installation/air-gapped/redhat/offline-install-agent.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env /bin/bash + +# extract packages into the offline repository location +sudo mkdir -p /opt/offline/axonops +sudo tar -C /opt/offline/axonops \ + -xzf ./axonops-x86_64.rpm.tgz \ + --strip-components=1 + +# setup the offline repository +sudo tee /etc/yum.repos.d/axonops-offline.repo \ + >/dev/null <<'EOF' +[axonops-offline] +name=AxonOps Offline +baseurl=file:///opt/offline/axonops +enabled=1 +gpgcheck=0 +EOF + +# define installation helper function +function install_dependency() { + service=${1} + + sudo dnf5 \ + --disablerepo='*' \ + --enablerepo="axonops-offline" \ + install \ + -y \ + --nogpgcheck \ + "${service}" +} + +# install axon-agent on Cassandra node +install_dependency axon-agent + +## (choose one of the following) +## install matching axon-cassandra agent on the Cassandra nodes +# install_dependency axon-cassandra3.0-agent +# install_dependency axon-cassandra3.11-agent +# install_dependency axon-cassandra4.0-agent +# install_dependency axon-cassandra4.0-agent-jdk8 +# install_dependency axon-cassandra4.1-agent +# install_dependency axon-cassandra4.1-agent-jdk8 +# install_dependency axon-cassandra5.0-agent-jdk11 +# install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file diff --git a/docs/installation/air-gapped/redhat/offline-install.sh b/docs/installation/air-gapped/redhat/offline-install.sh index 1bf989eb..e9b4fb60 100755 --- a/docs/installation/air-gapped/redhat/offline-install.sh +++ b/docs/installation/air-gapped/redhat/offline-install.sh @@ -34,17 +34,4 @@ install_dependency axon-dash-pdf2 install_dependency axon-dash # install axon-server -install_dependency axon-server - -# install axon-agent on Cassandra node -install_dependency axon-agent - -# install matching axon-cassandra agent on Cassandra node (choose one) -install_dependency axon-cassandra3.0-agent -install_dependency axon-cassandra3.11-agent -install_dependency axon-cassandra4.0-agent -install_dependency axon-cassandra4.0-agent-jdk8 -install_dependency axon-cassandra4.1-agent -install_dependency axon-cassandra4.1-agent-jdk8 -install_dependency axon-cassandra5.0-agent-jdk11 -install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file +install_dependency axon-server \ No newline at end of file From 9fbd2f2279d25a70d464aaeec2a93d8e7d0f4ce9 Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Wed, 27 Aug 2025 19:22:23 -0500 Subject: [PATCH 10/11] support Kafka installations --- .../debian/offline-install-agent.sh | 8 +++--- .../air-gapped/debian/online-download.sh | 2 ++ docs/installation/air-gapped/dynamic_page.md | 8 +++--- docs/installation/air-gapped/index.md | 18 ++++++++----- docs/installation/air-gapped/install-agent.sh | 27 ++++++++++++++++--- .../redhat/offline-install-agent.sh | 8 +++--- .../air-gapped/redhat/online-download.sh | 2 ++ 7 files changed, 53 insertions(+), 20 deletions(-) diff --git a/docs/installation/air-gapped/debian/offline-install-agent.sh b/docs/installation/air-gapped/debian/offline-install-agent.sh index 6cf84c81..a070df91 100755 --- a/docs/installation/air-gapped/debian/offline-install-agent.sh +++ b/docs/installation/air-gapped/debian/offline-install-agent.sh @@ -18,11 +18,11 @@ function install_dependency() { fi } -# install axon-agent on Cassandra node +# install axon-agent on Cassandra/Kafka nodes install_dependency axon-agent ## (choose one of the following) -## install matching axon-cassandra agent on the Cassandra nodes +## install matching axon-cassandra/axon-kafka agent on the Cassandra/Kafka nodes # install_dependency axon-cassandra3.0-agent # install_dependency axon-cassandra3.11-agent # install_dependency axon-cassandra4.0-agent @@ -30,4 +30,6 @@ install_dependency axon-agent # install_dependency axon-cassandra4.1-agent # install_dependency axon-cassandra4.1-agent-jdk8 # install_dependency axon-cassandra5.0-agent-jdk11 -# install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file +# install_dependency axon-cassandra5.0-agent-jdk17 +# install_dependency axon-kafka2-agent +# install_dependency axon-kafka3-agent \ No newline at end of file diff --git a/docs/installation/air-gapped/debian/online-download.sh b/docs/installation/air-gapped/debian/online-download.sh index db151e41..48484e40 100755 --- a/docs/installation/air-gapped/debian/online-download.sh +++ b/docs/installation/air-gapped/debian/online-download.sh @@ -14,6 +14,8 @@ services=( axon-cassandra4.1-agent-jdk8 axon-cassandra5.0-agent-jdk11 axon-cassandra5.0-agent-jdk17 + axon-kafka2-agent + axon-kafka3-agent ) for service in "${services[@]}"; do # create temporary location for downloading packages diff --git a/docs/installation/air-gapped/dynamic_page.md b/docs/installation/air-gapped/dynamic_page.md index 541f9f88..b5b2390e 100644 --- a/docs/installation/air-gapped/dynamic_page.md +++ b/docs/installation/air-gapped/dynamic_page.md @@ -90,7 +90,7 @@ On the air-gapped machine: -### Install the AxonOps Server and Dashboard +### Install the Server and Dashboard Use the following script to install `axon-server` and `axon-dash` on the offline machine. `axon-server` and `axon-dash` can be installed on the same machine or be @@ -114,11 +114,11 @@ The `axon-dash-pdf2` package is optional and provides support for generating PDF -### Install the AxonOps Agent +### Install the Agent Use the following script to install the `axon-agent` as well as a version of -`axon-cassandra*-agent` that coincides with the version of Cassandra and the Java JDK -that is being used. +`axon-cassandra*-agent` or `axon-kafka*-agent` that coincides with the version of +Cassandra/Kafka and the Java JDK that is being used.
diff --git a/docs/installation/air-gapped/index.md b/docs/installation/air-gapped/index.md index f85321c8..7bc9ed0d 100644 --- a/docs/installation/air-gapped/index.md +++ b/docs/installation/air-gapped/index.md @@ -2,7 +2,9 @@ Follow the process below to install AxonOps within air-gapped systems. {!installation/air-gapped/dynamic_page.md!} -### Configure Software +## Configure Software + +### Configure Server and Dashboard Once installed, ensure the `axon-server` and `axon-dash` are configured correctly by: @@ -16,14 +18,16 @@ configuration file, {!installation/air-gapped/configure-software.sh!} ``` -### Install Agent +### Configure and Load Agents -On the Cassandra machine, run the following commands to configure `axon-agent` and -ensure Cassandra loads the agent. Use the instructions found [here](../agent/install.md) -to: +On the Cassandra/Kafka machine, run the following commands to configure `axon-agent` and +ensure Cassandra/Kafka loads the agent. Use the instructions found on the +[AxonOps Agent Installation](../agent/install.md) page to: -* configure `axon-agent` -* and configure Cassandra to load the agent. +* configure `axon-agent`, +* configure Cassandra/Kafka to load the agent, +* configure the Cassandra/Kafka user groups, +* and restart the Cassandra/Kafka process. ```bash {!installation/air-gapped/install-agent.sh!} diff --git a/docs/installation/air-gapped/install-agent.sh b/docs/installation/air-gapped/install-agent.sh index 37362dcd..e3d6b7d7 100755 --- a/docs/installation/air-gapped/install-agent.sh +++ b/docs/installation/air-gapped/install-agent.sh @@ -4,11 +4,32 @@ systemctl stop axon-agent # configure the agent vi /etc/axonops/axon-agent.yml +## FOR CASSANDRA + # configure Cassandra to load the agent vi /etc/cassandra/cassandra-env.sh -# restart the agent -systemctl restart axon-agent +# configure Cassandra user groups +sudo usermod -aG "$CASSANDRA_GROUP" axonops +sudo usermod -aG axonops "$CASSANDRA_USER" # restart Cassandra to load the agent -systemctl restart cassandra \ No newline at end of file +systemctl restart cassandra + +## FOR KAFKA + +# configure Kafka to load the agent +vi "$KAFKA_HOME/bin/kafka-server-start.sh" + +# configure Kafka user groups +sudo usermod -aG "$KAFKA_GROUP" axonops +sudo usermod -aG axonops "$KAFKA_USER" + +# restart Kafka to load the agent +vi "$KAFKA_HOME/bin/kafka-server-stop.sh" +vi "$KAFKA_HOME/bin/kafka-server-start.sh" + +## FOR BOTH + +# restart the agent +systemctl restart axon-agent \ No newline at end of file diff --git a/docs/installation/air-gapped/redhat/offline-install-agent.sh b/docs/installation/air-gapped/redhat/offline-install-agent.sh index 6c225e91..dfdbc5e7 100755 --- a/docs/installation/air-gapped/redhat/offline-install-agent.sh +++ b/docs/installation/air-gapped/redhat/offline-install-agent.sh @@ -29,11 +29,11 @@ function install_dependency() { "${service}" } -# install axon-agent on Cassandra node +# install axon-agent on Cassandra/Kafka nodes install_dependency axon-agent ## (choose one of the following) -## install matching axon-cassandra agent on the Cassandra nodes +## install matching axon-cassandra/axon-kafka agent on the Cassandra/Kafka nodes # install_dependency axon-cassandra3.0-agent # install_dependency axon-cassandra3.11-agent # install_dependency axon-cassandra4.0-agent @@ -41,4 +41,6 @@ install_dependency axon-agent # install_dependency axon-cassandra4.1-agent # install_dependency axon-cassandra4.1-agent-jdk8 # install_dependency axon-cassandra5.0-agent-jdk11 -# install_dependency axon-cassandra5.0-agent-jdk17 \ No newline at end of file +# install_dependency axon-cassandra5.0-agent-jdk17 +# install_dependency axon-kafka2-agent +# install_dependency axon-kafka3-agent \ No newline at end of file diff --git a/docs/installation/air-gapped/redhat/online-download.sh b/docs/installation/air-gapped/redhat/online-download.sh index 4bcb64c9..1eca1757 100755 --- a/docs/installation/air-gapped/redhat/online-download.sh +++ b/docs/installation/air-gapped/redhat/online-download.sh @@ -13,6 +13,8 @@ services=( axon-cassandra4.1-agent-jdk8 axon-cassandra5.0-agent-jdk11 axon-cassandra5.0-agent-jdk17 + axon-kafka2-agent + axon-kafka3-agent ) for service in "${services[@]}"; do arch=x86_64 From d0373327209939c5adacbe3f06c5cda9f85591c2 Mon Sep 17 00:00:00 2001 From: Joaquin Casares Date: Tue, 2 Sep 2025 23:13:54 -0500 Subject: [PATCH 11/11] include systemctl daemon-reload --- docs/installation/air-gapped/index.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/installation/air-gapped/index.md b/docs/installation/air-gapped/index.md index 7bc9ed0d..183cbd0e 100644 --- a/docs/installation/air-gapped/index.md +++ b/docs/installation/air-gapped/index.md @@ -42,4 +42,12 @@ instructions to: * extract the tarball(s) on the offline machine, * and run the select `install_dependency` commands. -Feel free to adjust the extracted path to maintain proper versioning accordingly. \ No newline at end of file +Feel free to adjust the extracted path to maintain proper versioning accordingly. + +After the new versions have been installed, run the following commands to load the new +configuration file changes and restart the select service(s): + +```bash +sudo systemctl daemon-reload +sudo systemctl restart $service +``` \ No newline at end of file