Vault Agents — Install
Overview
The Install tab walks you through the two steps needed to deploy a vault agent on a remote vault host:
- Generate a vault-scoped authentication key.
- Run the one-liner install command as root on the target machine.
Console DNS Name
If your console is behind a load balancer or its IP may change, enter a DNS hostname here and save it. All install commands generated after saving use this hostname for CONSOLE_URL instead of the current IP address.
Vault agents installed with a DNS name survive console IP changes without being registered again. They keep connecting to the same hostname.
Leave this field blank to use the current browser origin (IP-based URL) in install commands.
Step 1: Generate a vault agent key
Click Generate Vault Key to create a new vault-scoped authentication token. In the dialog:
- Enter a descriptive Key Name, for example
vault-agent-site-a. This name identifies the agent in the token list and in the Dashboard. - Click Generate Key.
The key is shown exactly once. Copy it immediately. It cannot be retrieved after you close the dialog.
Vault scope
Vault agent keys use the vault scope. They can authenticate only vault agent registration and vault sync endpoints. They cannot access copy-engine jobs, the settings API, or any other console functionality.
This is a deliberate security boundary. A compromised vault key cannot be used to exfiltrate data or change console configuration.
Step 2: Run the install command
After you generate a key, run the install command as root on the vault agent host. Replace <VAULT_KEY> with the key value from Step 1.
curl -fsSL "<CONSOLE_URL>/api/agents/install.sh?type=vault-agent&key=<VAULT_KEY>" | bash
Replace the console's 443 and 8443 certificates with CA-issued certificates (TLS 1.2 or higher) before you install. Add -k to the command only while the console still uses its default certificate, because -k turns the TLS check off.
The install command is also shown pre-filled in the key display dialog right after key generation. You can copy it from there.
Remote host prerequisites
The vault agent host must meet these requirements before you run the install command.
| Requirement | Detail |
|---|---|
| Java 25.0.5 | Pre-install Java 25.0.5 in the VM template. The installer checks only for Java 25 or newer, not for 25.0.5. Run java -version and confirm 25.0.5 before you install. The vault has no internet access, so this is the default path. If Java is missing, the script installs Amazon Corretto 25, which requires HTTPS to corretto.aws. See Which Java the agent runs. |
| SELinux disabled | The agent service cannot start while SELinux is Enforcing. See below. |
| Linux (x86_64 or aarch64) | RHEL 8+, Rocky Linux 8+, Ubuntu 20.04+, SUSE/OpenSUSE, or any systemd-based Linux. |
| Root or sudo access | The install script creates a systemd service. |
| Outbound HTTPS to console | Port 443 to the console only. The vault agent needs no S3 access. |
| Vault management API | Outbound 4443 to the vault ObjectScale management API. |
| Air-gap switch | Outbound 22 (SSH) or 443 (RESTCONF) to the switch. |
| 8 vCPU and 32 GB RAM | Minimum host size for the vault agent. |
| Hostname | The hostname must resolve to the interface IP address, not to a loopback address such as 127.0.1.1. |
| Time | The host syncs to NTP and runs in UTC. |
| Persistent storage | The agent writes config and state to /opt/argus-agent/. The config is in /opt/argus-agent/.argus-vault/. |
Disable SELinux before installation
SELinux in Enforcing mode blocks the systemd service from starting. Disable it before you run the install script.
-
Make the change permanent. It takes effect after the next reboot.
vi /etc/selinux/config -
Find the
SELINUX=line and change it to:SELINUX=disabled -
Save and exit (
:wq). -
Disable SELinux immediately without rebooting. This is required before you re-run the installer.
setenforce 0
The install script checks SELinux status with getenforce. If it detects Enforcing, it exits and prints these instructions. After you run setenforce 0, re-run the install command.
What the install script does
The script runs fully automated, with no prompts. It does the following:
- Checks for Java 25 or newer, and installs it if needed.
- It uses the default
java, or else the one with the highest major version under/usr/lib/jvm. - Only if there is none, it downloads and installs Amazon Corretto 25. It uses RPM on RHEL, Rocky, and SUSE, DEB on Debian and Ubuntu, and tar.gz on other Linux.
- It prints each step and exits with a clear error if the internet is unreachable or the install fails.
- It uses the default
- Downloads the vault agent JAR from this console (
/api/agents/download/vault-agent). - Creates
/opt/argus-agent/and writes the agent config (/opt/argus-agent/.argus-vault/config.json) with the provided key and console URL. - Pins the chosen Java in
/opt/argus-agent/java.pin, writes the start script, and creates a systemd service (argus-vault-agent) that runs it. The service is configured to start on boot. - Starts the service. The agent connects, registers itself, and appears in the Dashboard tab.
Once registered, the agent discovers its assigned protection groups on its own. It then manages the incremental sync schedule and airgap lifecycle.
Which Java the agent runs
The agent needs Java 25 or newer, and the vault agent host should have Java 25.0.5 pre-installed in the VM template. The install script decides which Java to use and pins it. The agent then keeps starting even if the host's default java changes later, for example when an OS update or another package makes Java 21 the default.
At install
- The script uses the default
javaif it is Java 25 or newer. - If not, it looks for an installed Java 25 or newer under
/usr/lib/jvmand/usr/lib64/jvm. It uses the one with the highest major version. - Only if there is none, it downloads Amazon Corretto 25.
It writes the real path of the chosen Java to /opt/argus-agent/java.pin, for example /usr/lib/jvm/java-25-amazon-corretto/bin/java.
At every start
The systemd unit runs a start script, /usr/local/lib/argus-agent/argus-vault-agent-start.sh, instead of running java directly. The script is owned by root.
- The script uses the pinned Java as long as it still exists and is Java 25 or newer.
- If it does not, the script picks another Java 25 or newer the same way as the installer and pins that one.
- If the host has no Java 25 or newer at all, the script starts the default
javaanyway. This fails, and the script writes the reason to the service journal.
Check which Java is pinned
Use these commands:
cat /opt/argus-agent/java.pin
journalctl -u argus-vault-agent
The first command shows the pinned Java. The second shows the start script's messages:
argus-agent: pinned Java …
argus-agent: ERROR: Java 25 required …
The agent's own log shows nothing when Java is the problem, because the JVM stops before the agent starts logging. If the install fails, the script also prints the last lines of the journal.
Agents whose service unit runs /usr/bin/java
On some agents the systemd unit still runs /usr/bin/java, the host's default Java. These agents stop starting after the default changes to an older Java. This happens on the next upgrade, JVM profile change, crash, or reboot. systemd then retries forever with UnsupportedClassVersionError.
To fix one without reinstalling, run the following as root. Use the host's Java 25 path.
JAVA=/usr/lib/jvm/java-25-amazon-corretto/bin/java
sed -i "s#^ExecStart=[^ ]*java #ExecStart=${JAVA} #" /etc/systemd/system/argus-vault-agent.service
systemctl daemon-reload && systemctl restart argus-vault-agent
This pins that Java path directly in the unit.
Re-running the install command also installs the start script. However, it rewrites /opt/argus-agent/.argus-vault/config.json, so the vault agent registers again.
Quantum Trust Signed Delivery
A Quantum Trust Software Delivery card appears above the standard JAR upload. It lets you install a vault agent update as a Superna-authenticated .qtspkg package instead of a plain JAR file.
Superna signs QTS packages using ML-DSA-87 (NIST FIPS 204). The console verifies the signature before it allows installation. A green Quantum Trust Signed badge confirms the package is genuine.
If the signature check fails or the package is for a different component, installation is blocked with a clear error.
To install a package:
- Drag and drop a
.qtspkgfile onto the card, or click to browse. - Review the validation result.
- Click Install Build N to confirm.
- Restart the service to apply the update.
The standard JAR upload below remains available alongside QTS. You can use either path.
Vault Agent JAR
The Vault Agent JAR panel shows the version of the JAR hosted on this console. Vault agents download this JAR during fresh installs.
After an upload, registered agents compare their running version against the hosted version on every heartbeat. When the versions differ, a Version Mismatch badge appears on the Dashboard sub-tab and alarm VA-004 fires.
Which JAR the console hosts
Every console image includes the vault agent built with it, stamped with the console's build, for example X.Y.Z-1510. When the console starts with a different agent than the one hosted, its own agent becomes the hosted JAR. A console upgrade or rollback therefore also makes the matching vault agent available.
A JAR you uploaded is kept across console restarts while its build number is higher than the console's own agent. When a console upgrade brings a newer agent, that agent replaces the upload. The console log says which JAR it kept or installed.
Self-upgrade is operator-initiated, not automatic. To upgrade an agent, click the up-arrow button on its Dashboard card and confirm. See the Dashboard help for the full upgrade lifecycle (UPGRADE_MANIFEST exchange, SHA-256 verification, and restart).
Upload a new JAR
- Select the
.jarfile using the file picker. - Enter the version string, ending in its build number, for example
X.Y.Z-1520. It is displayed in the Dashboard and used for upgrade comparisons. - Click Upload.
An upload whose version does not end in a build number, or is not higher than the console's own agent, is replaced by the console's agent on the next console start.
If no JAR is uploaded, fresh installs fail at the download step.