Installer and Configuration Guide body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; } pre { background: #f4f4f4; padding: 10px; border: 1px solid #ddd; } code { background: #f4f4f4; padding: 2px 4px; border-radius: 3px; } table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; } th { background-color: #f4f4f4; } blockquote { border-left: 4px solid #ccc; margin: 1em 0; padding-left: 1em; color: #555; }
Note: This guide is for environments running the Helix Remote Admin (HRA) version of Command‑Runner. For other environments, please confirm with your administrator.
This guide explains how to install and configure the command‑runner utility using the updated install_command-runner.sh
script. The installer will:
.push_metrics.cfg
file (unless skipped with the -m
flag).The installer also supports various options (e.g. test mode, forced installation) so that you can customize the process to your environment.
Before running the installer, ensure that:
command-runner-linux-amd64
) and (optionally) cmd_config.yaml
are in the current directory.semanage
and restorecon
) are installed./p4/<instance>/tmp/
).Download latest release
wget https://swarm.workshop.perforce.com/downloads/guest/perforce_software/command-runner/packages/command-runner-linux-amd64.tar.gz
Decompress tar ball
tar -zvxf command-runner-linux-amd64.tar.gz
cd command-runner
By default, the installer runs in dry‑run mode (printing actions without making changes). To run in dry‑run mode:
sudo ./install_command-runner.sh
To really install, use the -y
to continue in interactive mode flag:
sudo ./install_command-runner.sh -y
Option
Description
Default
-d PATH
Destination path for the command-runner
binary.
/p4/common/site/bin/command-runner
-c DIR
Directory for cmd_config.yaml
.
/p4/common/config
-p FILE
Path for .push_metrics.cfg
.
/p4/common/config/.push_metrics.cfg
-u OWNER
User:Group ownership for files.
perforce:perforce
-i INSTANCE
Instance name (auto‑detects if omitted).
Auto‑detect
-y
Apply changes (disable dry‑run).
-f
Force re‑installation even if the versions match.
sudo ./install_command-runner.sh
sudo ./install_command-runner.sh -y
sudo ./install_command-runner.sh -y -u myuser:mygroup -i prod
.push_metrics.cfg
Updatesudo ./install_command-runner.sh -y -m
The installer sets up a systemd service and timer that replace legacy cron jobs. They are installed as follows:
/etc/systemd/system/command-runner.service
– Executes the command-runner
binary on demand./etc/systemd/system/command-runner.timer
– Controls when the service runs.systemctl status command-runner.timer
systemctl enable --now command-runner.timer
systemctl disable --now command-runner.timer
systemctl start command-runner.service
The installer automatically removes outdated cron jobs referencing report_instance_data.sh
from the target user’s crontab. Before modifying the crontab, a backup is created in:
/p4/<instance>/tmp/crontab_backup_<user>_<timestamp>.bak
.push_metrics.cfg
ConfigurationUnless skipped with the -m
flag, the installer creates or updates the .push_metrics.cfg
file using default values or user input. To manually edit the file after installation, run:
nano /p4/common/config/.push_metrics.cfg
If command-runner
does not run as expected, try the following steps:
Check systemd logs:
journalctl -u command-runner.service --no-pager --reverse
Verify binary installation:
ls -l /p4/common/site/bin/command-runner
Manually run the binary:
/p4/common/site/bin/command-runner --version
Review the installer log: Check /tmp/cmd-runner_installer.log
for detailed output.
A separate self‑update script (self_update.sh
) is provided to download a new release and spawn the installer. The self‑update script performs the following tasks:
-y
to apply changes..push_metrics.cfg
using the -m
flag.
- Installer and Configuration Guide body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px; } pre { background: #f4f4f4; padding: 10px; border: 1px solid #ddd; } code { background: #f4f4f4; padding: 2px 4px; border-radius: 3px; } table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ddd; padding: 8px; } th { background-color: #f4f4f4; } blockquote { border-left: 4px solid #ccc; margin: 1em 0; padding-left: 1em; color: #555; }
- Installer and Configuration Guide
- =================================
- > **Note:** This guide is for environments running the **Helix Remote Admin (HRA)** version of Command‑Runner. For other environments, please confirm with your administrator.
- Overview
- --------
- This guide explains how to install and configure the **command‑runner** utility using the updated `install_command-runner.sh` script. The installer will:
- * Install the new binary.
- * Set up a systemd service and timer (replacing legacy cron jobs).
- * Adjust SELinux contexts (if applicable).
- * Create or update the `.push_metrics.cfg` file (unless skipped with the `-m` flag).
- * Back up existing installations and configurations.
- The installer also supports various options (e.g. test mode, forced installation) so that you can customize the process to your environment.
- Prerequisites
- -------------
- Before running the installer, ensure that:
- * You have **root** or **sudo** access.
- * The **command‑runner** binary (`command-runner-linux-amd64`) and (optionally) `cmd_config.yaml` are in the **current directory**.
- * For SELinux environments, required utilities (`semanage` and `restorecon`) are installed.
- * The installer creates backups of any overwritten files or cron jobs (e.g. in `/p4/<instance>/tmp/`).
- Installation
- ------------
- ### Basic Usage / Quickstart
- Download latest release
- wget https://swarm.workshop.perforce.com/downloads/guest/perforce_software/command-runner/packages/command-runner-linux-amd64.tar.gz
- Decompress tar ball
- tar -zvxf command-runner-linux-amd64.tar.gz
- cd command-runner
- By default, the installer runs in **dry‑run mode** (printing actions without making changes). To run in dry‑run mode:
- sudo ./install_command-runner.sh
- To really install, use the `-y` to continue in interactive mode flag:
- sudo ./install_command-runner.sh -y
- ### Available Options
- Option
- Description
- Default
- `-d PATH`
- Destination path for the `command-runner` binary.
- `/p4/common/site/bin/command-runner`
- `-c DIR`
- Directory for `cmd_config.yaml`.
- `/p4/common/config`
- `-p FILE`
- Path for `.push_metrics.cfg`.
- `/p4/common/config/.push_metrics.cfg`
- `-u OWNER`
- User:Group ownership for files.
- `perforce:perforce`
- `-i INSTANCE`
- Instance name (auto‑detects if omitted).
- Auto‑detect
- `-y`
- Apply changes (disable dry‑run).
- `-f`
- Force re‑installation even if the versions match.
- ### Example Installations
- #### Standard Installation (Dry‑Run by Default)
- sudo ./install_command-runner.sh
- #### Full Installation
- sudo ./install_command-runner.sh -y
- #### Specify a Custom User and Instance
- sudo ./install_command-runner.sh -y -u myuser:mygroup -i prod
- #### Skip `.push_metrics.cfg` Update
- sudo ./install_command-runner.sh -y -m
- Systemd Service & Timer
- -----------------------
- The installer sets up a systemd **service** and **timer** that replace legacy cron jobs. They are installed as follows:
- * **Service:** `/etc/systemd/system/command-runner.service` – Executes the `command-runner` binary on demand.
- * **Timer:** `/etc/systemd/system/command-runner.timer` – Controls when the service runs.
- #### Managing the Service/Timer
- * **Check status:** `systemctl status command-runner.timer`
- * **Enable and start the timer:** `systemctl enable --now command-runner.timer`
- * **Disable and stop the timer:** `systemctl disable --now command-runner.timer`
- * **Manually trigger the service:** `systemctl start command-runner.service`
- Legacy Cron Job Removal
- -----------------------
- The installer automatically removes outdated cron jobs referencing `report_instance_data.sh` from the target user’s crontab. Before modifying the crontab, a backup is created in:
- /p4/<instance>/tmp/crontab_backup_<user>_<timestamp>.bak
- `.push_metrics.cfg` Configuration
- ---------------------------------
- Unless skipped with the `-m` flag, the installer creates or updates the `.push_metrics.cfg` file using default values or user input. To manually edit the file after installation, run:
- nano /p4/common/config/.push_metrics.cfg
- Troubleshooting
- ---------------
- If `command-runner` does not run as expected, try the following steps:
- 1. **Check systemd logs:**
- journalctl -u command-runner.service --no-pager --reverse
- 2. **Verify binary installation:**
- ls -l /p4/common/site/bin/command-runner
- 3. **Manually run the binary:**
- /p4/common/site/bin/command-runner --version
- 4. **Review the installer log:** Check `/tmp/cmd-runner_installer.log` for detailed output.
- Self‑Update
- -----------
- A separate self‑update script (`self_update.sh`) is provided to download a new release and spawn the installer. The self‑update script performs the following tasks:
- * Fetches the latest version number.
- * Downloads and verifies a tarball using a SHA‑256 checksum.
- * Extracts the new version and spawns the installer (with appropriate flags) in a background process.
- * The spawned installer runs as the service owner (as defined in the systemd unit file) so that file ownership and logs are set correctly.
- Summary
- -------
- * **Systemd** replaces legacy cron jobs.
- * The default mode is **dry‑run**; use `-y` to apply changes.
- * The installer auto‑detects instances but also allows manual selection.
- * **Backups** are created before any files or configurations are overwritten.
- * The installer supports an optional **test mode**.
- * You can skip updating `.push_metrics.cfg` using the `-m` flag.
- * The **self‑update** mechanism uses HTTPS and verifies checksums to ensure integrity.
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 31315 | Will Kreitzmann |
v1.2.654. - release |
about a month ago | |
#1 | 31277 | Will Kreitzmann | Base min | 2 months ago |